xref: /reactos/sdk/include/psdk/accctrl.h (revision c2c66aff)
1 #ifndef _ACCCTRL_H
2 #define _ACCCTRL_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #define AccFree LocalFree
9 
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
23 
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
33 
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
39 
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 
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
62 
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
72 
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
79 
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
89 
90 #define ACTRL_ACCESS_NO_OPTIONS                 0x00000000
91 #define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES    0x00000001
92 
93 #define ACCCTRL_DEFAULT_PROVIDERA   "Windows NT Access Provider"
94 #define ACCCTRL_DEFAULT_PROVIDERW   L"Windows NT Access Provider"
95 
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
102 
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
112 
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)
137 
138 #define SI_ACCESS_SPECIFIC          0x00010000
139 #define SI_ACCESS_GENERAL           0x00020000
140 #define SI_ACCESS_CONTAINER         0x00040000
141 #define SI_ACCESS_PROPERTY          0x00080000
142 
143 typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
144 typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
145 
146 typedef enum _ACCESS_MODE
147 {
148     NOT_USED_ACCESS = 0,
149     GRANT_ACCESS,
150     SET_ACCESS,
151     DENY_ACCESS,
152     REVOKE_ACCESS,
153     SET_AUDIT_SUCCESS,
154     SET_AUDIT_FAILURE
155 } ACCESS_MODE;
156 
157 typedef enum _SE_OBJECT_TYPE
158 {
159     SE_UNKNOWN_OBJECT_TYPE = 0,
160     SE_FILE_OBJECT,
161     SE_SERVICE,
162     SE_PRINTER,
163     SE_REGISTRY_KEY,
164     SE_LMSHARE,
165     SE_KERNEL_OBJECT,
166     SE_WINDOW_OBJECT,
167     SE_DS_OBJECT,
168     SE_DS_OBJECT_ALL,
169     SE_PROVIDER_DEFINED_OBJECT,
170     SE_WMIGUID_OBJECT,
171     SE_REGISTRY_WOW64_32KEY
172 } SE_OBJECT_TYPE;
173 
174 typedef enum _TRUSTEE_TYPE
175 {
176     TRUSTEE_IS_UNKNOWN,
177     TRUSTEE_IS_USER,
178     TRUSTEE_IS_GROUP,
179     TRUSTEE_IS_DOMAIN,
180     TRUSTEE_IS_ALIAS,
181     TRUSTEE_IS_WELL_KNOWN_GROUP,
182     TRUSTEE_IS_DELETED,
183     TRUSTEE_IS_INVALID,
184     TRUSTEE_IS_COMPUTER
185 } TRUSTEE_TYPE;
186 
187 typedef enum _TRUSTEE_FORM
188 {
189     TRUSTEE_IS_SID,
190     TRUSTEE_IS_NAME,
191     TRUSTEE_BAD_FORM,
192     TRUSTEE_IS_OBJECTS_AND_SID,
193     TRUSTEE_IS_OBJECTS_AND_NAME
194 } TRUSTEE_FORM;
195 
196 typedef enum _MULTIPLE_TRUSTEE_OPERATION
197 {
198     NO_MULTIPLE_TRUSTEE,
199     TRUSTEE_IS_IMPERSONATE
200 } MULTIPLE_TRUSTEE_OPERATION;
201 
202 typedef struct _TRUSTEE_A
203 {
204     struct _TRUSTEE_A           *pMultipleTrustee;
205     MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
206     TRUSTEE_FORM                TrusteeForm;
207     TRUSTEE_TYPE                TrusteeType;
208     LPSTR                       ptstrName;
209 } TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
210 
211 typedef struct _TRUSTEE_W
212 {
213     struct _TRUSTEE_W           *pMultipleTrustee;
214     MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
215     TRUSTEE_FORM                TrusteeForm;
216     TRUSTEE_TYPE                TrusteeType;
217     LPWSTR                      ptstrName;
218 } TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
219 
220 typedef struct _ACTRL_ACCESS_ENTRYA
221 {
222     TRUSTEE_A       Trustee;
223     ULONG           fAccessFlags;
224     ACCESS_RIGHTS   Access;
225     ACCESS_RIGHTS   ProvSpecificAccess;
226     INHERIT_FLAGS   Inheritance;
227     LPCSTR          lpInheritProperty;
228 } ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
229 
230 typedef struct _ACTRL_ACCESS_ENTRYW
231 {
232     TRUSTEE_W       Trustee;
233     ULONG           fAccessFlags;
234     ACCESS_RIGHTS   Access;
235     ACCESS_RIGHTS   ProvSpecificAccess;
236     INHERIT_FLAGS   Inheritance;
237     LPCWSTR         lpInheritProperty;
238 } ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
239 
240 typedef struct _ACTRL_ACCESS_ENTRY_LISTA
241 {
242     ULONG                  cEntries;
243     ACTRL_ACCESS_ENTRYA    *pAccessList;
244 } ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
245 
246 typedef struct _ACTRL_ACCESS_ENTRY_LISTW
247 {
248     ULONG                  cEntries;
249     ACTRL_ACCESS_ENTRYW    *pAccessList;
250 } ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
251 
252 typedef struct _ACTRL_PROPERTY_ENTRYA
253 {
254     LPCSTR                      lpProperty;
255     PACTRL_ACCESS_ENTRY_LISTA   pAccessEntryList;
256     ULONG                       fListFlags;
257 } ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
258 
259 typedef struct _ACTRL_PROPERTY_ENTRYW
260 {
261     LPCWSTR                     lpProperty;
262     PACTRL_ACCESS_ENTRY_LISTW   pAccessEntryList;
263     ULONG                       fListFlags;
264 } ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
265 
266 typedef struct _ACTRL_ALISTA
267 {
268     ULONG                       cEntries;
269     PACTRL_PROPERTY_ENTRYA      pPropertyAccessList;
270 } ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
271 
272 typedef struct _ACTRL_ALISTW
273 {
274     ULONG                       cEntries;
275     PACTRL_PROPERTY_ENTRYW      pPropertyAccessList;
276 } ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
277 
278 typedef struct _TRUSTEE_ACCESSA
279 {
280     LPSTR           lpProperty;
281     ACCESS_RIGHTS   Access;
282     ULONG           fAccessFlags;
283     ULONG           fReturnedAccess;
284 } TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
285 
286 typedef struct _TRUSTEE_ACCESSW
287 {
288     LPWSTR          lpProperty;
289     ACCESS_RIGHTS   Access;
290     ULONG           fAccessFlags;
291     ULONG           fReturnedAccess;
292 } TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
293 
294 typedef struct _ACTRL_OVERLAPPED
295 {
296     _ANONYMOUS_UNION
297     union
298     {
299         PVOID Provider;
300         ULONG Reserved1;
301     } DUMMYUNIONNAME;
302     ULONG       Reserved2;
303     HANDLE      hEvent;
304 } ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
305 
306 typedef struct _ACTRL_ACCESS_INFOA
307 {
308     ULONG       fAccessPermission;
309     LPSTR       lpAccessPermissionName;
310 } ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
311 
312 typedef struct _ACTRL_ACCESS_INFOW
313 {
314     ULONG       fAccessPermission;
315     LPWSTR      lpAccessPermissionName;
316 } ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
317 
318 typedef struct _ACTRL_CONTROL_INFOA
319 {
320     LPSTR       lpControlId;
321     LPSTR       lpControlName;
322 } ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA;
323 
324 typedef struct _ACTRL_CONTROL_INFOW
325 {
326     LPWSTR      lpControlId;
327     LPWSTR      lpControlName;
328 } ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW;
329 
330 typedef struct _EXPLICIT_ACCESS_A
331 {
332     DWORD        grfAccessPermissions;
333     ACCESS_MODE  grfAccessMode;
334     DWORD        grfInheritance;
335     TRUSTEE_A    Trustee;
336 } EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
337 
338 typedef struct _EXPLICIT_ACCESS_W
339 {
340     DWORD        grfAccessPermissions;
341     ACCESS_MODE  grfAccessMode;
342     DWORD        grfInheritance;
343     TRUSTEE_W    Trustee;
344 } EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
345 
346 typedef struct _OBJECTS_AND_SID
347 {
348     DWORD   ObjectsPresent;
349     GUID    ObjectTypeGuid;
350     GUID    InheritedObjectTypeGuid;
351     SID     *pSid;
352 } OBJECTS_AND_SID, *POBJECTS_AND_SID;
353 
354 typedef struct _OBJECTS_AND_NAME_A
355 {
356     DWORD    ObjectsPresent;
357     SE_OBJECT_TYPE ObjectType;
358     LPSTR    ObjectTypeName;
359     LPSTR    InheritedObjectTypeName;
360     LPSTR    ptstrName;
361 } OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A;
362 
363 typedef struct _OBJECTS_AND_NAME_W
364 {
365     DWORD          ObjectsPresent;
366     SE_OBJECT_TYPE ObjectType;
367     LPWSTR   ObjectTypeName;
368     LPWSTR   InheritedObjectTypeName;
369     LPWSTR   ptstrName;
370 } OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;
371 
372 #if (_WIN32_WINNT >= 0x0501)
373 typedef struct
374 {
375     LONG     GenerationGap;
376     LPSTR    AncestorName;
377 } INHERITED_FROMA, *PINHERITED_FROMA;
378 
379 typedef struct
380 {
381     LONG     GenerationGap;
382     LPWSTR   AncestorName;
383 } INHERITED_FROMW, *PINHERITED_FROMW;
384 #endif /* (_WIN32_WINNT >= 0x0501) */
385 
386 typedef struct _SI_OBJECT_INFO
387 {
388     DWORD     dwFlags;
389     HINSTANCE hInstance;
390     LPWSTR    pszServerName;
391     LPWSTR    pszObjectName;
392     LPWSTR    pszPageTitle;
393     GUID      guidObjectType;
394 } SI_OBJECT_INFO, *PSI_OBJECT_INFO;
395 
396 typedef struct _SI_ACCESS
397 {
398     const GUID  *pguid;
399     ACCESS_MASK mask;
400     LPCWSTR     pszName;
401     DWORD       dwFlags;
402 } SI_ACCESS, *PSI_ACCESS;
403 
404 typedef struct _SI_INHERIT_TYPE
405 {
406     const GUID *pguid;
407     ULONG      dwFlags;
408     LPCWSTR    pszName;
409 } SI_INHERIT_TYPE, *PSI_INHERIT_TYPE;
410 
411 typedef enum _SI_PAGE_TYPE
412 {
413     SI_PAGE_PERM = 0,
414     SI_PAGE_ADVPERM,
415     SI_PAGE_AUDIT,
416     SI_PAGE_OWNER
417 } SI_PAGE_TYPE;
418 
419 typedef struct _FN_OBJECT_MGR_FUNCTIONS
420 {
421     ULONG Placeholder;
422 } FN_OBJECT_MGR_FUNCTS, *PFN_OBJECT_MGR_FUNCTS;
423 
424 typedef enum _PROG_INVOKE_SETTING
425 {
426     ProgressInvokeNever = 1,
427     ProgressInvokeEveryObject,
428     ProgressInvokeOnError,
429     ProgressCancelOperation,
430     ProgressRetryOperation
431 } PROG_INVOKE_SETTING, *PPROG_INVOKE_SETTING;
432 
433 typedef VOID (WINAPI *FN_PROGRESSW)(LPWSTR pObjectName,
434                                     DWORD Status,
435                                     PPROG_INVOKE_SETTING pInvokeSetting,
436                                     PVOID Args,
437                                     BOOL SecuritySet);
438 typedef VOID (WINAPI *FN_PROGRESSA)(LPSTR pObjectName,
439                                     DWORD Status,
440                                     PPROG_INVOKE_SETTING pInvokeSetting,
441                                     PVOID Args,
442                                     BOOL SecuritySet);
443 
444 #ifdef UNICODE
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_;
458 
459 #if (_WIN32_WINNT >= 0x0501)
460 typedef INHERITED_FROMW INHERITED_FROM, *PINHERITED_FROM;
461 typedef FN_PROGRESSW FN_PROGRESS;
462 #define HAS_FN_PROGRESSW
463 #endif
464 #else
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_;
478 
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) */
484 
485 #endif /* UNICODE */
486 
487 #ifdef __cplusplus
488 }
489 #endif
490 
491 #endif /* _ACCCTRL_H */
492