OSDN Git Service

Prepare environment for Earnie's tools.
[mingw/mingw-org-wsl.git] / w32api / include / accctrl.h
1 #ifndef _ACCCTRL_H
2 #define _ACCCTRL_H
3 #if __GNUC__ >=3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 #define AccFree LocalFree
12 #define ACTRL_RESERVED            0x00000000
13 #define ACTRL_ACCESS_PROTECTED    0x00000001
14 #define ACTRL_ACCESS_ALLOWED      0x00000001
15 #define ACTRL_ACCESS_DENIED       0x00000002
16 #define ACTRL_AUDIT_SUCCESS       0x00000004
17 #define ACTRL_AUDIT_FAILURE       0x00000008
18 #define ACTRL_SYSTEM_ACCESS       0x04000000
19 #define ACTRL_DELETE              0x08000000
20 #define ACTRL_READ_CONTROL        0x10000000
21 #define ACTRL_CHANGE_ACCESS       0x20000000
22 #define ACTRL_CHANGE_OWNER        0x40000000
23 #define ACTRL_SYNCHRONIZE         0x80000000
24 #define ACTRL_STD_RIGHTS_ALL      0xf8000000
25
26 #define ACTRL_FILE_READ           0x00000001
27 #define ACTRL_FILE_WRITE          0x00000002
28 #define ACTRL_FILE_APPEND         0x00000004
29 #define ACTRL_FILE_READ_PROP      0x00000008
30 #define ACTRL_FILE_WRITE_PROP     0x00000010
31 #define ACTRL_FILE_EXECUTE        0x00000020
32 #define ACTRL_FILE_READ_ATTRIB    0x00000080
33 #define ACTRL_FILE_WRITE_ATTRIB   0x00000100
34 #define ACTRL_FILE_CREATE_PIPE    0x00000200
35 #define ACTRL_DIR_LIST            0x00000001
36 #define ACTRL_DIR_CREATE_OBJECT   0x00000002
37 #define ACTRL_DIR_CREATE_CHILD    0x00000004
38 #define ACTRL_DIR_DELETE_CHILD    0x00000040
39 #define ACTRL_DIR_TRAVERSE        0x00000020
40 #define ACTRL_KERNEL_TERMINATE    0x00000001
41 #define ACTRL_KERNEL_THREAD       0x00000002
42 #define ACTRL_KERNEL_VM           0x00000004
43 #define ACTRL_KERNEL_VM_READ      0x00000008
44 #define ACTRL_KERNEL_VM_WRITE     0x00000010
45 #define ACTRL_KERNEL_DUP_HANDLE   0x00000020
46 #define ACTRL_KERNEL_PROCESS      0x00000040
47 #define ACTRL_KERNEL_SET_INFO     0x00000080
48 #define ACTRL_KERNEL_GET_INFO     0x00000100
49 #define ACTRL_KERNEL_CONTROL      0x00000200
50 #define ACTRL_KERNEL_ALERT        0x00000400
51 #define ACTRL_KERNEL_GET_CONTEXT  0x00000800
52 #define ACTRL_KERNEL_SET_CONTEXT  0x00001000
53 #define ACTRL_KERNEL_TOKEN        0x00002000
54 #define ACTRL_KERNEL_IMPERSONATE  0x00004000
55 #define ACTRL_KERNEL_DIMPERSONATE 0x00008000
56 #define ACTRL_PRINT_SADMIN        0x00000001
57 #define ACTRL_PRINT_SLIST         0x00000002
58 #define ACTRL_PRINT_PADMIN        0x00000004
59 #define ACTRL_PRINT_PUSE          0x00000008
60 #define ACTRL_PRINT_JADMIN        0x00000010
61 #define ACTRL_SVC_GET_INFO        0x00000001
62 #define ACTRL_SVC_SET_INFO        0x00000002
63 #define ACTRL_SVC_STATUS          0x00000004
64 #define ACTRL_SVC_LIST            0x00000008
65 #define ACTRL_SVC_START           0x00000010
66 #define ACTRL_SVC_STOP            0x00000020
67 #define ACTRL_SVC_PAUSE           0x00000040
68 #define ACTRL_SVC_INTERROGATE     0x00000080
69 #define ACTRL_SVC_UCONTROL        0x00000100
70 #define ACTRL_REG_QUERY           0x00000001
71 #define ACTRL_REG_SET             0x00000002
72 #define ACTRL_REG_CREATE_CHILD    0x00000004
73 #define ACTRL_REG_LIST            0x00000008
74 #define ACTRL_REG_NOTIFY          0x00000010
75 #define ACTRL_REG_LINK            0x00000020
76 #define ACTRL_WIN_CLIPBRD         0x00000001
77 #define ACTRL_WIN_GLOBAL_ATOMS    0x00000002
78 #define ACTRL_WIN_CREATE          0x00000004
79 #define ACTRL_WIN_LIST_DESK       0x00000008
80 #define ACTRL_WIN_LIST            0x00000010
81 #define ACTRL_WIN_READ_ATTRIBS    0x00000020
82 #define ACTRL_WIN_WRITE_ATTRIBS   0x00000040
83 #define ACTRL_WIN_SCREEN          0x00000080
84 #define ACTRL_WIN_EXIT            0x00000100
85 #define ACTRL_ACCESS_NO_OPTIONS                 0x00000000
86 #define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES    0x00000001
87 #define ACCCTRL_DEFAULT_PROVIDERA   "Windows NT Access Provider"
88 #define ACCCTRL_DEFAULT_PROVIDERW  L"Windows NT Access Provider"
89 #define TRUSTEE_ACCESS_ALLOWED    0x00000001L
90 #define TRUSTEE_ACCESS_READ       0x00000002L
91 #define TRUSTEE_ACCESS_WRITE      0x00000004L
92 #define TRUSTEE_ACCESS_EXPLICIT   0x00000001L
93 #define TRUSTEE_ACCESS_READ_WRITE   (TRUSTEE_ACCESS_READ | TRUSTEE_ACCESS_WRITE)
94 #define TRUSTEE_ACCESS_ALL        0xFFFFFFFFL
95 #define NO_INHERITANCE            0x0
96 #define SUB_OBJECTS_ONLY_INHERIT  0x1
97 #define SUB_CONTAINERS_ONLY_INHERIT 0x2
98 #define SUB_CONTAINERS_AND_OBJECTS_INHERIT  0x3
99 #define INHERIT_NO_PROPAGATE      0x4
100 #define INHERIT_ONLY              0x8
101 #define INHERITED_ACCESS_ENTRY    0x10
102 #define INHERITED_PARENT          0x10000000
103 #define INHERITED_GRANDPARENT     0x20000000
104
105 typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
106 typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
107
108 typedef enum _ACCESS_MODE {
109         NOT_USED_ACCESS = 0,
110         GRANT_ACCESS,
111         SET_ACCESS,
112         DENY_ACCESS,
113         REVOKE_ACCESS,
114         SET_AUDIT_SUCCESS,
115         SET_AUDIT_FAILURE
116 } ACCESS_MODE;
117 typedef enum _SE_OBJECT_TYPE {
118         SE_UNKNOWN_OBJECT_TYPE = 0,
119         SE_FILE_OBJECT,
120         SE_SERVICE,
121         SE_PRINTER,
122         SE_REGISTRY_KEY,
123         SE_LMSHARE,
124         SE_KERNEL_OBJECT,
125         SE_WINDOW_OBJECT,
126         SE_DS_OBJECT,
127         SE_DS_OBJECT_ALL,
128         SE_PROVIDER_DEFINED_OBJECT,
129         SE_WMIGUID_OBJECT,
130         SE_REGISTRY_WOW64_32KEY
131 } SE_OBJECT_TYPE;
132 typedef enum _TRUSTEE_TYPE {
133         TRUSTEE_IS_UNKNOWN,
134         TRUSTEE_IS_USER,
135         TRUSTEE_IS_GROUP,
136         TRUSTEE_IS_DOMAIN,
137         TRUSTEE_IS_ALIAS,
138         TRUSTEE_IS_WELL_KNOWN_GROUP,
139         TRUSTEE_IS_DELETED,
140         TRUSTEE_IS_INVALID,
141         TRUSTEE_IS_COMPUTER
142 } TRUSTEE_TYPE;
143 typedef enum _TRUSTEE_FORM {
144         TRUSTEE_IS_SID,
145         TRUSTEE_IS_NAME,
146         TRUSTEE_BAD_FORM,
147         TRUSTEE_IS_OBJECTS_AND_SID,
148         TRUSTEE_IS_OBJECTS_AND_NAME
149 } TRUSTEE_FORM;
150 typedef enum _MULTIPLE_TRUSTEE_OPERATION {
151         NO_MULTIPLE_TRUSTEE,
152         TRUSTEE_IS_IMPERSONATE
153 } MULTIPLE_TRUSTEE_OPERATION;
154 typedef struct _TRUSTEE_A {
155         struct _TRUSTEE_A          *pMultipleTrustee;
156         MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
157         TRUSTEE_FORM                TrusteeForm;
158         TRUSTEE_TYPE                TrusteeType;
159         LPSTR                       ptstrName;
160 } TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
161 typedef struct _TRUSTEE_W {
162         struct _TRUSTEE_W          *pMultipleTrustee;
163         MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
164         TRUSTEE_FORM                TrusteeForm;
165         TRUSTEE_TYPE                TrusteeType;
166         LPWSTR                      ptstrName;
167 } TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
168 typedef struct _ACTRL_ACCESS_ENTRYA {
169         TRUSTEE_A       Trustee;
170         ULONG           fAccessFlags;
171         ACCESS_RIGHTS   Access;
172         ACCESS_RIGHTS   ProvSpecificAccess;
173         INHERIT_FLAGS   Inheritance;
174         LPCSTR          lpInheritProperty;
175 } ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
176 typedef struct _ACTRL_ACCESS_ENTRYW {
177         TRUSTEE_W       Trustee;
178         ULONG           fAccessFlags;
179         ACCESS_RIGHTS   Access;
180         ACCESS_RIGHTS   ProvSpecificAccess;
181         INHERIT_FLAGS   Inheritance;
182         LPCWSTR         lpInheritProperty;
183 } ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
184 typedef struct _ACTRL_ACCESS_ENTRY_LISTA {
185         ULONG                  cEntries;
186         ACTRL_ACCESS_ENTRYA    *pAccessList;
187 } ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
188 typedef struct _ACTRL_ACCESS_ENTRY_LISTW {
189         ULONG                  cEntries;
190         ACTRL_ACCESS_ENTRYW    *pAccessList;
191 } ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
192 typedef struct _ACTRL_PROPERTY_ENTRYA {
193         LPCSTR                      lpProperty;
194         PACTRL_ACCESS_ENTRY_LISTA   pAccessEntryList;
195         ULONG                       fListFlags;
196 } ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
197 typedef struct _ACTRL_PROPERTY_ENTRYW {
198         LPCWSTR                     lpProperty;
199         PACTRL_ACCESS_ENTRY_LISTW   pAccessEntryList;
200         ULONG                       fListFlags;
201 } ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
202 typedef struct _ACTRL_ALISTA {
203         ULONG                       cEntries;
204         PACTRL_PROPERTY_ENTRYA      pPropertyAccessList;
205 } ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
206 typedef struct _ACTRL_ALISTW {
207         ULONG                       cEntries;
208         PACTRL_PROPERTY_ENTRYW      pPropertyAccessList;
209 } ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
210 typedef struct _TRUSTEE_ACCESSA {
211         LPSTR           lpProperty;
212         ACCESS_RIGHTS   Access;
213         ULONG           fAccessFlags;
214         ULONG           fReturnedAccess;
215 } TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
216 typedef struct _TRUSTEE_ACCESSW {
217         LPWSTR          lpProperty;
218         ACCESS_RIGHTS   Access;
219         ULONG           fAccessFlags;
220         ULONG           fReturnedAccess;
221 } TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
222 typedef struct _ACTRL_OVERLAPPED {
223         _ANONYMOUS_UNION
224         union {
225             PVOID Provider;
226             ULONG Reserved1;
227         } DUMMYUNIONNAME;
228         ULONG       Reserved2;
229         HANDLE      hEvent;
230 } ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
231 typedef struct _ACTRL_ACCESS_INFOA {
232         ULONG       fAccessPermission;
233         LPSTR       lpAccessPermissionName;
234 } ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
235 typedef struct _ACTRL_ACCESS_INFOW {
236         ULONG       fAccessPermission;
237         LPWSTR      lpAccessPermissionName;
238 } ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
239 typedef struct _ACTRL_CONTROL_INFOA {
240         LPSTR       lpControlId;
241         LPSTR       lpControlName;
242 } ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA;
243 typedef struct _ACTRL_CONTROL_INFOW {
244         LPWSTR      lpControlId;
245         LPWSTR      lpControlName;
246 } ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW;
247 typedef struct _EXPLICIT_ACCESS_A {
248         DWORD        grfAccessPermissions;
249         ACCESS_MODE  grfAccessMode;
250         DWORD        grfInheritance;
251         TRUSTEE_A    Trustee;
252 } EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
253 typedef struct _EXPLICIT_ACCESS_W {
254         DWORD        grfAccessPermissions;
255         ACCESS_MODE  grfAccessMode;
256         DWORD        grfInheritance;
257         TRUSTEE_W    Trustee;
258 } EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
259 typedef struct _OBJECTS_AND_SID {
260         DWORD   ObjectsPresent;
261         GUID    ObjectTypeGuid;
262         GUID    InheritedObjectTypeGuid;
263         SID     * pSid;
264 } OBJECTS_AND_SID, *POBJECTS_AND_SID;
265 typedef struct _OBJECTS_AND_NAME_A {
266         DWORD    ObjectsPresent;
267         SE_OBJECT_TYPE ObjectType;
268         LPSTR    ObjectTypeName;
269         LPSTR    InheritedObjectTypeName;
270         LPSTR    ptstrName;
271 } OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A;
272 typedef struct _OBJECTS_AND_NAME_W {
273         DWORD          ObjectsPresent;
274         SE_OBJECT_TYPE ObjectType;
275         LPWSTR   ObjectTypeName;
276         LPWSTR   InheritedObjectTypeName;
277         LPWSTR   ptstrName;
278 } OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;
279 #if (_WIN32_WINNT >= 0x0501)
280 typedef struct {
281         LONG     GenerationGap;
282         LPSTR    AncestorName;
283 } INHERITED_FROMA, *PINHERITED_FROMA;
284 typedef struct {
285         LONG     GenerationGap;
286         LPWSTR   AncestorName;
287 } INHERITED_FROMW, *PINHERITED_FROMW;
288 #endif /* (_WIN32_WINNT >= 0x0501) */
289
290 #ifdef UNICODE
291 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW
292 typedef TRUSTEE_W TRUSTEE_, *PTRUSTEE_;
293 typedef TRUSTEEW TRUSTEE, *PTRUSTEE;
294 typedef ACTRL_ACCESSW ACTRL_ACCESS, *PACTRL_ACCESS;
295 typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
296 typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
297 typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
298 typedef ACTRL_AUDITW ACTRL_AUDIT, *PACTRL_AUDIT;
299 typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
300 typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
301 typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
302 typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
303 typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
304 #if (_WIN32_WINNT >= 0x0501)
305 typedef INHERITED_FROMW INHERITED_FROM, *PINHERITED_FROM;
306 #endif
307 #else
308 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA
309 typedef TRUSTEE_A TRUSTEE_, *PTRUSTEE_;
310 typedef TRUSTEEA TRUSTEE, *PTRUSTEE;
311 typedef ACTRL_ACCESSA ACTRL_ACCESS, *PACTRL_ACCESS;
312 typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
313 typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
314 typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
315 typedef ACTRL_AUDITA ACTRL_AUDIT, *PACTRL_AUDIT;
316 typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
317 typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
318 typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
319 typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
320 typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
321 #if (_WIN32_WINNT >= 0x0501)
322 typedef INHERITED_FROMA INHERITED_FROM, *PINHERITED_FROM;
323 #endif
324 #endif /* UNICODE */
325
326 #ifdef __cplusplus
327 }
328 #endif
329 #endif