root/trunk/win32/aclui.d

Revision 207, 4.1 kB (checked in by smjg, 1 year ago)

Updated winbase.d to MinGW 3.10; tweaked a few other files

Line 
1 /***********************************************************************\
2 *                                aclui.d                                *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *             Translated from MinGW API for MS-Windows 3.10             *
7 *                           by Stewart Gordon                           *
8 *                                                                       *
9 *                       Placed into public domain                       *
10 \***********************************************************************/
11 module win32.aclui;
12 pragma(lib, "aclui.lib");
13
14 private import win32.w32api;
15
16 static assert (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500,
17     "win32.aclui is available only if version WindowsXP, Windows2003 "
18     "or WindowsVista is set, or both Windows2000 and WindowsNTonly are set");
19
20 import win32.accctrl, win32.commctrl, win32.objbase;
21 private import win32.basetyps, win32.prsht, win32.unknwn, win32.windef,
22   win32.winuser;
23
24
25 struct SI_OBJECT_INFO {
26     DWORD     dwFlags;
27     HINSTANCE hInstance;
28     LPWSTR    pszServerName;
29     LPWSTR    pszObjectName;
30     LPWSTR    pszPageTitle;
31     GUID      guidObjectType;
32 }
33 alias SI_OBJECT_INFO* PSI_OBJECT_INFO;
34
35 // values for SI_OBJECT_INFO.dwFlags
36 const DWORD
37     SI_EDIT_PERMS               = 0x00000000,
38     SI_EDIT_OWNER               = 0x00000001,
39     SI_EDIT_AUDITS              = 0x00000002,
40     SI_CONTAINER                = 0x00000004,
41     SI_READONLY                 = 0x00000008,
42     SI_ADVANCED                 = 0x00000010,
43     SI_RESET                    = 0x00000020,
44     SI_OWNER_READONLY           = 0x00000040,
45     SI_EDIT_PROPERTIES          = 0x00000080,
46     SI_OWNER_RECURSE            = 0x00000100,
47     SI_NO_ACL_PROTECT           = 0x00000200,
48     SI_NO_TREE_APPLY            = 0x00000400,
49     SI_PAGE_TITLE               = 0x00000800,
50     SI_SERVER_IS_DC             = 0x00001000,
51     SI_RESET_DACL_TREE          = 0x00004000,
52     SI_RESET_SACL_TREE          = 0x00008000,
53     SI_OBJECT_GUID              = 0x00010000,
54     SI_EDIT_EFFECTIVE           = 0x00020000,
55     SI_RESET_DACL               = 0x00040000,
56     SI_RESET_SACL               = 0x00080000,
57     SI_RESET_OWNER              = 0x00100000,
58     SI_NO_ADDITIONAL_PERMISSION = 0x00200000,
59     SI_MAY_WRITE                = 0x10000000,
60     SI_EDIT_ALL                 = SI_EDIT_PERMS | SI_EDIT_OWNER
61                                   | SI_EDIT_AUDITS;
62
63 struct SI_ACCESS {
64     GUID*       pguid;
65     ACCESS_MASK mask;
66     LPCWSTR     pszName;
67     DWORD       dwFlags;
68 }
69 alias SI_ACCESS* PSI_ACCESS;
70
71 // values for SI_ACCESS.dwFlags
72 const DWORD
73     SI_ACCESS_SPECIFIC  = 0x00010000,
74     SI_ACCESS_GENERAL   = 0x00020000,
75     SI_ACCESS_CONTAINER = 0x00040000,
76     SI_ACCESS_PROPERTY  = 0x00080000;
77
78
79 struct SI_INHERIT_TYPE {
80     GUID*   pguid;
81     ULONG   dwFlags;
82     LPCWSTR pszName;
83 }
84 alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE;
85
86 /* values for SI_INHERIT_TYPE.dwFlags
87    INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE
88    defined elsewhere */
89
90 enum SI_PAGE_TYPE {
91     SI_PAGE_PERM,
92     SI_PAGE_ADVPERM,
93     SI_PAGE_AUDIT,
94     SI_PAGE_OWNER
95 }
96
97 const uint PSPCB_SI_INITDIALOG = WM_USER + 1;
98
99 interface ISecurityInformation : IUnknown {
100     HRESULT GetObjectInformation(PSI_OBJECT_INFO);
101     HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL);
102     HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR);
103     HRESULT GetAccessRights(GUID*, DWORD, PSI_ACCESS*, ULONG*, ULONG*);
104     HRESULT MapGeneric(GUID*, UCHAR*, ACCESS_MASK*);
105     HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*);
106     HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE);
107 }
108 alias ISecurityInformation* LPSECURITYINFO;
109
110 /* Comment from MinGW
111  * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo
112  */
113
114 // FIXME: linkage attribute?
115 extern (C) /+DECLSPEC_IMPORT+/ extern const IID IID_ISecurityInformation;
116
117 extern (Windows) {
118     HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi);
119     BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi);
120 }
Note: See TracBrowser for help on using the browser.