4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * aclui.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW API for MS-Windows 3.10 * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: module win32.aclui; 4e2933c620 2015-04-21 kinaba: pragma(lib, "aclui.lib"); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: private import win32.w32api; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static assert (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500, 4e2933c620 2015-04-21 kinaba: "win32.aclui is available only if version WindowsXP, Windows2003 " 4e2933c620 2015-04-21 kinaba: "or WindowsVista is set, or both Windows2000 and WindowsNTonly are set"); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: import win32.accctrl, win32.commctrl, win32.objbase; 4e2933c620 2015-04-21 kinaba: private import win32.basetyps, win32.prsht, win32.unknwn, win32.windef, 4e2933c620 2015-04-21 kinaba: win32.winuser; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SI_OBJECT_INFO { 4e2933c620 2015-04-21 kinaba: DWORD dwFlags; 4e2933c620 2015-04-21 kinaba: HINSTANCE hInstance; 4e2933c620 2015-04-21 kinaba: LPWSTR pszServerName; 4e2933c620 2015-04-21 kinaba: LPWSTR pszObjectName; 4e2933c620 2015-04-21 kinaba: LPWSTR pszPageTitle; 4e2933c620 2015-04-21 kinaba: GUID guidObjectType; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SI_OBJECT_INFO* PSI_OBJECT_INFO; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // values for SI_OBJECT_INFO.dwFlags 4e2933c620 2015-04-21 kinaba: const DWORD 4e2933c620 2015-04-21 kinaba: SI_EDIT_PERMS = 0x00000000, 4e2933c620 2015-04-21 kinaba: SI_EDIT_OWNER = 0x00000001, 4e2933c620 2015-04-21 kinaba: SI_EDIT_AUDITS = 0x00000002, 4e2933c620 2015-04-21 kinaba: SI_CONTAINER = 0x00000004, 4e2933c620 2015-04-21 kinaba: SI_READONLY = 0x00000008, 4e2933c620 2015-04-21 kinaba: SI_ADVANCED = 0x00000010, 4e2933c620 2015-04-21 kinaba: SI_RESET = 0x00000020, 4e2933c620 2015-04-21 kinaba: SI_OWNER_READONLY = 0x00000040, 4e2933c620 2015-04-21 kinaba: SI_EDIT_PROPERTIES = 0x00000080, 4e2933c620 2015-04-21 kinaba: SI_OWNER_RECURSE = 0x00000100, 4e2933c620 2015-04-21 kinaba: SI_NO_ACL_PROTECT = 0x00000200, 4e2933c620 2015-04-21 kinaba: SI_NO_TREE_APPLY = 0x00000400, 4e2933c620 2015-04-21 kinaba: SI_PAGE_TITLE = 0x00000800, 4e2933c620 2015-04-21 kinaba: SI_SERVER_IS_DC = 0x00001000, 4e2933c620 2015-04-21 kinaba: SI_RESET_DACL_TREE = 0x00004000, 4e2933c620 2015-04-21 kinaba: SI_RESET_SACL_TREE = 0x00008000, 4e2933c620 2015-04-21 kinaba: SI_OBJECT_GUID = 0x00010000, 4e2933c620 2015-04-21 kinaba: SI_EDIT_EFFECTIVE = 0x00020000, 4e2933c620 2015-04-21 kinaba: SI_RESET_DACL = 0x00040000, 4e2933c620 2015-04-21 kinaba: SI_RESET_SACL = 0x00080000, 4e2933c620 2015-04-21 kinaba: SI_RESET_OWNER = 0x00100000, 4e2933c620 2015-04-21 kinaba: SI_NO_ADDITIONAL_PERMISSION = 0x00200000, 4e2933c620 2015-04-21 kinaba: SI_MAY_WRITE = 0x10000000, 4e2933c620 2015-04-21 kinaba: SI_EDIT_ALL = SI_EDIT_PERMS | SI_EDIT_OWNER 4e2933c620 2015-04-21 kinaba: | SI_EDIT_AUDITS; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SI_ACCESS { 4e2933c620 2015-04-21 kinaba: CPtr!(GUID) pguid; 4e2933c620 2015-04-21 kinaba: ACCESS_MASK mask; 4e2933c620 2015-04-21 kinaba: LPCWSTR pszName; 4e2933c620 2015-04-21 kinaba: DWORD dwFlags; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SI_ACCESS* PSI_ACCESS; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // values for SI_ACCESS.dwFlags 4e2933c620 2015-04-21 kinaba: const DWORD 4e2933c620 2015-04-21 kinaba: SI_ACCESS_SPECIFIC = 0x00010000, 4e2933c620 2015-04-21 kinaba: SI_ACCESS_GENERAL = 0x00020000, 4e2933c620 2015-04-21 kinaba: SI_ACCESS_CONTAINER = 0x00040000, 4e2933c620 2015-04-21 kinaba: SI_ACCESS_PROPERTY = 0x00080000; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SI_INHERIT_TYPE { 4e2933c620 2015-04-21 kinaba: CPtr!(GUID) pguid; 4e2933c620 2015-04-21 kinaba: ULONG dwFlags; 4e2933c620 2015-04-21 kinaba: LPCWSTR pszName; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* values for SI_INHERIT_TYPE.dwFlags 4e2933c620 2015-04-21 kinaba: INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE 4e2933c620 2015-04-21 kinaba: defined elsewhere */ 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum SI_PAGE_TYPE { 4e2933c620 2015-04-21 kinaba: SI_PAGE_PERM, 4e2933c620 2015-04-21 kinaba: SI_PAGE_ADVPERM, 4e2933c620 2015-04-21 kinaba: SI_PAGE_AUDIT, 4e2933c620 2015-04-21 kinaba: SI_PAGE_OWNER 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const uint PSPCB_SI_INITDIALOG = WM_USER + 1; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: interface ISecurityInformation : IUnknown { 4e2933c620 2015-04-21 kinaba: HRESULT GetObjectInformation(PSI_OBJECT_INFO); 4e2933c620 2015-04-21 kinaba: HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL); 4e2933c620 2015-04-21 kinaba: HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); 4e2933c620 2015-04-21 kinaba: HRESULT GetAccessRights(CPtr!(GUID), DWORD, PSI_ACCESS*, ULONG*, ULONG*); 4e2933c620 2015-04-21 kinaba: HRESULT MapGeneric(CPtr!(GUID), UCHAR*, ACCESS_MASK*); 4e2933c620 2015-04-21 kinaba: HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*); 4e2933c620 2015-04-21 kinaba: HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias ISecurityInformation* LPSECURITYINFO; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Comment from MinGW 4e2933c620 2015-04-21 kinaba: * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // FIXME: linkage attribute? 4e2933c620 2015-04-21 kinaba: extern (C) /+DECLSPEC_IMPORT+/ extern const IID IID_ISecurityInformation; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: extern (Windows) { 4e2933c620 2015-04-21 kinaba: HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi); 4e2933c620 2015-04-21 kinaba: BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi); 4e2933c620 2015-04-21 kinaba: }