blob: 3977aab307aeebe2461470816acaac1d58ec690d [file]
/**
* 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/_aclapi.d)
*/
module core.sys.windows.aclapi;
version (Windows):
version (ANSI) {} else version = Unicode;
pragma(lib, "advapi32");
import core.sys.windows.accctrl, core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winnt;
extern (Windows) nothrow @nogc {
VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD,
ACCESS_MODE, DWORD);
VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD,
ACCESS_MODE, DWORD);
DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG,
PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR,
PULONG, PSECURITY_DESCRIPTOR*);
DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG,
PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR,
PULONG, PSECURITY_DESCRIPTOR*);
VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR);
VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR);
VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A,
SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR);
VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W,
SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR);
VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID,
GUID*, GUID*, PSID);
VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID,
GUID*, GUID*, PSID);
VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID);
VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID);
DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK,
PACCESS_MASK);
DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK,
PACCESS_MASK);
DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK);
DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK);
DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*);
DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*);
static if (_WIN32_WINNT >= 0x501) {
DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE,
SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*,
PGENERIC_MAPPING, PINHERITED_FROMA);
DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE,
SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*,
PGENERIC_MAPPING, PINHERITED_FROMW);
}
DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION,
PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A);
TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W);
LPSTR GetTrusteeNameA(PTRUSTEE_A);
LPWSTR GetTrusteeNameW(PTRUSTEE_W);
TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A);
TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W);
DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG,
PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*,
PSECURITY_DESCRIPTOR);
DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG,
PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*,
PSECURITY_DESCRIPTOR);
DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*);
DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*);
DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
PSID, PSID, PACL, PACL);
DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
PSID, PSID, PACL, PACL);
DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID,
PSID, PACL, PACL);
VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR,
PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD);
VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR,
PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD);
VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A);
VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W);
PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A);
PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W);
MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A);
MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W);
}
version (Unicode) {
alias BuildExplicitAccessWithName = BuildExplicitAccessWithNameW;
alias BuildSecurityDescriptor = BuildSecurityDescriptorW;
alias BuildTrusteeWithName = BuildTrusteeWithNameW;
alias BuildTrusteeWithObjectsAndName = BuildTrusteeWithObjectsAndNameW;
alias BuildTrusteeWithObjectsAndSid = BuildTrusteeWithObjectsAndSidW;
alias BuildTrusteeWithSid = BuildTrusteeWithSidW;
alias GetAuditedPermissionsFromAcl = GetAuditedPermissionsFromAclW;
alias GetEffectiveRightsFromAcl = GetEffectiveRightsFromAclW;
alias GetExplicitEntriesFromAcl = GetExplicitEntriesFromAclW;
alias GetNamedSecurityInfo = GetNamedSecurityInfoW;
alias GetTrusteeForm = GetTrusteeFormW;
alias GetTrusteeName = GetTrusteeNameW;
alias GetTrusteeType = GetTrusteeTypeW;
alias LookupSecurityDescriptorParts = LookupSecurityDescriptorPartsW;
alias SetEntriesInAcl = SetEntriesInAclW;
alias SetNamedSecurityInfo = SetNamedSecurityInfoW;
alias BuildImpersonateExplicitAccessWithName = BuildImpersonateExplicitAccessWithNameW;
alias BuildImpersonateTrustee = BuildImpersonateTrusteeW;
alias GetMultipleTrustee = GetMultipleTrusteeW;
alias GetMultipleTrusteeOperation = GetMultipleTrusteeOperationW;
} else {
alias BuildExplicitAccessWithName = BuildExplicitAccessWithNameA;
alias BuildSecurityDescriptor = BuildSecurityDescriptorA;
alias BuildTrusteeWithName = BuildTrusteeWithNameA;
alias BuildTrusteeWithObjectsAndName = BuildTrusteeWithObjectsAndNameA;
alias BuildTrusteeWithObjectsAndSid = BuildTrusteeWithObjectsAndSidA;
alias BuildTrusteeWithSid = BuildTrusteeWithSidA;
alias GetAuditedPermissionsFromAcl = GetAuditedPermissionsFromAclA;
alias GetEffectiveRightsFromAcl = GetEffectiveRightsFromAclA;
alias GetExplicitEntriesFromAcl = GetExplicitEntriesFromAclA;
alias GetNamedSecurityInfo = GetNamedSecurityInfoA;
alias GetTrusteeForm = GetTrusteeFormA;
alias GetTrusteeName = GetTrusteeNameA;
alias GetTrusteeType = GetTrusteeTypeA;
alias LookupSecurityDescriptorParts = LookupSecurityDescriptorPartsA;
alias SetEntriesInAcl = SetEntriesInAclA;
alias SetNamedSecurityInfo = SetNamedSecurityInfoA;
alias BuildImpersonateExplicitAccessWithName = BuildImpersonateExplicitAccessWithNameA;
alias BuildImpersonateTrustee = BuildImpersonateTrusteeA;
alias GetMultipleTrustee = GetMultipleTrusteeA;
alias GetMultipleTrusteeOperation = GetMultipleTrusteeOperationA;
}