finish header restructuring
[reactos.git] / reactos / 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 #define SI_EDIT_PERMS 0x00000000
106 #define SI_EDIT_OWNER 0x00000001
107 #define SI_EDIT_AUDITS 0x00000002
108 #define SI_CONTAINER 0x00000004
109 #define SI_READONLY 0x00000008
110 #define SI_ADVANCED 0x00000010
111 #define SI_RESET 0x00000020
112 #define SI_OWNER_READONLY 0x00000040
113 #define SI_EDIT_PROPERTIES 0x00000080
114 #define SI_OWNER_RECURSE 0x00000100
115 #define SI_NO_ACL_PROTECT 0x00000200
116 #define SI_NO_TREE_APPLY 0x00000400
117 #define SI_PAGE_TITLE 0x00000800
118 #define SI_SERVER_IS_DC 0x00001000
119 #define SI_RESET_DACL_TREE 0x00004000
120 #define SI_RESET_SACL_TREE 0x00008000
121 #define SI_OBJECT_GUID 0x00010000
122 #define SI_EDIT_EFFECTIVE 0x00020000
123 #define SI_RESET_DACL 0x00040000
124 #define SI_RESET_SACL 0x00080000
125 #define SI_RESET_OWNER 0x00100000
126 #define SI_NO_ADDITIONAL_PERMISSION 0x00200000
127 #define SI_MAY_WRITE 0x10000000
128 #define SI_EDIT_ALL (SI_EDIT_OWNER |SI_EDIT_PERMS | SI_EDIT_AUDITS)
129
130 #define SI_ACCESS_SPECIFIC 0x00010000
131 #define SI_ACCESS_GENERAL 0x00020000
132 #define SI_ACCESS_CONTAINER 0x00040000
133 #define SI_ACCESS_PROPERTY 0x00080000
134
135 typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
136 typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
137
138 typedef enum _ACCESS_MODE {
139 NOT_USED_ACCESS = 0,
140 GRANT_ACCESS,
141 SET_ACCESS,
142 DENY_ACCESS,
143 REVOKE_ACCESS,
144 SET_AUDIT_SUCCESS,
145 SET_AUDIT_FAILURE
146 } ACCESS_MODE;
147 typedef enum _SE_OBJECT_TYPE {
148 SE_UNKNOWN_OBJECT_TYPE = 0,
149 SE_FILE_OBJECT,
150 SE_SERVICE,
151 SE_PRINTER,
152 SE_REGISTRY_KEY,
153 SE_LMSHARE,
154 SE_KERNEL_OBJECT,
155 SE_WINDOW_OBJECT,
156 SE_DS_OBJECT,
157 SE_DS_OBJECT_ALL,
158 SE_PROVIDER_DEFINED_OBJECT,
159 SE_WMIGUID_OBJECT,
160 SE_REGISTRY_WOW64_32KEY
161 } SE_OBJECT_TYPE;
162 typedef enum _TRUSTEE_TYPE {
163 TRUSTEE_IS_UNKNOWN,
164 TRUSTEE_IS_USER,
165 TRUSTEE_IS_GROUP,
166 TRUSTEE_IS_DOMAIN,
167 TRUSTEE_IS_ALIAS,
168 TRUSTEE_IS_WELL_KNOWN_GROUP,
169 TRUSTEE_IS_DELETED,
170 TRUSTEE_IS_INVALID,
171 TRUSTEE_IS_COMPUTER
172 } TRUSTEE_TYPE;
173 typedef enum _TRUSTEE_FORM {
174 TRUSTEE_IS_SID,
175 TRUSTEE_IS_NAME,
176 TRUSTEE_BAD_FORM,
177 TRUSTEE_IS_OBJECTS_AND_SID,
178 TRUSTEE_IS_OBJECTS_AND_NAME
179 } TRUSTEE_FORM;
180 typedef enum _MULTIPLE_TRUSTEE_OPERATION {
181 NO_MULTIPLE_TRUSTEE,
182 TRUSTEE_IS_IMPERSONATE
183 } MULTIPLE_TRUSTEE_OPERATION;
184 typedef struct _TRUSTEE_A {
185 struct _TRUSTEE_A *pMultipleTrustee;
186 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
187 TRUSTEE_FORM TrusteeForm;
188 TRUSTEE_TYPE TrusteeType;
189 LPSTR ptstrName;
190 } TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
191 typedef struct _TRUSTEE_W {
192 struct _TRUSTEE_W *pMultipleTrustee;
193 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
194 TRUSTEE_FORM TrusteeForm;
195 TRUSTEE_TYPE TrusteeType;
196 LPWSTR ptstrName;
197 } TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
198 typedef struct _ACTRL_ACCESS_ENTRYA {
199 TRUSTEE_A Trustee;
200 ULONG fAccessFlags;
201 ACCESS_RIGHTS Access;
202 ACCESS_RIGHTS ProvSpecificAccess;
203 INHERIT_FLAGS Inheritance;
204 LPCSTR lpInheritProperty;
205 } ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
206 typedef struct _ACTRL_ACCESS_ENTRYW {
207 TRUSTEE_W Trustee;
208 ULONG fAccessFlags;
209 ACCESS_RIGHTS Access;
210 ACCESS_RIGHTS ProvSpecificAccess;
211 INHERIT_FLAGS Inheritance;
212 LPCWSTR lpInheritProperty;
213 } ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
214 typedef struct _ACTRL_ACCESS_ENTRY_LISTA {
215 ULONG cEntries;
216 ACTRL_ACCESS_ENTRYA *pAccessList;
217 } ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
218 typedef struct _ACTRL_ACCESS_ENTRY_LISTW {
219 ULONG cEntries;
220 ACTRL_ACCESS_ENTRYW *pAccessList;
221 } ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
222 typedef struct _ACTRL_PROPERTY_ENTRYA {
223 LPCSTR lpProperty;
224 PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList;
225 ULONG fListFlags;
226 } ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
227 typedef struct _ACTRL_PROPERTY_ENTRYW {
228 LPCWSTR lpProperty;
229 PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList;
230 ULONG fListFlags;
231 } ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
232 typedef struct _ACTRL_ALISTA {
233 ULONG cEntries;
234 PACTRL_PROPERTY_ENTRYA pPropertyAccessList;
235 } ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
236 typedef struct _ACTRL_ALISTW {
237 ULONG cEntries;
238 PACTRL_PROPERTY_ENTRYW pPropertyAccessList;
239 } ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
240 typedef struct _TRUSTEE_ACCESSA {
241 LPSTR lpProperty;
242 ACCESS_RIGHTS Access;
243 ULONG fAccessFlags;
244 ULONG fReturnedAccess;
245 } TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
246 typedef struct _TRUSTEE_ACCESSW {
247 LPWSTR lpProperty;
248 ACCESS_RIGHTS Access;
249 ULONG fAccessFlags;
250 ULONG fReturnedAccess;
251 } TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
252 typedef struct _ACTRL_OVERLAPPED {
253 _ANONYMOUS_UNION
254 union {
255 PVOID Provider;
256 ULONG Reserved1;
257 } DUMMYUNIONNAME;
258 ULONG Reserved2;
259 HANDLE hEvent;
260 } ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
261 typedef struct _ACTRL_ACCESS_INFOA {
262 ULONG fAccessPermission;
263 LPSTR lpAccessPermissionName;
264 } ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
265 typedef struct _ACTRL_ACCESS_INFOW {
266 ULONG fAccessPermission;
267 LPWSTR lpAccessPermissionName;
268 } ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
269 typedef struct _ACTRL_CONTROL_INFOA {
270 LPSTR lpControlId;
271 LPSTR lpControlName;
272 } ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA;
273 typedef struct _ACTRL_CONTROL_INFOW {
274 LPWSTR lpControlId;
275 LPWSTR lpControlName;
276 } ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW;
277 typedef struct _EXPLICIT_ACCESS_A {
278 DWORD grfAccessPermissions;
279 ACCESS_MODE grfAccessMode;
280 DWORD grfInheritance;
281 TRUSTEE_A Trustee;
282 } EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
283 typedef struct _EXPLICIT_ACCESS_W {
284 DWORD grfAccessPermissions;
285 ACCESS_MODE grfAccessMode;
286 DWORD grfInheritance;
287 TRUSTEE_W Trustee;
288 } EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
289 typedef struct _OBJECTS_AND_SID {
290 DWORD ObjectsPresent;
291 GUID ObjectTypeGuid;
292 GUID InheritedObjectTypeGuid;
293 SID * pSid;
294 } OBJECTS_AND_SID, *POBJECTS_AND_SID;
295 typedef struct _OBJECTS_AND_NAME_A {
296 DWORD ObjectsPresent;
297 SE_OBJECT_TYPE ObjectType;
298 LPSTR ObjectTypeName;
299 LPSTR InheritedObjectTypeName;
300 LPSTR ptstrName;
301 } OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A;
302 typedef struct _OBJECTS_AND_NAME_W {
303 DWORD ObjectsPresent;
304 SE_OBJECT_TYPE ObjectType;
305 LPWSTR ObjectTypeName;
306 LPWSTR InheritedObjectTypeName;
307 LPWSTR ptstrName;
308 } OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;
309 #if (_WIN32_WINNT >= 0x0501)
310 typedef struct {
311 LONG GenerationGap;
312 LPSTR AncestorName;
313 } INHERITED_FROMA, *PINHERITED_FROMA;
314 typedef struct {
315 LONG GenerationGap;
316 LPWSTR AncestorName;
317 } INHERITED_FROMW, *PINHERITED_FROMW;
318 #endif /* (_WIN32_WINNT >= 0x0501) */
319
320 typedef struct _SI_OBJECT_INFO
321 {
322 DWORD dwFlags;
323 HINSTANCE hInstance;
324 LPWSTR pszServerName;
325 LPWSTR pszObjectName;
326 LPWSTR pszPageTitle;
327 GUID guidObjectType;
328 } SI_OBJECT_INFO, *PSI_OBJECT_INFO;
329 typedef struct _SI_ACCESS
330 {
331 const GUID *pguid;
332 ACCESS_MASK mask;
333 LPCWSTR pszName;
334 DWORD dwFlags;
335 } SI_ACCESS, *PSI_ACCESS;
336 typedef struct _SI_INHERIT_TYPE
337 {
338 const GUID *pguid;
339 ULONG dwFlags;
340 LPCWSTR pszName;
341 } SI_INHERIT_TYPE, *PSI_INHERIT_TYPE;
342 typedef enum _SI_PAGE_TYPE
343 {
344 SI_PAGE_PERM = 0,
345 SI_PAGE_ADVPERM,
346 SI_PAGE_AUDIT,
347 SI_PAGE_OWNER
348 } SI_PAGE_TYPE;
349
350 typedef struct _FN_OBJECT_MGR_FUNCTIONS
351 {
352 ULONG Placeholder;
353 } FN_OBJECT_MGR_FUNCTS, *PFN_OBJECT_MGR_FUNCTS;
354
355 typedef enum _PROG_INVOKE_SETTING
356 {
357 ProgressInvokeNever = 1,
358 ProgressInvokeEveryObject,
359 ProgressInvokeOnError,
360 ProgressCancelOperation,
361 ProgressRetryOperation
362 } PROG_INVOKE_SETTING, *PPROG_INVOKE_SETTING;
363
364 typedef VOID (STDCALL *FN_PROGRESSW)(LPWSTR pObjectName,
365 DWORD Status,
366 PPROG_INVOKE_SETTING pInvokeSetting,
367 PVOID Args,
368 BOOL SecuritySet);
369 typedef VOID (STDCALL *FN_PROGRESSA)(LPSTR pObjectName,
370 DWORD Status,
371 PPROG_INVOKE_SETTING pInvokeSetting,
372 PVOID Args,
373 BOOL SecuritySet);
374
375 #ifdef UNICODE
376 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW
377 typedef TRUSTEE_W TRUSTEE_, *PTRUSTEE_;
378 typedef TRUSTEEW TRUSTEE, *PTRUSTEE;
379 typedef ACTRL_ACCESSW ACTRL_ACCESS, *PACTRL_ACCESS;
380 typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
381 typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
382 typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
383 typedef ACTRL_AUDITW ACTRL_AUDIT, *PACTRL_AUDIT;
384 typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
385 typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
386 typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
387 typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
388 typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
389 #if (_WIN32_WINNT >= 0x0501)
390 typedef INHERITED_FROMW INHERITED_FROM, *PINHERITED_FROM;
391 typedef FN_PROGRESSW FN_PROGRESS;
392 #define HAS_FN_PROGRESSW
393 #endif
394 #else
395 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA
396 typedef TRUSTEE_A TRUSTEE_, *PTRUSTEE_;
397 typedef TRUSTEEA TRUSTEE, *PTRUSTEE;
398 typedef ACTRL_ACCESSA ACTRL_ACCESS, *PACTRL_ACCESS;
399 typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
400 typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
401 typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
402 typedef ACTRL_AUDITA ACTRL_AUDIT, *PACTRL_AUDIT;
403 typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
404 typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
405 typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
406 typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
407 typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
408 #if (_WIN32_WINNT >= 0x0501)
409 typedef INHERITED_FROMA INHERITED_FROM, *PINHERITED_FROM;
410 typedef FN_PROGRESSA FN_PROGRESS;
411 #define HAS_FN_PROGRESSA
412 #endif
413 #endif /* UNICODE */
414
415 #ifdef __cplusplus
416 }
417 #endif
418 #endif