/** * 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 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 AccFree = LocalFree; 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 INHERIT_FLAGS = ULONG, ACCESS_RIGHTS = ULONG;alias PINHERIT_FLAGS = ULONG*, PACCESS_RIGHTS = ULONG*; 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 TRUSTEEA = TRUSTEE_A;alias PTRUSTEE_A = TRUSTEE_A*, PTRUSTEEA = TRUSTEE_A*; struct TRUSTEE_W { TRUSTEE_W* pMultipleTrustee; MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; TRUSTEE_FORM TrusteeForm; TRUSTEE_TYPE TrusteeType; LPWSTR ptstrName;}alias TRUSTEEW = TRUSTEE_W;alias PTRUSTEE_W = TRUSTEEW*, PTRUSTEEW = TRUSTEEW*; struct ACTRL_ACCESS_ENTRYA { TRUSTEE_A Trustee; ULONG fAccessFlags; ACCESS_RIGHTS Access; ACCESS_RIGHTS ProvSpecificAccess; INHERIT_FLAGS Inheritance; LPCSTR lpInheritProperty;}alias PACTRL_ACCESS_ENTRYA = ACTRL_ACCESS_ENTRYA*; struct ACTRL_ACCESS_ENTRYW { TRUSTEE_W Trustee; ULONG fAccessFlags; ACCESS_RIGHTS Access; ACCESS_RIGHTS ProvSpecificAccess; INHERIT_FLAGS Inheritance; LPCWSTR lpInheritProperty;}alias PACTRL_ACCESS_ENTRYW = ACTRL_ACCESS_ENTRYW*; struct ACTRL_ACCESS_ENTRY_LISTA { ULONG cEntries; ACTRL_ACCESS_ENTRYA* pAccessList;}alias PACTRL_ACCESS_ENTRY_LISTA = ACTRL_ACCESS_ENTRY_LISTA*; struct ACTRL_ACCESS_ENTRY_LISTW { ULONG cEntries; ACTRL_ACCESS_ENTRYW* pAccessList;}alias PACTRL_ACCESS_ENTRY_LISTW = ACTRL_ACCESS_ENTRY_LISTW*; struct ACTRL_PROPERTY_ENTRYA { LPCSTR lpProperty; PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; ULONG fListFlags;}alias PACTRL_PROPERTY_ENTRYA = ACTRL_PROPERTY_ENTRYA*; struct ACTRL_PROPERTY_ENTRYW { LPCWSTR lpProperty; PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; ULONG fListFlags;}alias PACTRL_PROPERTY_ENTRYW = ACTRL_PROPERTY_ENTRYW*; struct ACTRL_ACCESSA { ULONG cEntries; PACTRL_PROPERTY_ENTRYA pPropertyAccessList;}alias ACTRL_AUDITA = ACTRL_ACCESSA;alias PACTRL_ACCESSA = ACTRL_ACCESSA*, PACTRL_AUDITA = ACTRL_ACCESSA*; struct ACTRL_ACCESSW { ULONG cEntries; PACTRL_PROPERTY_ENTRYW pPropertyAccessList;}alias ACTRL_AUDITW = ACTRL_ACCESSW;alias PACTRL_ACCESSW = ACTRL_ACCESSW*, PACTRL_AUDITW = ACTRL_ACCESSW*; struct TRUSTEE_ACCESSA { LPSTR lpProperty; ACCESS_RIGHTS Access; ULONG fAccessFlags; ULONG fReturnedAccess;}alias PTRUSTEE_ACCESSA = TRUSTEE_ACCESSA*; struct TRUSTEE_ACCESSW { LPWSTR lpProperty; ACCESS_RIGHTS Access; ULONG fAccessFlags; ULONG fReturnedAccess;}alias PTRUSTEE_ACCESSW = TRUSTEE_ACCESSW*; struct ACTRL_OVERLAPPED { union { PVOID Provider; ULONG Reserved1; } ULONG Reserved2; HANDLE hEvent;}alias PACTRL_OVERLAPPED = ACTRL_OVERLAPPED*; struct ACTRL_ACCESS_INFOA { ULONG fAccessPermission; LPSTR lpAccessPermissionName;}alias PACTRL_ACCESS_INFOA = ACTRL_ACCESS_INFOA*; struct ACTRL_ACCESS_INFOW { ULONG fAccessPermission; LPWSTR lpAccessPermissionName;}alias PACTRL_ACCESS_INFOW = ACTRL_ACCESS_INFOW*; struct ACTRL_CONTROL_INFOA { LPSTR lpControlId; LPSTR lpControlName;}alias PACTRL_CONTROL_INFOA = ACTRL_CONTROL_INFOA*; struct ACTRL_CONTROL_INFOW { LPWSTR lpControlId; LPWSTR lpControlName;}alias PACTRL_CONTROL_INFOW = ACTRL_CONTROL_INFOW*; struct EXPLICIT_ACCESS_A { DWORD grfAccessPermissions; ACCESS_MODE grfAccessMode; DWORD grfInheritance; TRUSTEE_A Trustee;}alias EXPLICIT_ACCESSA = EXPLICIT_ACCESS_A;alias PEXPLICIT_ACCESS_A = EXPLICIT_ACCESS_A*, PEXPLICIT_ACCESSA = EXPLICIT_ACCESS_A*; struct EXPLICIT_ACCESS_W { DWORD grfAccessPermissions; ACCESS_MODE grfAccessMode; DWORD grfInheritance; TRUSTEE_W Trustee;}alias EXPLICIT_ACCESSW = EXPLICIT_ACCESS_W;alias PEXPLICIT_ACCESS_W = EXPLICIT_ACCESS_W*, PEXPLICIT_ACCESSW = EXPLICIT_ACCESS_W*; struct OBJECTS_AND_SID { DWORD ObjectsPresent; GUID ObjectTypeGuid; GUID InheritedObjectTypeGuid; SID* pSid;}alias POBJECTS_AND_SID = OBJECTS_AND_SID*; struct OBJECTS_AND_NAME_A { DWORD ObjectsPresent; SE_OBJECT_TYPE ObjectType; LPSTR ObjectTypeName; LPSTR InheritedObjectTypeName; LPSTR ptstrName;}alias POBJECTS_AND_NAME_A = OBJECTS_AND_NAME_A*; struct OBJECTS_AND_NAME_W { DWORD ObjectsPresent; SE_OBJECT_TYPE ObjectType; LPWSTR ObjectTypeName; LPWSTR InheritedObjectTypeName; LPWSTR ptstrName;}alias POBJECTS_AND_NAME_W = OBJECTS_AND_NAME_W*; static if (_WIN32_WINNT >= 0x501) { struct INHERITED_FROMA { LONG GenerationGap; LPSTR AncestorName; } alias PINHERITED_FROMA = INHERITED_FROMA*; struct INHERITED_FROMW { LONG GenerationGap; LPWSTR AncestorName; } alias PINHERITED_FROMW = INHERITED_FROMW*;} version (Unicode) { alias TRUSTEE = TRUSTEEW; alias ACTRL_ACCESS = ACTRL_ACCESSW; alias ACTRL_ACCESS_ENTRY_LIST = ACTRL_ACCESS_ENTRY_LISTW; alias ACTRL_ACCESS_INFO = ACTRL_ACCESS_INFOW; alias ACTRL_ACCESS_ENTRY = ACTRL_ACCESS_ENTRYW; alias ACTRL_AUDIT = ACTRL_AUDITW; alias ACTRL_CONTROL_INFO = ACTRL_CONTROL_INFOW; alias EXPLICIT_ACCESS = EXPLICIT_ACCESSW; alias TRUSTEE_ACCESS = TRUSTEE_ACCESSW; alias OBJECTS_AND_NAME_ = OBJECTS_AND_NAME_W; static if (_WIN32_WINNT >= 0x501) { alias INHERITED_FROM = INHERITED_FROMW; }} else { alias TRUSTEE = TRUSTEEA; alias ACTRL_ACCESS = ACTRL_ACCESSA; alias ACTRL_ACCESS_ENTRY_LIST = ACTRL_ACCESS_ENTRY_LISTA; alias ACTRL_ACCESS_INFO = ACTRL_ACCESS_INFOA; alias ACTRL_ACCESS_ENTRY = ACTRL_ACCESS_ENTRYA; alias ACTRL_AUDIT = ACTRL_AUDITA; alias ACTRL_CONTROL_INFO = ACTRL_CONTROL_INFOA; alias EXPLICIT_ACCESS = EXPLICIT_ACCESSA; alias TRUSTEE_ACCESS = TRUSTEE_ACCESSA; alias OBJECTS_AND_NAME_ = OBJECTS_AND_NAME_A; static if (_WIN32_WINNT >= 0x501) { alias INHERITED_FROM = INHERITED_FROMA; }} alias TRUSTEE_ = TRUSTEE;alias PTRUSTEE = TRUSTEE*, PTRUSTEE_ = TRUSTEE*;alias PACTRL_ACCESS = ACTRL_ACCESS*;alias PACTRL_ACCESS_ENTRY_LIST = ACTRL_ACCESS_ENTRY_LIST*;alias PACTRL_ACCESS_INFO = ACTRL_ACCESS_INFO*;alias PACTRL_ACCESS_ENTRY = ACTRL_ACCESS_ENTRY*;alias PACTRL_AUDIT = ACTRL_AUDIT*;alias PACTRL_CONTROL_INFO = ACTRL_CONTROL_INFO*;alias EXPLICIT_ACCESS_ = EXPLICIT_ACCESS;alias PEXPLICIT_ACCESS = EXPLICIT_ACCESS*, PEXPLICIT_ACCESS_ = EXPLICIT_ACCESS*;alias PTRUSTEE_ACCESS = TRUSTEE_ACCESS*;alias POBJECTS_AND_NAME_ = OBJECTS_AND_NAME_*;static if (_WIN32_WINNT >= 0x501) { alias PINHERITED_FROM = INHERITED_FROM*;}
/**
* 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 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 AccFree = LocalFree;
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 INHERIT_FLAGS = ULONG, ACCESS_RIGHTS = ULONG;
alias PINHERIT_FLAGS = ULONG*, PACCESS_RIGHTS = ULONG*;
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 TRUSTEEA = TRUSTEE_A;
alias PTRUSTEE_A = TRUSTEE_A*, PTRUSTEEA = TRUSTEE_A*;
struct TRUSTEE_W {
TRUSTEE_W* pMultipleTrustee;
MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
TRUSTEE_FORM TrusteeForm;
TRUSTEE_TYPE TrusteeType;
LPWSTR ptstrName;
}
alias TRUSTEEW = TRUSTEE_W;
alias PTRUSTEE_W = TRUSTEEW*, PTRUSTEEW = TRUSTEEW*;
struct ACTRL_ACCESS_ENTRYA {
TRUSTEE_A Trustee;
ULONG fAccessFlags;
ACCESS_RIGHTS Access;
ACCESS_RIGHTS ProvSpecificAccess;
INHERIT_FLAGS Inheritance;
LPCSTR lpInheritProperty;
}
alias PACTRL_ACCESS_ENTRYA = ACTRL_ACCESS_ENTRYA*;
struct ACTRL_ACCESS_ENTRYW {
TRUSTEE_W Trustee;
ULONG fAccessFlags;
ACCESS_RIGHTS Access;
ACCESS_RIGHTS ProvSpecificAccess;
INHERIT_FLAGS Inheritance;
LPCWSTR lpInheritProperty;
}
alias PACTRL_ACCESS_ENTRYW = ACTRL_ACCESS_ENTRYW*;
struct ACTRL_ACCESS_ENTRY_LISTA {
ULONG cEntries;
ACTRL_ACCESS_ENTRYA* pAccessList;
}
alias PACTRL_ACCESS_ENTRY_LISTA = ACTRL_ACCESS_ENTRY_LISTA*;
struct ACTRL_ACCESS_ENTRY_LISTW {
ULONG cEntries;
ACTRL_ACCESS_ENTRYW* pAccessList;
}
alias PACTRL_ACCESS_ENTRY_LISTW = ACTRL_ACCESS_ENTRY_LISTW*;
struct ACTRL_PROPERTY_ENTRYA {
LPCSTR lpProperty;
PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList;
ULONG fListFlags;
}
alias PACTRL_PROPERTY_ENTRYA = ACTRL_PROPERTY_ENTRYA*;
struct ACTRL_PROPERTY_ENTRYW {
LPCWSTR lpProperty;
PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList;
ULONG fListFlags;
}
alias PACTRL_PROPERTY_ENTRYW = ACTRL_PROPERTY_ENTRYW*;
struct ACTRL_ACCESSA {
ULONG cEntries;
PACTRL_PROPERTY_ENTRYA pPropertyAccessList;
}
alias ACTRL_AUDITA = ACTRL_ACCESSA;
alias PACTRL_ACCESSA = ACTRL_ACCESSA*, PACTRL_AUDITA = ACTRL_ACCESSA*;
struct ACTRL_ACCESSW {
ULONG cEntries;
PACTRL_PROPERTY_ENTRYW pPropertyAccessList;
}
alias ACTRL_AUDITW = ACTRL_ACCESSW;
alias PACTRL_ACCESSW = ACTRL_ACCESSW*, PACTRL_AUDITW = ACTRL_ACCESSW*;
struct TRUSTEE_ACCESSA {
LPSTR lpProperty;
ACCESS_RIGHTS Access;
ULONG fAccessFlags;
ULONG fReturnedAccess;
}
alias PTRUSTEE_ACCESSA = TRUSTEE_ACCESSA*;
struct TRUSTEE_ACCESSW {
LPWSTR lpProperty;
ACCESS_RIGHTS Access;
ULONG fAccessFlags;
ULONG fReturnedAccess;
}
alias PTRUSTEE_ACCESSW = TRUSTEE_ACCESSW*;
struct ACTRL_OVERLAPPED {
union {
PVOID Provider;
ULONG Reserved1;
}
ULONG Reserved2;
HANDLE hEvent;
}
alias PACTRL_OVERLAPPED = ACTRL_OVERLAPPED*;
struct ACTRL_ACCESS_INFOA {
ULONG fAccessPermission;
LPSTR lpAccessPermissionName;
}
alias PACTRL_ACCESS_INFOA = ACTRL_ACCESS_INFOA*;
struct ACTRL_ACCESS_INFOW {
ULONG fAccessPermission;
LPWSTR lpAccessPermissionName;
}
alias PACTRL_ACCESS_INFOW = ACTRL_ACCESS_INFOW*;
struct ACTRL_CONTROL_INFOA {
LPSTR lpControlId;
LPSTR lpControlName;
}
alias PACTRL_CONTROL_INFOA = ACTRL_CONTROL_INFOA*;
struct ACTRL_CONTROL_INFOW {
LPWSTR lpControlId;
LPWSTR lpControlName;
}
alias PACTRL_CONTROL_INFOW = ACTRL_CONTROL_INFOW*;
struct EXPLICIT_ACCESS_A {
DWORD grfAccessPermissions;
ACCESS_MODE grfAccessMode;
DWORD grfInheritance;
TRUSTEE_A Trustee;
}
alias EXPLICIT_ACCESSA = EXPLICIT_ACCESS_A;
alias PEXPLICIT_ACCESS_A = EXPLICIT_ACCESS_A*, PEXPLICIT_ACCESSA = EXPLICIT_ACCESS_A*;
struct EXPLICIT_ACCESS_W {
DWORD grfAccessPermissions;
ACCESS_MODE grfAccessMode;
DWORD grfInheritance;
TRUSTEE_W Trustee;
}
alias EXPLICIT_ACCESSW = EXPLICIT_ACCESS_W;
alias PEXPLICIT_ACCESS_W = EXPLICIT_ACCESS_W*, PEXPLICIT_ACCESSW = EXPLICIT_ACCESS_W*;
struct OBJECTS_AND_SID {
DWORD ObjectsPresent;
GUID ObjectTypeGuid;
GUID InheritedObjectTypeGuid;
SID* pSid;
}
alias POBJECTS_AND_SID = OBJECTS_AND_SID*;
struct OBJECTS_AND_NAME_A {
DWORD ObjectsPresent;
SE_OBJECT_TYPE ObjectType;
LPSTR ObjectTypeName;
LPSTR InheritedObjectTypeName;
LPSTR ptstrName;
}
alias POBJECTS_AND_NAME_A = OBJECTS_AND_NAME_A*;
struct OBJECTS_AND_NAME_W {
DWORD ObjectsPresent;
SE_OBJECT_TYPE ObjectType;
LPWSTR ObjectTypeName;
LPWSTR InheritedObjectTypeName;
LPWSTR ptstrName;
}
alias POBJECTS_AND_NAME_W = OBJECTS_AND_NAME_W*;
static if (_WIN32_WINNT >= 0x501) {
struct INHERITED_FROMA {
LONG GenerationGap;
LPSTR AncestorName;
}
alias PINHERITED_FROMA = INHERITED_FROMA*;
struct INHERITED_FROMW {
LONG GenerationGap;
LPWSTR AncestorName;
}
alias PINHERITED_FROMW = INHERITED_FROMW*;
}
version (Unicode) {
alias TRUSTEE = TRUSTEEW;
alias ACTRL_ACCESS = ACTRL_ACCESSW;
alias ACTRL_ACCESS_ENTRY_LIST = ACTRL_ACCESS_ENTRY_LISTW;
alias ACTRL_ACCESS_INFO = ACTRL_ACCESS_INFOW;
alias ACTRL_ACCESS_ENTRY = ACTRL_ACCESS_ENTRYW;
alias ACTRL_AUDIT = ACTRL_AUDITW;
alias ACTRL_CONTROL_INFO = ACTRL_CONTROL_INFOW;
alias EXPLICIT_ACCESS = EXPLICIT_ACCESSW;
alias TRUSTEE_ACCESS = TRUSTEE_ACCESSW;
alias OBJECTS_AND_NAME_ = OBJECTS_AND_NAME_W;
static if (_WIN32_WINNT >= 0x501) {
alias INHERITED_FROM = INHERITED_FROMW;
}
} else {
alias TRUSTEE = TRUSTEEA;
alias ACTRL_ACCESS = ACTRL_ACCESSA;
alias ACTRL_ACCESS_ENTRY_LIST = ACTRL_ACCESS_ENTRY_LISTA;
alias ACTRL_ACCESS_INFO = ACTRL_ACCESS_INFOA;
alias ACTRL_ACCESS_ENTRY = ACTRL_ACCESS_ENTRYA;
alias ACTRL_AUDIT = ACTRL_AUDITA;
alias ACTRL_CONTROL_INFO = ACTRL_CONTROL_INFOA;
alias EXPLICIT_ACCESS = EXPLICIT_ACCESSA;
alias TRUSTEE_ACCESS = TRUSTEE_ACCESSA;
alias OBJECTS_AND_NAME_ = OBJECTS_AND_NAME_A;
static if (_WIN32_WINNT >= 0x501) {
alias INHERITED_FROM = INHERITED_FROMA;
}
}
alias TRUSTEE_ = TRUSTEE;
alias PTRUSTEE = TRUSTEE*, PTRUSTEE_ = TRUSTEE*;
alias PACTRL_ACCESS = ACTRL_ACCESS*;
alias PACTRL_ACCESS_ENTRY_LIST = ACTRL_ACCESS_ENTRY_LIST*;
alias PACTRL_ACCESS_INFO = ACTRL_ACCESS_INFO*;
alias PACTRL_ACCESS_ENTRY = ACTRL_ACCESS_ENTRY*;
alias PACTRL_AUDIT = ACTRL_AUDIT*;
alias PACTRL_CONTROL_INFO = ACTRL_CONTROL_INFO*;
alias EXPLICIT_ACCESS_ = EXPLICIT_ACCESS;
alias PEXPLICIT_ACCESS = EXPLICIT_ACCESS*, PEXPLICIT_ACCESS_ = EXPLICIT_ACCESS*;
alias PTRUSTEE_ACCESS = TRUSTEE_ACCESS*;
alias POBJECTS_AND_NAME_ = OBJECTS_AND_NAME_*;
static if (_WIN32_WINNT >= 0x501) {
alias PINHERITED_FROM = INHERITED_FROM*;
}