2 * Copyright (C) 2002 Alexandre Julliard
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 #include_next <accctrl.h>
23 #ifndef __WINE_ACCCTRL_H
24 #define __WINE_ACCCTRL_H
30 typedef enum _SE_OBJECT_TYPE
32 SE_UNKNOWN_OBJECT_TYPE
= 0,
42 SE_PROVIDER_DEFINED_OBJECT
,
44 SE_REGISTRY_WOW64_32KEY
47 typedef enum _TRUSTEE_TYPE
54 TRUSTEE_IS_WELL_KNOWN_GROUP
,
60 typedef enum _TRUSTEE_FORM
65 TRUSTEE_IS_OBJECTS_AND_SID
,
66 TRUSTEE_IS_OBJECTS_AND_NAME
69 typedef enum _MULTIPLE_TRUSTEE_OPERATION
72 TRUSTEE_IS_IMPERSONATE
,
73 } MULTIPLE_TRUSTEE_OPERATION
;
75 typedef struct _OBJECTS_AND_SID
79 GUID InheritedObjectTypeGuid
;
81 } OBJECTS_AND_SID
, *POBJECTS_AND_SID
;
83 typedef struct _OBJECTS_AND_NAME_A
86 SE_OBJECT_TYPE ObjectType
;
88 LPSTR InheritedObjectTypeName
;
90 } OBJECTS_AND_NAME_A
, *POBJECTS_AND_NAME_A
;
92 typedef struct _OBJECTS_AND_NAME_W
95 SE_OBJECT_TYPE ObjectType
;
96 LPWSTR ObjectTypeName
;
97 LPWSTR InheritedObjectTypeName
;
99 } OBJECTS_AND_NAME_W
, *POBJECTS_AND_NAME_W
;
101 typedef_tident(OBJECTS_AND_NAME_
)
102 typedef_tident(POBJECTS_AND_NAME_
)
104 typedef struct _TRUSTEE_A
106 struct _TRUSTEE_A
*pMultipleTrustee
;
107 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation
;
108 TRUSTEE_FORM TrusteeForm
;
109 TRUSTEE_TYPE TrusteeType
;
111 } TRUSTEE_A
, *PTRUSTEE_A
, TRUSTEEA
, *PTRUSTEEA
;
113 typedef struct _TRUSTEE_W
115 struct _TRUSTEE_W
*pMultipleTrustee
;
116 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation
;
117 TRUSTEE_FORM TrusteeForm
;
118 TRUSTEE_TYPE TrusteeType
;
120 } TRUSTEE_W
, *PTRUSTEE_W
, TRUSTEEW
, *PTRUSTEEW
;
122 typedef_tident(TRUSTEE_
)
123 typedef_tident(PTRUSTEE_
)
124 typedef_tident(TRUSTEE
)
125 typedef_tident(PTRUSTEE
)
127 typedef enum _ACCESS_MODE
138 #define NO_INHERITANCE 0x0
139 #define SUB_OBJECTS_ONLY_INHERIT 0x1
140 #define SUB_CONTAINERS_ONLY_INHERIT 0x2
141 #define SUB_CONTAINERS_AND_OBJECTS_INHERIT 0x3
142 #define INHERIT_NO_PROPAGATE 0x4
143 #define INHERIT_ONLY 0x8
144 #define INHERITED_ACCESS_ENTRY 0x10
145 #define INHERITED_PARENT 0x10000000
146 #define INHERITED_GRANDPARENT 0x20000000
148 typedef struct _EXPLICIT_ACCESS_A
150 DWORD grfAccessPermissions
;
151 ACCESS_MODE grfAccessMode
;
152 DWORD grfInheritance
;
154 } EXPLICIT_ACCESS_A
, *PEXPLICIT_ACCESS_A
, EXPLICIT_ACCESSA
, *PEXPLICIT_ACCESSA
;
156 typedef struct _EXPLICIT_ACCESS_W
158 DWORD grfAccessPermissions
;
159 ACCESS_MODE grfAccessMode
;
160 DWORD grfInheritance
;
162 } EXPLICIT_ACCESS_W
, *PEXPLICIT_ACCESS_W
, EXPLICIT_ACCESSW
, *PEXPLICIT_ACCESSW
;
164 typedef_tident(EXPLICIT_ACCESS_
)
165 typedef_tident(PEXPLICIT_ACCESS_
)
166 typedef_tident(EXPLICIT_ACCESS
)
167 typedef_tident(PEXPLICIT_ACCESS
)
169 typedef ULONG ACCESS_RIGHTS
, *PACCESS_RIGHTS
;
170 typedef ULONG INHERIT_FLAGS
, *PINHERIT_FLAGS
;
172 typedef struct _ACTRL_ACCESS_ENTRYA
176 ACCESS_RIGHTS Access
;
177 ACCESS_RIGHTS ProvSpecificAccess
;
178 INHERIT_FLAGS Inheritance
;
179 LPSTR lpInheritProperty
;
180 } ACTRL_ACCESS_ENTRYA
, *PACTRL_ACCESS_ENTRYA
;
182 typedef struct _ACTRL_ACCESS_ENTRYW
186 ACCESS_RIGHTS Access
;
187 ACCESS_RIGHTS ProvSpecificAccess
;
188 INHERIT_FLAGS Inheritance
;
189 LPWSTR lpInheritProperty
;
190 } ACTRL_ACCESS_ENTRYW
, *PACTRL_ACCESS_ENTRYW
;
192 typedef_tident(ACTRL_ACCESS_ENTRY
)
193 typedef_tident(PACTRL_ACCESS_ENTRY
)
196 typedef struct _ACTRL_ACCESS_ENTRY_LISTA
199 ACTRL_ACCESS_ENTRYA
*pAccessList
;
200 } ACTRL_ACCESS_ENTRY_LISTA
, *PACTRL_ACCESS_ENTRY_LISTA
;
202 typedef struct _ACTRL_ACCESS_ENTRY_LISTW
205 ACTRL_ACCESS_ENTRYW
*pAccessList
;
206 } ACTRL_ACCESS_ENTRY_LISTW
, *PACTRL_ACCESS_ENTRY_LISTW
;
208 typedef_tident(ACTRL_ACCESS_ENTRY_LIST
)
209 typedef_tident(PACTRL_ACCESS_ENTRY_LIST
)
211 typedef struct _ACTRL_PROPERTY_ENTRYA
214 PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList
;
216 } ACTRL_PROPERTY_ENTRYA
, *PACTRL_PROPERTY_ENTRYA
;
218 typedef struct _ACTRL_PROPERTY_ENTRYW
221 PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList
;
223 } ACTRL_PROPERTY_ENTRYW
, *PACTRL_PROPERTY_ENTRYW
;
225 typedef_tident(ACTRL_PROPERTY_ENTRY
)
226 typedef_tident(PACTRL_PROPERTY_ENTRY
)
228 typedef struct _ACTRL_ALISTA
231 PACTRL_PROPERTY_ENTRYA pPropertyAccessList
;
232 } ACTRL_ACCESSA
, *PACTRL_ACCESSA
, ACTRL_AUDITA
, *PACTRL_AUDITA
;
234 typedef struct _ACTRL_ALISTW
237 PACTRL_PROPERTY_ENTRYW pPropertyAccessList
;
238 } ACTRL_ACCESSW
, *PACTRL_ACCESSW
, ACTRL_AUDITW
, *PACTRL_AUDITW
;
240 typedef_tident(ACTRL_ACCESS
)
241 typedef_tident(PACTRL_ACCESS
)
242 typedef_tident(ACTRL_AUDIT
)
243 typedef_tident(PACTRL_AUDIT
)
245 #define TRUSTEE_ACCESS_ALLOWED 0x00000001
246 #define TRUSTEE_ACCESS_READ 0x00000002
247 #define TRUSTEE_ACCESS_WRITE 0x00000004
249 #define TRUSTEE_ACCESS_EXPLICIT 0x00000001
250 #define TRUSTEE_ACCESS_READ_WRITE (TRUSTEE_ACCESS_READ|TRUSTEE_ACCESS_WRITE)
251 #define TRUSTEE_ACCESS_ALL 0xFFFFFFFF
253 typedef struct _TRUSTEE_ACCESSA
256 ACCESS_RIGHTS Access
;
258 ULONG fReturnedAccess
;
259 } TRUSTEE_ACCESSA
, *PTRUSTEE_ACCESSA
;
261 typedef struct _TRUSTEE_ACCESSW
264 ACCESS_RIGHTS Access
;
266 ULONG fReturnedAccess
;
267 } TRUSTEE_ACCESSW
, *PTRUSTEE_ACCESSW
;
269 typedef_tident(TRUSTEE_ACCESS
)
270 typedef_tident(PTRUSTEE_ACCESS
)
272 #define ACTRL_RESERVED 0x00000000
273 #define ACTRL_PERM_1 0x00000001
274 #define ACTRL_PERM_2 0x00000002
275 #define ACTRL_PERM_3 0x00000004
276 #define ACTRL_PERM_4 0x00000008
277 #define ACTRL_PERM_5 0x00000010
278 #define ACTRL_PERM_6 0x00000020
279 #define ACTRL_PERM_7 0x00000040
280 #define ACTRL_PERM_8 0x00000080
281 #define ACTRL_PERM_9 0x00000100
282 #define ACTRL_PERM_10 0x00000200
283 #define ACTRL_PERM_11 0x00000400
284 #define ACTRL_PERM_12 0x00000800
285 #define ACTRL_PERM_13 0x00001000
286 #define ACTRL_PERM_14 0x00002000
287 #define ACTRL_PERM_15 0x00004000
288 #define ACTRL_PERM_16 0x00008000
289 #define ACTRL_PERM_17 0x00010000
290 #define ACTRL_PERM_18 0x00020000
291 #define ACTRL_PERM_19 0x00040000
292 #define ACTRL_PERM_20 0x00080000
294 #define ACTRL_ACCESS_ALLOWED 0x00000001
295 #define ACTRL_ACCESS_DENIED 0x00000002
296 #define ACTRL_AUDIT_SUCCESS 0x00000004
297 #define ACTRL_AUDIT_FAILURE 0x00000008
299 #define ACTRL_ACCESS_PROTECTED 0x00000001
301 #define ACTRL_SYSTEM_ACCESS 0x04000000
302 #define ACTRL_DELETE 0x08000000
303 #define ACTRL_READ_CONTROL 0x10000000
304 #define ACTRL_CHANGE_ACCESS 0x20000000
305 #define ACTRL_CHANGE_OWNER 0x40000000
306 #define ACTRL_SYNCHRONIZE 0x80000000
307 #define ACTRL_STD_RIGHTS_ALL 0xf8000000
308 #define ACTRL_STD_RIGHT_REQUIRED (ACTRL_STD_RIGHTS_ALL & ~ACTRL_SYNCHRONIZE)
310 #define ACTRL_DS_OPEN ACTRL_RESERVED
311 #define ACTRL_DS_CREATE_CHILD ACTRL_PERM_1
312 #define ACTRL_DS_DELETE_CHILD ACTRL_PERM_2
313 #define ACTRL_DS_LIST ACTRL_PERM_3
314 #define ACTRL_DS_SELF ACTRL_PERM_4
315 #define ACTRL_DS_READ_PROP ACTRL_PERM_5
316 #define ACTRL_DS_WRITE_PROP ACTRL_PERM_6
317 #define ACTRL_DS_DELETE_TREE ACTRL_PERM_7
318 #define ACTRL_DS_LIST_OBJECT ACTRL_PERM_8
319 #define ACTRL_DS_CONTROL_ACCESS ACTRL_PERM_9
321 #define ACTRL_FILE_READ ACTRL_PERM_1
322 #define ACTRL_FILE_WRITE ACTRL_PERM_2
323 #define ACTRL_FILE_APPEND ACTRL_PERM_3
324 #define ACTRL_FILE_READ_PROP ACTRL_PERM_4
325 #define ACTRL_FILE_WRITE_PROP ACTRL_PERM_5
326 #define ACTRL_FILE_EXECUTE ACTRL_PERM_6
327 #define ACTRL_FILE_READ_ATTRIB ACTRL_PERM_8
328 #define ACTRL_FILE_WRITE_ATTRIB ACTRL_PERM_9
329 #define ACTRL_FILE_CREATE_PIPE ACTRL_PERM_10
330 #define ACTRL_DIR_LIST ACTRL_PERM_1
331 #define ACTRL_DIR_CREATE_OBJECT ACTRL_PERM_2
332 #define ACTRL_DIR_CREATE_CHILD ACTRL_PERM_3
333 #define ACTRL_DIR_DELETE_CHILD ACTRL_PERM_7
334 #define ACTRL_DIR_TRAVERSE ACTRL_PERM_6
335 #define ACTRL_KERNEL_TERMINATE ACTRL_PERM_1
336 #define ACTRL_KERNEL_THREAD ACTRL_PERM_2
337 #define ACTRL_KERNEL_VM ACTRL_PERM_3
338 #define ACTRL_KERNEL_VM_READ ACTRL_PERM_4
339 #define ACTRL_KERNEL_VM_WRITE ACTRL_PERM_5
340 #define ACTRL_KERNEL_DUP_HANDLE ACTRL_PERM_6
341 #define ACTRL_KERNEL_PROCESS ACTRL_PERM_7
342 #define ACTRL_KERNEL_SET_INFO ACTRL_PERM_8
343 #define ACTRL_KERNEL_GET_INFO ACTRL_PERM_9
344 #define ACTRL_KERNEL_CONTROL ACTRL_PERM_10
345 #define ACTRL_KERNEL_ALERT ACTRL_PERM_11
346 #define ACTRL_KERNEL_GET_CONTEXT ACTRL_PERM_12
347 #define ACTRL_KERNEL_SET_CONTEXT ACTRL_PERM_13
348 #define ACTRL_KERNEL_TOKEN ACTRL_PERM_14
349 #define ACTRL_KERNEL_IMPERSONATE ACTRL_PERM_15
350 #define ACTRL_KERNEL_DIMPERSONATE ACTRL_PERM_16
351 #define ACTRL_PRINT_SADMIN ACTRL_PERM_1
352 #define ACTRL_PRINT_SLIST ACTRL_PERM_2
353 #define ACTRL_PRINT_PADMIN ACTRL_PERM_3
354 #define ACTRL_PRINT_PUSE ACTRL_PERM_4
355 #define ACTRL_PRINT_JADMIN ACTRL_PERM_5
356 #define ACTRL_SVC_GET_INFO ACTRL_PERM_1
357 #define ACTRL_SVC_SET_INFO ACTRL_PERM_2
358 #define ACTRL_SVC_STATUS ACTRL_PERM_3
359 #define ACTRL_SVC_LIST ACTRL_PERM_4
360 #define ACTRL_SVC_START ACTRL_PERM_5
361 #define ACTRL_SVC_STOP ACTRL_PERM_6
362 #define ACTRL_SVC_PAUSE ACTRL_PERM_7
363 #define ACTRL_SVC_INTERROGATE ACTRL_PERM_8
364 #define ACTRL_SVC_UCONTROL ACTRL_PERM_9
365 #define ACTRL_REG_QUERY ACTRL_PERM_1
366 #define ACTRL_REG_SET ACTRL_PERM_2
367 #define ACTRL_REG_CREATE_CHILD ACTRL_PERM_3
368 #define ACTRL_REG_LIST ACTRL_PERM_4
369 #define ACTRL_REG_NOTIFY ACTRL_PERM_5
370 #define ACTRL_REG_LINK ACTRL_PERM_6
371 #define ACTRL_WIN_CLIPBRD ACTRL_PERM_1
372 #define ACTRL_WIN_GLOBAL_ATOMS ACTRL_PERM_2
373 #define ACTRL_WIN_CREATE ACTRL_PERM_3
374 #define ACTRL_WIN_LIST_DESK ACTRL_PERM_4
375 #define ACTRL_WIN_LIST ACTRL_PERM_5
376 #define ACTRL_WIN_READ_ATTRIBS ACTRL_PERM_6
377 #define ACTRL_WIN_WRITE_ATTRIBS ACTRL_PERM_7
378 #define ACTRL_WIN_SCREEN ACTRL_PERM_8
379 #define ACTRL_WIN_EXIT ACTRL_PERM_9
381 #define ACTRL_ACCESS_NO_OPTIONS 0x00000000
382 #define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES 0x00000001
384 typedef struct _ACTRL_OVERLAPPED
392 } ACTRL_OVERLAPPED
, *PACTRL_OVERLAPPED
;
394 typedef struct _ACTRL_ACCESS_INFOA
396 ULONG fAccessPermission
;
397 LPSTR lpAccessPermissionName
;
398 } ACTRL_ACCESS_INFOA
, *PACTRL_ACCESS_INFOA
;
400 typedef struct _ACTRL_ACCESS_INFOW
402 ULONG fAccessPermission
;
403 LPWSTR lpAccessPermissionName
;
404 } ACTRL_ACCESS_INFOW
, *PACTRL_ACCESS_INFOW
;
406 typedef_tident(ACTRL_ACCESS_INFO
)
407 typedef_tident(PACTRL_ACCESS_INFO
)
409 typedef struct _ACTRL_CONTROL_INFOA
413 } ACTRL_CONTROL_INFOA
, *PACTRL_CONTROL_INFOA
;
415 typedef struct _ACTRL_CONTROL_INFOW
418 LPWSTR lpControlName
;
419 } ACTRL_CONTROL_INFOW
, *PACTRL_CONTROL_INFOW
;
421 typedef_tident(ACTRL_CONTROL_INFO
)
422 typedef_tident(PACTRL_CONTROL_INFO
)
424 typedef enum _PROGRESS_INVOKE_SETTING
{
425 ProgressInvokeNever
= 1,
426 ProgressInvokeEveryObject
,
427 ProgressInvokeOnError
,
428 ProgressCancelOperation
,
429 ProgressRetryOperation
430 } PROG_INVOKE_SETTING
, *PPROG_INVOKE_SETTING
;
432 typedef struct _INHERITED_FROMA
436 } INHERITED_FROMA
, *PINHERITED_FROMA
;
438 typedef struct _INHERITED_FROMW
442 } INHERITED_FROMW
, *PINHERITED_FROMW
;
444 typedef_tident(INHERITED_FROM
)
445 typedef_tident(PINHERITED_FROM
)
447 #define ACCCTRL_DEFAULT_PROVIDERA "Windows NT Access Provider"
448 #define ACCCTRL_DEFAULT_PROVIDERW L"Windows NT Access Provider"
450 #ifndef _DISABLE_TIDENTS
452 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW
454 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA
458 typedef struct _FN_OBJECT_MGR_FUNCTIONS
461 } FN_OBJECT_MGR_FUNCTS
, *PFN_OBJECT_MGR_FUNCTS
;
463 #define AccFree LocalFree
469 #endif /* __WINE_ACCCTRL_H */
471 #endif /* __USE_W32API */