windows-nt/Source/XPSP1/NT/shell/osshell/security/aclui/aclpriv.h
2020-09-26 16:20:57 +08:00

179 lines
4.7 KiB
C

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: aclpriv.h
//
//--------------------------------------------------------------------------
#ifndef _ACLUI_
#define _ACLUI_
#ifndef UNICODE
#error "No ANSI support yet"
#endif
// For test building NT4
//#undef _WIN32_WINNT
//#define _WIN32_WINNT 0x0400
//BOOL WINAPI ConvertSidToStringSid(PSID pSid, LPTSTR *ppszStringSid);
extern "C"
{
#include <nt.h> // SE_TAKE_OWNERSHIP_PRIVILEGE, etc
#include <ntrtl.h>
#include <nturtl.h>
#include <seopaque.h> // RtlObjectAceSid, etc.
}
#define INC_OLE2
#include <windows.h>
#include <commctrl.h>
#include "resource.h" // resource ID's
#include "idh.h" // help ID's
#ifndef RC_INVOKED
#include <windowsx.h>
#include <atlconv.h> // ANSI/Unicode conversion support
#include <shlobj.h>
#include <shfusion.h>
#include <accctrl.h>
#include <aclui.h>
#include <comctrlp.h> // DPA/DSA
#if(_WIN32_WINNT >= 0x0500)
#include <objsel.h> // DS Object Picker
#else
typedef IUnknown IDsObjectPicker; // dummy placeholder
#endif
#include <htmlhelp.h>
#include <common.h>
#include "misc.h"
#include "pagebase.h"
#include "chklist.h"
#include "ace.h"
#include "perm.h"
#include "cstrings.h"
#include "sidcache.h"
#include "aclbloat.h"
// These are here for NT4 SP4 builds (comctrlp.h added these for NT5)
#ifndef DA_LAST
#define DA_LAST (0x7FFFFFFF)
#endif
#ifndef DPA_AppendPtr
#define DPA_AppendPtr(hdpa, pitem) DPA_InsertPtr(hdpa, DA_LAST, pitem)
#endif
#ifndef DSA_AppendItem
#define DSA_AppendItem(hdsa, pitem) DSA_InsertItem(hdsa, DA_LAST, pitem)
#endif
extern HINSTANCE hModule;
extern HINSTANCE g_hGetUserLib;
extern UINT UM_SIDLOOKUPCOMPLETE;
extern UINT g_cfDsSelectionList;
extern UINT g_cfSidInfoList;
// Magic debug flags
#define TRACE_PERMPAGE 0x00000001
#define TRACE_PRINCIPAL 0x00000002
#define TRACE_SI 0x00000004
#define TRACE_PERMSET 0x00000008
#define TRACE_ACELIST 0x00000010
#define TRACE_ACEEDIT 0x00000020
#define TRACE_OWNER 0x00000040
#define TRACE_MISC 0x00000080
#define TRACE_CHECKLIST 0x00000100
#define TRACE_SIDCACHE 0x00000200
#define TRACE_EFFPERM 0x00000400
#define TRACE_ACLBLOAT 0x00000800
#define TRACE_ALWAYS 0xffffffff // use with caution
#define MAX_COLUMN_CHARS 100
#define COLUMN_ALLOW 1
#define COLUMN_DENY 2
#define ACE_INHERIT_ALL (CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE)
#define SI_ACCESS_CUSTOM 0x10000000 //This flag is used is SI_ACCESS to indicate
//Custom checkbox which comes in first screen for
//custom permission
#define ACL_BLOAT_LIMIT 8
BOOL
ACLUIAPI
EditSecurityEx(HWND hwndOwner,
LPSECURITYINFO psi,
PPERMPAGE pPermPage,
UINT nStartPage);
BOOL
EditACEEntry(HWND hwndOwner,
LPSECURITYINFO psi,
PACE pAce,
SI_PAGE_TYPE siType,
LPCTSTR pszObjectName,
BOOL bReadOnly,
DWORD *pdwResult,
HDPA *phEntries,
HDPA *phPropertyEntries,
UINT nStartPage = 0);
// EditACEEntry result values. Set if something was edited on the
// corresponding page, otherwise clear.
#define EAE_NEW_OBJECT_ACE 0x0001
#define EAE_NEW_PROPERTY_ACE 0x0002
LPARAM
GetSelectedItemData(HWND hList, int *pIndex);
int
ConfirmAclProtect(HWND hwndParent, BOOL bDacl);
HPROPSHEETPAGE
CreateOwnerPage(LPSECURITYINFO psi, SI_OBJECT_INFO *psiObjectInfo);
HPROPSHEETPAGE
CreateEffectivePermPage(LPSECURITYINFO psi,SI_OBJECT_INFO *psiObjectInfo);
STDMETHODIMP
_InitCheckList(HWND hwndList,
LPSECURITYINFO psi,
const GUID * pguidObjectType,
DWORD dwFlags,
HINSTANCE hInstance,
DWORD dwType,
PSI_ACCESS * ppDefaultAccess);
void
HandleListClick(PNM_CHECKLIST pnmc,
SI_PAGE_TYPE siType,
BOOL bContainerFlags,
HDSA * phAllowUncheckedAccess= NULL,
HDSA * phDenyUncheckedAccess= NULL,
BOOL bCustomPresent = FALSE);
UINT
GetAcesFromCheckList(HWND hChkList,
PSID pSid,
BOOL fPerm,
BOOL fAceFlagsProvided,
UCHAR uAceFlagsNew,
const GUID *pInheritGUID,
HDPA hEntries);
typedef struct _col_for_listview
{
UINT idText; // Resource Id for column name
UINT iPercent; // Percent of width
} COL_FOR_LV;
#endif // RC_INVOKED
#endif // _ACLUI_