Reactos
at master 492 lines 16 kB view raw
1#ifndef _ACCCTRL_H 2#define _ACCCTRL_H 3 4#ifdef __cplusplus 5extern "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 143typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS; 144typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS; 145 146typedef 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 157typedef 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_REGISTRY_WOW64_64KEY 173} SE_OBJECT_TYPE; 174 175typedef enum _TRUSTEE_TYPE 176{ 177 TRUSTEE_IS_UNKNOWN, 178 TRUSTEE_IS_USER, 179 TRUSTEE_IS_GROUP, 180 TRUSTEE_IS_DOMAIN, 181 TRUSTEE_IS_ALIAS, 182 TRUSTEE_IS_WELL_KNOWN_GROUP, 183 TRUSTEE_IS_DELETED, 184 TRUSTEE_IS_INVALID, 185 TRUSTEE_IS_COMPUTER 186} TRUSTEE_TYPE; 187 188typedef enum _TRUSTEE_FORM 189{ 190 TRUSTEE_IS_SID, 191 TRUSTEE_IS_NAME, 192 TRUSTEE_BAD_FORM, 193 TRUSTEE_IS_OBJECTS_AND_SID, 194 TRUSTEE_IS_OBJECTS_AND_NAME 195} TRUSTEE_FORM; 196 197typedef enum _MULTIPLE_TRUSTEE_OPERATION 198{ 199 NO_MULTIPLE_TRUSTEE, 200 TRUSTEE_IS_IMPERSONATE 201} MULTIPLE_TRUSTEE_OPERATION; 202 203typedef struct _TRUSTEE_A 204{ 205 struct _TRUSTEE_A *pMultipleTrustee; 206 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; 207 TRUSTEE_FORM TrusteeForm; 208 TRUSTEE_TYPE TrusteeType; 209 LPSTR ptstrName; 210} TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA; 211 212typedef struct _TRUSTEE_W 213{ 214 struct _TRUSTEE_W *pMultipleTrustee; 215 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; 216 TRUSTEE_FORM TrusteeForm; 217 TRUSTEE_TYPE TrusteeType; 218 LPWSTR ptstrName; 219} TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW; 220 221typedef struct _ACTRL_ACCESS_ENTRYA 222{ 223 TRUSTEE_A Trustee; 224 ULONG fAccessFlags; 225 ACCESS_RIGHTS Access; 226 ACCESS_RIGHTS ProvSpecificAccess; 227 INHERIT_FLAGS Inheritance; 228 LPCSTR lpInheritProperty; 229} ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA; 230 231typedef struct _ACTRL_ACCESS_ENTRYW 232{ 233 TRUSTEE_W Trustee; 234 ULONG fAccessFlags; 235 ACCESS_RIGHTS Access; 236 ACCESS_RIGHTS ProvSpecificAccess; 237 INHERIT_FLAGS Inheritance; 238 LPCWSTR lpInheritProperty; 239} ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW; 240 241typedef struct _ACTRL_ACCESS_ENTRY_LISTA 242{ 243 ULONG cEntries; 244 ACTRL_ACCESS_ENTRYA *pAccessList; 245} ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA; 246 247typedef struct _ACTRL_ACCESS_ENTRY_LISTW 248{ 249 ULONG cEntries; 250 ACTRL_ACCESS_ENTRYW *pAccessList; 251} ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW; 252 253typedef struct _ACTRL_PROPERTY_ENTRYA 254{ 255 LPCSTR lpProperty; 256 PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; 257 ULONG fListFlags; 258} ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA; 259 260typedef struct _ACTRL_PROPERTY_ENTRYW 261{ 262 LPCWSTR lpProperty; 263 PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; 264 ULONG fListFlags; 265} ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW; 266 267typedef struct _ACTRL_ALISTA 268{ 269 ULONG cEntries; 270 PACTRL_PROPERTY_ENTRYA pPropertyAccessList; 271} ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA; 272 273typedef struct _ACTRL_ALISTW 274{ 275 ULONG cEntries; 276 PACTRL_PROPERTY_ENTRYW pPropertyAccessList; 277} ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW; 278 279typedef struct _TRUSTEE_ACCESSA 280{ 281 LPSTR lpProperty; 282 ACCESS_RIGHTS Access; 283 ULONG fAccessFlags; 284 ULONG fReturnedAccess; 285} TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA; 286 287typedef struct _TRUSTEE_ACCESSW 288{ 289 LPWSTR lpProperty; 290 ACCESS_RIGHTS Access; 291 ULONG fAccessFlags; 292 ULONG fReturnedAccess; 293} TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW; 294 295typedef struct _ACTRL_OVERLAPPED 296{ 297 _ANONYMOUS_UNION 298 union 299 { 300 PVOID Provider; 301 ULONG Reserved1; 302 } DUMMYUNIONNAME; 303 ULONG Reserved2; 304 HANDLE hEvent; 305} ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED; 306 307typedef struct _ACTRL_ACCESS_INFOA 308{ 309 ULONG fAccessPermission; 310 LPSTR lpAccessPermissionName; 311} ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA; 312 313typedef struct _ACTRL_ACCESS_INFOW 314{ 315 ULONG fAccessPermission; 316 LPWSTR lpAccessPermissionName; 317} ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW; 318 319typedef struct _ACTRL_CONTROL_INFOA 320{ 321 LPSTR lpControlId; 322 LPSTR lpControlName; 323} ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA; 324 325typedef struct _ACTRL_CONTROL_INFOW 326{ 327 LPWSTR lpControlId; 328 LPWSTR lpControlName; 329} ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW; 330 331typedef struct _EXPLICIT_ACCESS_A 332{ 333 DWORD grfAccessPermissions; 334 ACCESS_MODE grfAccessMode; 335 DWORD grfInheritance; 336 TRUSTEE_A Trustee; 337} EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA; 338 339typedef struct _EXPLICIT_ACCESS_W 340{ 341 DWORD grfAccessPermissions; 342 ACCESS_MODE grfAccessMode; 343 DWORD grfInheritance; 344 TRUSTEE_W Trustee; 345} EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW; 346 347typedef struct _OBJECTS_AND_SID 348{ 349 DWORD ObjectsPresent; 350 GUID ObjectTypeGuid; 351 GUID InheritedObjectTypeGuid; 352 SID *pSid; 353} OBJECTS_AND_SID, *POBJECTS_AND_SID; 354 355typedef struct _OBJECTS_AND_NAME_A 356{ 357 DWORD ObjectsPresent; 358 SE_OBJECT_TYPE ObjectType; 359 LPSTR ObjectTypeName; 360 LPSTR InheritedObjectTypeName; 361 LPSTR ptstrName; 362} OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A; 363 364typedef struct _OBJECTS_AND_NAME_W 365{ 366 DWORD ObjectsPresent; 367 SE_OBJECT_TYPE ObjectType; 368 LPWSTR ObjectTypeName; 369 LPWSTR InheritedObjectTypeName; 370 LPWSTR ptstrName; 371} OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W; 372 373#if (_WIN32_WINNT >= 0x0501) 374typedef struct 375{ 376 LONG GenerationGap; 377 LPSTR AncestorName; 378} INHERITED_FROMA, *PINHERITED_FROMA; 379 380typedef struct 381{ 382 LONG GenerationGap; 383 LPWSTR AncestorName; 384} INHERITED_FROMW, *PINHERITED_FROMW; 385#endif /* (_WIN32_WINNT >= 0x0501) */ 386 387typedef struct _SI_OBJECT_INFO 388{ 389 DWORD dwFlags; 390 HINSTANCE hInstance; 391 LPWSTR pszServerName; 392 LPWSTR pszObjectName; 393 LPWSTR pszPageTitle; 394 GUID guidObjectType; 395} SI_OBJECT_INFO, *PSI_OBJECT_INFO; 396 397typedef struct _SI_ACCESS 398{ 399 const GUID *pguid; 400 ACCESS_MASK mask; 401 LPCWSTR pszName; 402 DWORD dwFlags; 403} SI_ACCESS, *PSI_ACCESS; 404 405typedef struct _SI_INHERIT_TYPE 406{ 407 const GUID *pguid; 408 ULONG dwFlags; 409 LPCWSTR pszName; 410} SI_INHERIT_TYPE, *PSI_INHERIT_TYPE; 411 412typedef enum _SI_PAGE_TYPE 413{ 414 SI_PAGE_PERM = 0, 415 SI_PAGE_ADVPERM, 416 SI_PAGE_AUDIT, 417 SI_PAGE_OWNER 418} SI_PAGE_TYPE; 419 420typedef struct _FN_OBJECT_MGR_FUNCTIONS 421{ 422 ULONG Placeholder; 423} FN_OBJECT_MGR_FUNCTS, *PFN_OBJECT_MGR_FUNCTS; 424 425typedef enum _PROG_INVOKE_SETTING 426{ 427 ProgressInvokeNever = 1, 428 ProgressInvokeEveryObject, 429 ProgressInvokeOnError, 430 ProgressCancelOperation, 431 ProgressRetryOperation 432} PROG_INVOKE_SETTING, *PPROG_INVOKE_SETTING; 433 434typedef VOID (WINAPI *FN_PROGRESSW)(LPWSTR pObjectName, 435 DWORD Status, 436 PPROG_INVOKE_SETTING pInvokeSetting, 437 PVOID Args, 438 BOOL SecuritySet); 439typedef VOID (WINAPI *FN_PROGRESSA)(LPSTR pObjectName, 440 DWORD Status, 441 PPROG_INVOKE_SETTING pInvokeSetting, 442 PVOID Args, 443 BOOL SecuritySet); 444 445#ifdef UNICODE 446#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW 447typedef TRUSTEE_W TRUSTEE_, *PTRUSTEE_; 448typedef TRUSTEEW TRUSTEE, *PTRUSTEE; 449typedef ACTRL_ACCESSW ACTRL_ACCESS, *PACTRL_ACCESS; 450typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST; 451typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO; 452typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY; 453typedef ACTRL_AUDITW ACTRL_AUDIT, *PACTRL_AUDIT; 454typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO; 455typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_; 456typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS, *PEXPLICIT_ACCESS; 457typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS, *PTRUSTEE_ACCESS; 458typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_; 459 460#if (_WIN32_WINNT >= 0x0501) 461typedef INHERITED_FROMW INHERITED_FROM, *PINHERITED_FROM; 462typedef FN_PROGRESSW FN_PROGRESS; 463#define HAS_FN_PROGRESSW 464#endif 465#else 466#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA 467typedef TRUSTEE_A TRUSTEE_, *PTRUSTEE_; 468typedef TRUSTEEA TRUSTEE, *PTRUSTEE; 469typedef ACTRL_ACCESSA ACTRL_ACCESS, *PACTRL_ACCESS; 470typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST; 471typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO; 472typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY; 473typedef ACTRL_AUDITA ACTRL_AUDIT, *PACTRL_AUDIT; 474typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO; 475typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_; 476typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS, *PEXPLICIT_ACCESS; 477typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS, *PTRUSTEE_ACCESS; 478typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_; 479 480#if (_WIN32_WINNT >= 0x0501) 481typedef INHERITED_FROMA INHERITED_FROM, *PINHERITED_FROM; 482typedef FN_PROGRESSA FN_PROGRESS; 483#define HAS_FN_PROGRESSA 484#endif /* (_WIN32_WINNT >= 0x0501) */ 485 486#endif /* UNICODE */ 487 488#ifdef __cplusplus 489} 490#endif 491 492#endif /* _ACCCTRL_H */