| /** |
| * Windows API header module |
| * |
| * Translated from MinGW Windows headers |
| * |
| * Authors: Stewart Gordon |
| * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) |
| * Source: $(DRUNTIMESRC src/core/sys/windows/_accctrl.d) |
| */ |
| module core.sys.windows.accctrl; |
| version (Windows): |
| |
| version (ANSI) {} else version = Unicode; |
| |
| import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; |
| |
| // FIXME: check types and grouping of constants |
| // FIXME: check Windows version support |
| |
| alias LocalFree AccFree; |
| |
| enum uint |
| ACTRL_RESERVED = 0x00000000, |
| ACTRL_ACCESS_PROTECTED = 0x00000001, |
| ACTRL_ACCESS_ALLOWED = 0x00000001, |
| ACTRL_ACCESS_DENIED = 0x00000002, |
| ACTRL_AUDIT_SUCCESS = 0x00000004, |
| ACTRL_AUDIT_FAILURE = 0x00000008, |
| ACTRL_SYSTEM_ACCESS = 0x04000000, |
| ACTRL_DELETE = 0x08000000, |
| ACTRL_READ_CONTROL = 0x10000000, |
| ACTRL_CHANGE_ACCESS = 0x20000000, |
| ACTRL_CHANGE_OWNER = 0x40000000, |
| ACTRL_SYNCHRONIZE = 0x80000000, |
| ACTRL_STD_RIGHTS_ALL = 0xf8000000; |
| |
| enum uint |
| ACTRL_FILE_READ = 0x00000001, |
| ACTRL_FILE_WRITE = 0x00000002, |
| ACTRL_FILE_APPEND = 0x00000004, |
| ACTRL_FILE_READ_PROP = 0x00000008, |
| ACTRL_FILE_WRITE_PROP = 0x00000010, |
| ACTRL_FILE_EXECUTE = 0x00000020, |
| ACTRL_FILE_READ_ATTRIB = 0x00000080, |
| ACTRL_FILE_WRITE_ATTRIB = 0x00000100, |
| ACTRL_FILE_CREATE_PIPE = 0x00000200; |
| |
| enum uint |
| ACTRL_DIR_LIST = 0x00000001, |
| ACTRL_DIR_CREATE_OBJECT = 0x00000002, |
| ACTRL_DIR_CREATE_CHILD = 0x00000004, |
| ACTRL_DIR_DELETE_CHILD = 0x00000040, |
| ACTRL_DIR_TRAVERSE = 0x00000020; |
| |
| enum uint |
| ACTRL_KERNEL_TERMINATE = 0x00000001, |
| ACTRL_KERNEL_THREAD = 0x00000002, |
| ACTRL_KERNEL_VM = 0x00000004, |
| ACTRL_KERNEL_VM_READ = 0x00000008, |
| ACTRL_KERNEL_VM_WRITE = 0x00000010, |
| ACTRL_KERNEL_DUP_HANDLE = 0x00000020, |
| ACTRL_KERNEL_PROCESS = 0x00000040, |
| ACTRL_KERNEL_SET_INFO = 0x00000080, |
| ACTRL_KERNEL_GET_INFO = 0x00000100, |
| ACTRL_KERNEL_CONTROL = 0x00000200, |
| ACTRL_KERNEL_ALERT = 0x00000400, |
| ACTRL_KERNEL_GET_CONTEXT = 0x00000800, |
| ACTRL_KERNEL_SET_CONTEXT = 0x00001000, |
| ACTRL_KERNEL_TOKEN = 0x00002000, |
| ACTRL_KERNEL_IMPERSONATE = 0x00004000, |
| ACTRL_KERNEL_DIMPERSONATE = 0x00008000; |
| |
| enum uint |
| ACTRL_PRINT_SADMIN = 0x00000001, |
| ACTRL_PRINT_SLIST = 0x00000002, |
| ACTRL_PRINT_PADMIN = 0x00000004, |
| ACTRL_PRINT_PUSE = 0x00000008, |
| ACTRL_PRINT_JADMIN = 0x00000010; |
| |
| enum uint |
| ACTRL_SVC_GET_INFO = 0x00000001, |
| ACTRL_SVC_SET_INFO = 0x00000002, |
| ACTRL_SVC_STATUS = 0x00000004, |
| ACTRL_SVC_LIST = 0x00000008, |
| ACTRL_SVC_START = 0x00000010, |
| ACTRL_SVC_STOP = 0x00000020, |
| ACTRL_SVC_PAUSE = 0x00000040, |
| ACTRL_SVC_INTERROGATE = 0x00000080, |
| ACTRL_SVC_UCONTROL = 0x00000100; |
| |
| enum uint |
| ACTRL_REG_QUERY = 0x00000001, |
| ACTRL_REG_SET = 0x00000002, |
| ACTRL_REG_CREATE_CHILD = 0x00000004, |
| ACTRL_REG_LIST = 0x00000008, |
| ACTRL_REG_NOTIFY = 0x00000010, |
| ACTRL_REG_LINK = 0x00000020; |
| |
| enum uint |
| ACTRL_WIN_CLIPBRD = 0x00000001, |
| ACTRL_WIN_GLOBAL_ATOMS = 0x00000002, |
| ACTRL_WIN_CREATE = 0x00000004, |
| ACTRL_WIN_LIST_DESK = 0x00000008, |
| ACTRL_WIN_LIST = 0x00000010, |
| ACTRL_WIN_READ_ATTRIBS = 0x00000020, |
| ACTRL_WIN_WRITE_ATTRIBS = 0x00000040, |
| ACTRL_WIN_SCREEN = 0x00000080, |
| ACTRL_WIN_EXIT = 0x00000100; |
| |
| enum : uint { |
| ACTRL_ACCESS_NO_OPTIONS = 0x00000000, |
| ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = 0x00000001 |
| } |
| |
| const TCHAR[] ACCCTRL_DEFAULT_PROVIDER = "Windows NT Access Provider"; |
| |
| enum uint |
| TRUSTEE_ACCESS_ALLOWED = 0x00000001, |
| TRUSTEE_ACCESS_READ = 0x00000002, |
| TRUSTEE_ACCESS_WRITE = 0x00000004, |
| TRUSTEE_ACCESS_EXPLICIT = 0x00000001, |
| TRUSTEE_ACCESS_READ_WRITE = 0x00000006, |
| TRUSTEE_ACCESS_ALL = 0xFFFFFFFF; |
| |
| enum uint |
| NO_INHERITANCE = 0x0, |
| SUB_OBJECTS_ONLY_INHERIT = 0x1, |
| SUB_CONTAINERS_ONLY_INHERIT = 0x2, |
| SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3, |
| INHERIT_NO_PROPAGATE = 0x4, |
| INHERIT_ONLY = 0x8, |
| INHERITED_ACCESS_ENTRY = 0x10, |
| INHERITED_PARENT = 0x10000000, |
| INHERITED_GRANDPARENT = 0x20000000; |
| |
| alias ULONG INHERIT_FLAGS, ACCESS_RIGHTS; |
| alias ULONG* PINHERIT_FLAGS, PACCESS_RIGHTS; |
| |
| enum ACCESS_MODE { |
| NOT_USED_ACCESS, |
| GRANT_ACCESS, |
| SET_ACCESS, |
| DENY_ACCESS, |
| REVOKE_ACCESS, |
| SET_AUDIT_SUCCESS, |
| SET_AUDIT_FAILURE |
| } |
| |
| enum SE_OBJECT_TYPE { |
| SE_UNKNOWN_OBJECT_TYPE, |
| SE_FILE_OBJECT, |
| SE_SERVICE, |
| SE_PRINTER, |
| SE_REGISTRY_KEY, |
| SE_LMSHARE, |
| SE_KERNEL_OBJECT, |
| SE_WINDOW_OBJECT, |
| SE_DS_OBJECT, |
| SE_DS_OBJECT_ALL, |
| SE_PROVIDER_DEFINED_OBJECT, |
| SE_WMIGUID_OBJECT, |
| SE_REGISTRY_WOW64_32KEY |
| } |
| |
| enum TRUSTEE_TYPE { |
| TRUSTEE_IS_UNKNOWN, |
| TRUSTEE_IS_USER, |
| TRUSTEE_IS_GROUP, |
| TRUSTEE_IS_DOMAIN, |
| TRUSTEE_IS_ALIAS, |
| TRUSTEE_IS_WELL_KNOWN_GROUP, |
| TRUSTEE_IS_DELETED, |
| TRUSTEE_IS_INVALID, |
| TRUSTEE_IS_COMPUTER |
| } |
| |
| enum TRUSTEE_FORM { |
| TRUSTEE_IS_SID, |
| TRUSTEE_IS_NAME, |
| TRUSTEE_BAD_FORM, |
| TRUSTEE_IS_OBJECTS_AND_SID, |
| TRUSTEE_IS_OBJECTS_AND_NAME |
| } |
| |
| enum MULTIPLE_TRUSTEE_OPERATION { |
| NO_MULTIPLE_TRUSTEE, |
| TRUSTEE_IS_IMPERSONATE |
| } |
| |
| struct TRUSTEE_A { |
| TRUSTEE_A* pMultipleTrustee; |
| MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; |
| TRUSTEE_FORM TrusteeForm; |
| TRUSTEE_TYPE TrusteeType; |
| LPSTR ptstrName; |
| } |
| alias TRUSTEE_A TRUSTEEA; |
| alias TRUSTEE_A* PTRUSTEE_A, PTRUSTEEA; |
| |
| struct TRUSTEE_W { |
| TRUSTEE_W* pMultipleTrustee; |
| MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; |
| TRUSTEE_FORM TrusteeForm; |
| TRUSTEE_TYPE TrusteeType; |
| LPWSTR ptstrName; |
| } |
| alias TRUSTEE_W TRUSTEEW; |
| alias TRUSTEEW* PTRUSTEE_W, PTRUSTEEW; |
| |
| struct ACTRL_ACCESS_ENTRYA { |
| TRUSTEE_A Trustee; |
| ULONG fAccessFlags; |
| ACCESS_RIGHTS Access; |
| ACCESS_RIGHTS ProvSpecificAccess; |
| INHERIT_FLAGS Inheritance; |
| LPCSTR lpInheritProperty; |
| } |
| alias ACTRL_ACCESS_ENTRYA* PACTRL_ACCESS_ENTRYA; |
| |
| struct ACTRL_ACCESS_ENTRYW { |
| TRUSTEE_W Trustee; |
| ULONG fAccessFlags; |
| ACCESS_RIGHTS Access; |
| ACCESS_RIGHTS ProvSpecificAccess; |
| INHERIT_FLAGS Inheritance; |
| LPCWSTR lpInheritProperty; |
| } |
| alias ACTRL_ACCESS_ENTRYW* PACTRL_ACCESS_ENTRYW; |
| |
| struct ACTRL_ACCESS_ENTRY_LISTA { |
| ULONG cEntries; |
| ACTRL_ACCESS_ENTRYA* pAccessList; |
| } |
| alias ACTRL_ACCESS_ENTRY_LISTA* PACTRL_ACCESS_ENTRY_LISTA; |
| |
| struct ACTRL_ACCESS_ENTRY_LISTW { |
| ULONG cEntries; |
| ACTRL_ACCESS_ENTRYW* pAccessList; |
| } |
| alias ACTRL_ACCESS_ENTRY_LISTW* PACTRL_ACCESS_ENTRY_LISTW; |
| |
| struct ACTRL_PROPERTY_ENTRYA { |
| LPCSTR lpProperty; |
| PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; |
| ULONG fListFlags; |
| } |
| alias ACTRL_PROPERTY_ENTRYA* PACTRL_PROPERTY_ENTRYA; |
| |
| struct ACTRL_PROPERTY_ENTRYW { |
| LPCWSTR lpProperty; |
| PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; |
| ULONG fListFlags; |
| } |
| alias ACTRL_PROPERTY_ENTRYW* PACTRL_PROPERTY_ENTRYW; |
| |
| struct ACTRL_ACCESSA { |
| ULONG cEntries; |
| PACTRL_PROPERTY_ENTRYA pPropertyAccessList; |
| } |
| alias ACTRL_ACCESSA ACTRL_AUDITA; |
| alias ACTRL_ACCESSA* PACTRL_ACCESSA, PACTRL_AUDITA; |
| |
| struct ACTRL_ACCESSW { |
| ULONG cEntries; |
| PACTRL_PROPERTY_ENTRYW pPropertyAccessList; |
| } |
| alias ACTRL_ACCESSW ACTRL_AUDITW; |
| alias ACTRL_ACCESSW* PACTRL_ACCESSW, PACTRL_AUDITW; |
| |
| struct TRUSTEE_ACCESSA { |
| LPSTR lpProperty; |
| ACCESS_RIGHTS Access; |
| ULONG fAccessFlags; |
| ULONG fReturnedAccess; |
| } |
| alias TRUSTEE_ACCESSA* PTRUSTEE_ACCESSA; |
| |
| struct TRUSTEE_ACCESSW { |
| LPWSTR lpProperty; |
| ACCESS_RIGHTS Access; |
| ULONG fAccessFlags; |
| ULONG fReturnedAccess; |
| } |
| alias TRUSTEE_ACCESSW* PTRUSTEE_ACCESSW; |
| |
| struct ACTRL_OVERLAPPED { |
| union { |
| PVOID Provider; |
| ULONG Reserved1; |
| } |
| ULONG Reserved2; |
| HANDLE hEvent; |
| } |
| alias ACTRL_OVERLAPPED* PACTRL_OVERLAPPED; |
| |
| struct ACTRL_ACCESS_INFOA { |
| ULONG fAccessPermission; |
| LPSTR lpAccessPermissionName; |
| } |
| alias ACTRL_ACCESS_INFOA* PACTRL_ACCESS_INFOA; |
| |
| struct ACTRL_ACCESS_INFOW { |
| ULONG fAccessPermission; |
| LPWSTR lpAccessPermissionName; |
| } |
| alias ACTRL_ACCESS_INFOW* PACTRL_ACCESS_INFOW; |
| |
| struct ACTRL_CONTROL_INFOA { |
| LPSTR lpControlId; |
| LPSTR lpControlName; |
| } |
| alias ACTRL_CONTROL_INFOA* PACTRL_CONTROL_INFOA; |
| |
| struct ACTRL_CONTROL_INFOW { |
| LPWSTR lpControlId; |
| LPWSTR lpControlName; |
| } |
| alias ACTRL_CONTROL_INFOW* PACTRL_CONTROL_INFOW; |
| |
| struct EXPLICIT_ACCESS_A { |
| DWORD grfAccessPermissions; |
| ACCESS_MODE grfAccessMode; |
| DWORD grfInheritance; |
| TRUSTEE_A Trustee; |
| } |
| alias EXPLICIT_ACCESS_A EXPLICIT_ACCESSA; |
| alias EXPLICIT_ACCESS_A* PEXPLICIT_ACCESS_A, PEXPLICIT_ACCESSA; |
| |
| struct EXPLICIT_ACCESS_W { |
| DWORD grfAccessPermissions; |
| ACCESS_MODE grfAccessMode; |
| DWORD grfInheritance; |
| TRUSTEE_W Trustee; |
| } |
| alias EXPLICIT_ACCESS_W EXPLICIT_ACCESSW; |
| alias EXPLICIT_ACCESS_W* PEXPLICIT_ACCESS_W, PEXPLICIT_ACCESSW; |
| |
| struct OBJECTS_AND_SID { |
| DWORD ObjectsPresent; |
| GUID ObjectTypeGuid; |
| GUID InheritedObjectTypeGuid; |
| SID* pSid; |
| } |
| alias OBJECTS_AND_SID* POBJECTS_AND_SID; |
| |
| struct OBJECTS_AND_NAME_A { |
| DWORD ObjectsPresent; |
| SE_OBJECT_TYPE ObjectType; |
| LPSTR ObjectTypeName; |
| LPSTR InheritedObjectTypeName; |
| LPSTR ptstrName; |
| } |
| alias OBJECTS_AND_NAME_A* POBJECTS_AND_NAME_A; |
| |
| struct OBJECTS_AND_NAME_W { |
| DWORD ObjectsPresent; |
| SE_OBJECT_TYPE ObjectType; |
| LPWSTR ObjectTypeName; |
| LPWSTR InheritedObjectTypeName; |
| LPWSTR ptstrName; |
| } |
| alias OBJECTS_AND_NAME_W* POBJECTS_AND_NAME_W; |
| |
| static if (_WIN32_WINNT >= 0x501) { |
| struct INHERITED_FROMA { |
| LONG GenerationGap; |
| LPSTR AncestorName; |
| } |
| alias INHERITED_FROMA* PINHERITED_FROMA; |
| |
| struct INHERITED_FROMW { |
| LONG GenerationGap; |
| LPWSTR AncestorName; |
| } |
| alias INHERITED_FROMW* PINHERITED_FROMW; |
| } |
| |
| version (Unicode) { |
| alias TRUSTEEW TRUSTEE; |
| alias ACTRL_ACCESSW ACTRL_ACCESS; |
| alias ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST; |
| alias ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO; |
| alias ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY; |
| alias ACTRL_AUDITW ACTRL_AUDIT; |
| alias ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO; |
| alias EXPLICIT_ACCESSW EXPLICIT_ACCESS; |
| alias TRUSTEE_ACCESSW TRUSTEE_ACCESS; |
| alias OBJECTS_AND_NAME_W OBJECTS_AND_NAME_; |
| static if (_WIN32_WINNT >= 0x501) { |
| alias INHERITED_FROMW INHERITED_FROM; |
| } |
| } else { |
| alias TRUSTEEA TRUSTEE; |
| alias ACTRL_ACCESSA ACTRL_ACCESS; |
| alias ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST; |
| alias ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO; |
| alias ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY; |
| alias ACTRL_AUDITA ACTRL_AUDIT; |
| alias ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO; |
| alias EXPLICIT_ACCESSA EXPLICIT_ACCESS; |
| alias TRUSTEE_ACCESSA TRUSTEE_ACCESS; |
| alias OBJECTS_AND_NAME_A OBJECTS_AND_NAME_; |
| static if (_WIN32_WINNT >= 0x501) { |
| alias INHERITED_FROMA INHERITED_FROM; |
| } |
| } |
| |
| alias TRUSTEE TRUSTEE_; |
| alias TRUSTEE* PTRUSTEE, PTRUSTEE_; |
| alias ACTRL_ACCESS* PACTRL_ACCESS; |
| alias ACTRL_ACCESS_ENTRY_LIST* PACTRL_ACCESS_ENTRY_LIST; |
| alias ACTRL_ACCESS_INFO* PACTRL_ACCESS_INFO; |
| alias ACTRL_ACCESS_ENTRY* PACTRL_ACCESS_ENTRY; |
| alias ACTRL_AUDIT* PACTRL_AUDIT; |
| alias ACTRL_CONTROL_INFO* PACTRL_CONTROL_INFO; |
| alias EXPLICIT_ACCESS EXPLICIT_ACCESS_; |
| alias EXPLICIT_ACCESS* PEXPLICIT_ACCESS, PEXPLICIT_ACCESS_; |
| alias TRUSTEE_ACCESS* PTRUSTEE_ACCESS; |
| alias OBJECTS_AND_NAME_* POBJECTS_AND_NAME_; |
| static if (_WIN32_WINNT >= 0x501) { |
| alias INHERITED_FROM* PINHERITED_FROM; |
| } |