| /** |
| * 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; |
| } |