8 #define AccFree LocalFree
10 #define ACTRL_RESERVED 0x00000000
11 #define ACTRL_ACCESS_PROTECTED 0x00000001
12 #define ACTRL_ACCESS_ALLOWED 0x00000001
13 #define ACTRL_ACCESS_DENIED 0x00000002
14 #define ACTRL_AUDIT_SUCCESS 0x00000004
15 #define ACTRL_AUDIT_FAILURE 0x00000008
16 #define ACTRL_SYSTEM_ACCESS 0x04000000
17 #define ACTRL_DELETE 0x08000000
18 #define ACTRL_READ_CONTROL 0x10000000
19 #define ACTRL_CHANGE_ACCESS 0x20000000
20 #define ACTRL_CHANGE_OWNER 0x40000000
21 #define ACTRL_SYNCHRONIZE 0x80000000
22 #define ACTRL_STD_RIGHTS_ALL 0xf8000000
24 #define ACTRL_FILE_READ 0x00000001
25 #define ACTRL_FILE_WRITE 0x00000002
26 #define ACTRL_FILE_APPEND 0x00000004
27 #define ACTRL_FILE_READ_PROP 0x00000008
28 #define ACTRL_FILE_WRITE_PROP 0x00000010
29 #define ACTRL_FILE_EXECUTE 0x00000020
30 #define ACTRL_FILE_READ_ATTRIB 0x00000080
31 #define ACTRL_FILE_WRITE_ATTRIB 0x00000100
32 #define ACTRL_FILE_CREATE_PIPE 0x00000200
34 #define ACTRL_DIR_LIST 0x00000001
35 #define ACTRL_DIR_CREATE_OBJECT 0x00000002
36 #define ACTRL_DIR_CREATE_CHILD 0x00000004
37 #define ACTRL_DIR_DELETE_CHILD 0x00000040
38 #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
57 #define ACTRL_PRINT_SADMIN 0x00000001
58 #define ACTRL_PRINT_SLIST 0x00000002
59 #define ACTRL_PRINT_PADMIN 0x00000004
60 #define ACTRL_PRINT_PUSE 0x00000008
61 #define ACTRL_PRINT_JADMIN 0x00000010
63 #define ACTRL_SVC_GET_INFO 0x00000001
64 #define ACTRL_SVC_SET_INFO 0x00000002
65 #define ACTRL_SVC_STATUS 0x00000004
66 #define ACTRL_SVC_LIST 0x00000008
67 #define ACTRL_SVC_START 0x00000010
68 #define ACTRL_SVC_STOP 0x00000020
69 #define ACTRL_SVC_PAUSE 0x00000040
70 #define ACTRL_SVC_INTERROGATE 0x00000080
71 #define ACTRL_SVC_UCONTROL 0x00000100
73 #define ACTRL_REG_QUERY 0x00000001
74 #define ACTRL_REG_SET 0x00000002
75 #define ACTRL_REG_CREATE_CHILD 0x00000004
76 #define ACTRL_REG_LIST 0x00000008
77 #define ACTRL_REG_NOTIFY 0x00000010
78 #define ACTRL_REG_LINK 0x00000020
80 #define ACTRL_WIN_CLIPBRD 0x00000001
81 #define ACTRL_WIN_GLOBAL_ATOMS 0x00000002
82 #define ACTRL_WIN_CREATE 0x00000004
83 #define ACTRL_WIN_LIST_DESK 0x00000008
84 #define ACTRL_WIN_LIST 0x00000010
85 #define ACTRL_WIN_READ_ATTRIBS 0x00000020
86 #define ACTRL_WIN_WRITE_ATTRIBS 0x00000040
87 #define ACTRL_WIN_SCREEN 0x00000080
88 #define ACTRL_WIN_EXIT 0x00000100
90 #define ACTRL_ACCESS_NO_OPTIONS 0x00000000
91 #define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES 0x00000001
93 #define ACCCTRL_DEFAULT_PROVIDERA "Windows NT Access Provider"
94 #define ACCCTRL_DEFAULT_PROVIDERW L"Windows NT Access Provider"
96 #define TRUSTEE_ACCESS_ALLOWED 0x00000001L
97 #define TRUSTEE_ACCESS_READ 0x00000002L
98 #define TRUSTEE_ACCESS_WRITE 0x00000004L
99 #define TRUSTEE_ACCESS_EXPLICIT 0x00000001L
100 #define TRUSTEE_ACCESS_READ_WRITE (TRUSTEE_ACCESS_READ | TRUSTEE_ACCESS_WRITE)
101 #define TRUSTEE_ACCESS_ALL 0xFFFFFFFFL
103 #define NO_INHERITANCE 0x0
104 #define SUB_OBJECTS_ONLY_INHERIT 0x1
105 #define SUB_CONTAINERS_ONLY_INHERIT 0x2
106 #define SUB_CONTAINERS_AND_OBJECTS_INHERIT 0x3
107 #define INHERIT_NO_PROPAGATE 0x4
108 #define INHERIT_ONLY 0x8
109 #define INHERITED_ACCESS_ENTRY 0x10
110 #define INHERITED_PARENT 0x10000000
111 #define INHERITED_GRANDPARENT 0x20000000
113 #define SI_EDIT_PERMS 0x00000000
114 #define SI_EDIT_OWNER 0x00000001
115 #define SI_EDIT_AUDITS 0x00000002
116 #define SI_CONTAINER 0x00000004
117 #define SI_READONLY 0x00000008
118 #define SI_ADVANCED 0x00000010
119 #define SI_RESET 0x00000020
120 #define SI_OWNER_READONLY 0x00000040
121 #define SI_EDIT_PROPERTIES 0x00000080
122 #define SI_OWNER_RECURSE 0x00000100
123 #define SI_NO_ACL_PROTECT 0x00000200
124 #define SI_NO_TREE_APPLY 0x00000400
125 #define SI_PAGE_TITLE 0x00000800
126 #define SI_SERVER_IS_DC 0x00001000
127 #define SI_RESET_DACL_TREE 0x00004000
128 #define SI_RESET_SACL_TREE 0x00008000
129 #define SI_OBJECT_GUID 0x00010000
130 #define SI_EDIT_EFFECTIVE 0x00020000
131 #define SI_RESET_DACL 0x00040000
132 #define SI_RESET_SACL 0x00080000
133 #define SI_RESET_OWNER 0x00100000
134 #define SI_NO_ADDITIONAL_PERMISSION 0x00200000
135 #define SI_MAY_WRITE 0x10000000
136 #define SI_EDIT_ALL (SI_EDIT_OWNER |SI_EDIT_PERMS | SI_EDIT_AUDITS)
138 #define SI_ACCESS_SPECIFIC 0x00010000
139 #define SI_ACCESS_GENERAL 0x00020000
140 #define SI_ACCESS_CONTAINER 0x00040000
141 #define SI_ACCESS_PROPERTY 0x00080000
143 typedef ULONG INHERIT_FLAGS
, *PINHERIT_FLAGS
;
144 typedef ULONG ACCESS_RIGHTS
, *PACCESS_RIGHTS
;
146 typedef enum _ACCESS_MODE
157 typedef enum _SE_OBJECT_TYPE
159 SE_UNKNOWN_OBJECT_TYPE
= 0,
169 SE_PROVIDER_DEFINED_OBJECT
,
171 SE_REGISTRY_WOW64_32KEY
174 typedef enum _TRUSTEE_TYPE
181 TRUSTEE_IS_WELL_KNOWN_GROUP
,
187 typedef enum _TRUSTEE_FORM
192 TRUSTEE_IS_OBJECTS_AND_SID
,
193 TRUSTEE_IS_OBJECTS_AND_NAME
196 typedef enum _MULTIPLE_TRUSTEE_OPERATION
199 TRUSTEE_IS_IMPERSONATE
200 } MULTIPLE_TRUSTEE_OPERATION
;
202 typedef struct _TRUSTEE_A
204 struct _TRUSTEE_A
*pMultipleTrustee
;
205 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation
;
206 TRUSTEE_FORM TrusteeForm
;
207 TRUSTEE_TYPE TrusteeType
;
209 } TRUSTEE_A
, *PTRUSTEE_A
, TRUSTEEA
, *PTRUSTEEA
;
211 typedef struct _TRUSTEE_W
213 struct _TRUSTEE_W
*pMultipleTrustee
;
214 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation
;
215 TRUSTEE_FORM TrusteeForm
;
216 TRUSTEE_TYPE TrusteeType
;
218 } TRUSTEE_W
, *PTRUSTEE_W
, TRUSTEEW
, *PTRUSTEEW
;
220 typedef struct _ACTRL_ACCESS_ENTRYA
224 ACCESS_RIGHTS Access
;
225 ACCESS_RIGHTS ProvSpecificAccess
;
226 INHERIT_FLAGS Inheritance
;
227 LPCSTR lpInheritProperty
;
228 } ACTRL_ACCESS_ENTRYA
, *PACTRL_ACCESS_ENTRYA
;
230 typedef struct _ACTRL_ACCESS_ENTRYW
234 ACCESS_RIGHTS Access
;
235 ACCESS_RIGHTS ProvSpecificAccess
;
236 INHERIT_FLAGS Inheritance
;
237 LPCWSTR lpInheritProperty
;
238 } ACTRL_ACCESS_ENTRYW
, *PACTRL_ACCESS_ENTRYW
;
240 typedef struct _ACTRL_ACCESS_ENTRY_LISTA
243 ACTRL_ACCESS_ENTRYA
*pAccessList
;
244 } ACTRL_ACCESS_ENTRY_LISTA
, *PACTRL_ACCESS_ENTRY_LISTA
;
246 typedef struct _ACTRL_ACCESS_ENTRY_LISTW
249 ACTRL_ACCESS_ENTRYW
*pAccessList
;
250 } ACTRL_ACCESS_ENTRY_LISTW
, *PACTRL_ACCESS_ENTRY_LISTW
;
252 typedef struct _ACTRL_PROPERTY_ENTRYA
255 PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList
;
257 } ACTRL_PROPERTY_ENTRYA
, *PACTRL_PROPERTY_ENTRYA
;
259 typedef struct _ACTRL_PROPERTY_ENTRYW
262 PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList
;
264 } ACTRL_PROPERTY_ENTRYW
, *PACTRL_PROPERTY_ENTRYW
;
266 typedef struct _ACTRL_ALISTA
269 PACTRL_PROPERTY_ENTRYA pPropertyAccessList
;
270 } ACTRL_ACCESSA
, *PACTRL_ACCESSA
, ACTRL_AUDITA
, *PACTRL_AUDITA
;
272 typedef struct _ACTRL_ALISTW
275 PACTRL_PROPERTY_ENTRYW pPropertyAccessList
;
276 } ACTRL_ACCESSW
, *PACTRL_ACCESSW
, ACTRL_AUDITW
, *PACTRL_AUDITW
;
278 typedef struct _TRUSTEE_ACCESSA
281 ACCESS_RIGHTS Access
;
283 ULONG fReturnedAccess
;
284 } TRUSTEE_ACCESSA
, *PTRUSTEE_ACCESSA
;
286 typedef struct _TRUSTEE_ACCESSW
289 ACCESS_RIGHTS Access
;
291 ULONG fReturnedAccess
;
292 } TRUSTEE_ACCESSW
, *PTRUSTEE_ACCESSW
;
294 typedef struct _ACTRL_OVERLAPPED
304 } ACTRL_OVERLAPPED
, *PACTRL_OVERLAPPED
;
306 typedef struct _ACTRL_ACCESS_INFOA
308 ULONG fAccessPermission
;
309 LPSTR lpAccessPermissionName
;
310 } ACTRL_ACCESS_INFOA
, *PACTRL_ACCESS_INFOA
;
312 typedef struct _ACTRL_ACCESS_INFOW
314 ULONG fAccessPermission
;
315 LPWSTR lpAccessPermissionName
;
316 } ACTRL_ACCESS_INFOW
, *PACTRL_ACCESS_INFOW
;
318 typedef struct _ACTRL_CONTROL_INFOA
322 } ACTRL_CONTROL_INFOA
, *PACTRL_CONTROL_INFOA
;
324 typedef struct _ACTRL_CONTROL_INFOW
327 LPWSTR lpControlName
;
328 } ACTRL_CONTROL_INFOW
, *PACTRL_CONTROL_INFOW
;
330 typedef struct _EXPLICIT_ACCESS_A
332 DWORD grfAccessPermissions
;
333 ACCESS_MODE grfAccessMode
;
334 DWORD grfInheritance
;
336 } EXPLICIT_ACCESS_A
, *PEXPLICIT_ACCESS_A
, EXPLICIT_ACCESSA
, *PEXPLICIT_ACCESSA
;
338 typedef struct _EXPLICIT_ACCESS_W
340 DWORD grfAccessPermissions
;
341 ACCESS_MODE grfAccessMode
;
342 DWORD grfInheritance
;
344 } EXPLICIT_ACCESS_W
, *PEXPLICIT_ACCESS_W
, EXPLICIT_ACCESSW
, *PEXPLICIT_ACCESSW
;
346 typedef struct _OBJECTS_AND_SID
348 DWORD ObjectsPresent
;
350 GUID InheritedObjectTypeGuid
;
352 } OBJECTS_AND_SID
, *POBJECTS_AND_SID
;
354 typedef struct _OBJECTS_AND_NAME_A
356 DWORD ObjectsPresent
;
357 SE_OBJECT_TYPE ObjectType
;
358 LPSTR ObjectTypeName
;
359 LPSTR InheritedObjectTypeName
;
361 } OBJECTS_AND_NAME_A
, *POBJECTS_AND_NAME_A
;
363 typedef struct _OBJECTS_AND_NAME_W
365 DWORD ObjectsPresent
;
366 SE_OBJECT_TYPE ObjectType
;
367 LPWSTR ObjectTypeName
;
368 LPWSTR InheritedObjectTypeName
;
370 } OBJECTS_AND_NAME_W
, *POBJECTS_AND_NAME_W
;
372 #if (_WIN32_WINNT >= 0x0501)
377 } INHERITED_FROMA
, *PINHERITED_FROMA
;
383 } INHERITED_FROMW
, *PINHERITED_FROMW
;
384 #endif /* (_WIN32_WINNT >= 0x0501) */
386 typedef struct _SI_OBJECT_INFO
390 LPWSTR pszServerName
;
391 LPWSTR pszObjectName
;
394 } SI_OBJECT_INFO
, *PSI_OBJECT_INFO
;
396 typedef struct _SI_ACCESS
402 } SI_ACCESS
, *PSI_ACCESS
;
404 typedef struct _SI_INHERIT_TYPE
409 } SI_INHERIT_TYPE
, *PSI_INHERIT_TYPE
;
411 typedef enum _SI_PAGE_TYPE
419 typedef struct _FN_OBJECT_MGR_FUNCTIONS
422 } FN_OBJECT_MGR_FUNCTS
, *PFN_OBJECT_MGR_FUNCTS
;
424 typedef enum _PROG_INVOKE_SETTING
426 ProgressInvokeNever
= 1,
427 ProgressInvokeEveryObject
,
428 ProgressInvokeOnError
,
429 ProgressCancelOperation
,
430 ProgressRetryOperation
431 } PROG_INVOKE_SETTING
, *PPROG_INVOKE_SETTING
;
433 typedef VOID (WINAPI
*FN_PROGRESSW
)(LPWSTR pObjectName
,
435 PPROG_INVOKE_SETTING pInvokeSetting
,
438 typedef VOID (WINAPI
*FN_PROGRESSA
)(LPSTR pObjectName
,
440 PPROG_INVOKE_SETTING pInvokeSetting
,
445 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW
446 typedef TRUSTEE_W TRUSTEE_
, *PTRUSTEE_
;
447 typedef TRUSTEEW TRUSTEE
, *PTRUSTEE
;
448 typedef ACTRL_ACCESSW ACTRL_ACCESS
, *PACTRL_ACCESS
;
449 typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST
, *PACTRL_ACCESS_ENTRY_LIST
;
450 typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO
, *PACTRL_ACCESS_INFO
;
451 typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY
, *PACTRL_ACCESS_ENTRY
;
452 typedef ACTRL_AUDITW ACTRL_AUDIT
, *PACTRL_AUDIT
;
453 typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO
, *PACTRL_CONTROL_INFO
;
454 typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_
, *PEXPLICIT_ACCESS_
;
455 typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS
, *PEXPLICIT_ACCESS
;
456 typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS
, *PTRUSTEE_ACCESS
;
457 typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_
, *POBJECTS_AND_NAME_
;
459 #if (_WIN32_WINNT >= 0x0501)
460 typedef INHERITED_FROMW INHERITED_FROM
, *PINHERITED_FROM
;
461 typedef FN_PROGRESSW FN_PROGRESS
;
462 #define HAS_FN_PROGRESSW
465 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA
466 typedef TRUSTEE_A TRUSTEE_
, *PTRUSTEE_
;
467 typedef TRUSTEEA TRUSTEE
, *PTRUSTEE
;
468 typedef ACTRL_ACCESSA ACTRL_ACCESS
, *PACTRL_ACCESS
;
469 typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST
, *PACTRL_ACCESS_ENTRY_LIST
;
470 typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO
, *PACTRL_ACCESS_INFO
;
471 typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY
, *PACTRL_ACCESS_ENTRY
;
472 typedef ACTRL_AUDITA ACTRL_AUDIT
, *PACTRL_AUDIT
;
473 typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO
, *PACTRL_CONTROL_INFO
;
474 typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_
, *PEXPLICIT_ACCESS_
;
475 typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS
, *PEXPLICIT_ACCESS
;
476 typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS
, *PTRUSTEE_ACCESS
;
477 typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_
, *POBJECTS_AND_NAME_
;
479 #if (_WIN32_WINNT >= 0x0501)
480 typedef INHERITED_FROMA INHERITED_FROM
, *PINHERITED_FROM
;
481 typedef FN_PROGRESSA FN_PROGRESS
;
482 #define HAS_FN_PROGRESSA
483 #endif /* (_WIN32_WINNT >= 0x0501) */
491 #endif /* _ACCCTRL_H */