+++ /dev/null
-#ifndef _ACLAPI_H
-#define _ACLAPI_H
-
-#include <windows.h>
-#include <accctrl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-VOID WINAPI BuildExplicitAccessWithNameA(_Inout_ PEXPLICIT_ACCESS_A, _In_opt_ LPSTR, _In_ DWORD, _In_ ACCESS_MODE, _In_ DWORD);
-VOID WINAPI BuildExplicitAccessWithNameW(_Inout_ PEXPLICIT_ACCESS_W, _In_opt_ LPWSTR, _In_ DWORD, _In_ ACCESS_MODE, _In_ DWORD);
-
-DWORD
-WINAPI
-BuildSecurityDescriptorA(
- _In_opt_ PTRUSTEE_A pOwner,
- _In_opt_ PTRUSTEE_A pGroup,
- _In_ ULONG cCountOfAccessEntries,
- _In_reads_opt_(cCountOfAccessEntries) PEXPLICIT_ACCESS_A pListOfAccessEntries,
- _In_ ULONG cCountOfAuditEntries,
- _In_reads_opt_(cCountOfAuditEntries) PEXPLICIT_ACCESS_A pListOfAuditEntries,
- _In_opt_ PSECURITY_DESCRIPTOR pOldSD,
- _Out_ PULONG pSizeNewSD,
- _Outptr_result_bytebuffer_(*pSizeNewSD) PSECURITY_DESCRIPTOR *pNewSD);
-
-DWORD
-WINAPI
-BuildSecurityDescriptorW(
- _In_opt_ PTRUSTEE_W pOwner,
- _In_opt_ PTRUSTEE_W pGroup,
- _In_ ULONG cCountOfAccessEntries,
- _In_reads_opt_(cCountOfAccessEntries) PEXPLICIT_ACCESS_W pListOfAccessEntries,
- _In_ ULONG cCountOfAuditEntries,
- _In_reads_opt_(cCountOfAuditEntries) PEXPLICIT_ACCESS_W pListOfAuditEntries,
- _In_opt_ PSECURITY_DESCRIPTOR pOldSD,
- _Out_ PULONG pSizeNewSD,
- _Outptr_result_bytebuffer_(*pSizeNewSD) PSECURITY_DESCRIPTOR *pNewSD);
-
-VOID WINAPI BuildTrusteeWithNameA(_Inout_ PTRUSTEE_A, _In_opt_ LPSTR);
-VOID WINAPI BuildTrusteeWithNameW(_Inout_ PTRUSTEE_W, _In_opt_ LPWSTR);
-VOID WINAPI BuildTrusteeWithObjectsAndNameA(_Inout_ PTRUSTEE_A, _In_opt_ POBJECTS_AND_NAME_A, _In_opt_ SE_OBJECT_TYPE, _In_opt_ LPSTR, _In_opt_ LPSTR, _In_opt_ LPSTR);
-VOID WINAPI BuildTrusteeWithObjectsAndNameW(_Inout_ PTRUSTEE_W, _In_opt_ POBJECTS_AND_NAME_W, _In_opt_ SE_OBJECT_TYPE, _In_opt_ LPWSTR, _In_opt_ LPWSTR, _In_opt_ LPWSTR);
-VOID WINAPI BuildTrusteeWithObjectsAndSidA(_Inout_ PTRUSTEE_A, _In_opt_ POBJECTS_AND_SID, _In_opt_ GUID*, _In_opt_ GUID*, _In_opt_ PSID);
-VOID WINAPI BuildTrusteeWithObjectsAndSidW(_Inout_ PTRUSTEE_W, _In_opt_ POBJECTS_AND_SID, _In_opt_ GUID*, _In_opt_ GUID*, _In_opt_ PSID);
-VOID WINAPI BuildTrusteeWithSidA(_Inout_ PTRUSTEE_A, _In_opt_ PSID);
-VOID WINAPI BuildTrusteeWithSidW(_Inout_ PTRUSTEE_W, _In_opt_ PSID);
-
-#if (_WIN32_WINNT >= 0x0501)
-DWORD
-WINAPI
-FreeInheritedFromArray(
- _In_reads_(AceCnt) PINHERITED_FROMW pInheritArray,
- _In_ USHORT AceCnt,
- _In_opt_ PFN_OBJECT_MGR_FUNCTS pfnArray);
-#endif
-
-DWORD WINAPI GetAuditedPermissionsFromAclA(_In_ PACL, _In_ PTRUSTEE_A, _Out_ PACCESS_MASK, _Out_ PACCESS_MASK);
-DWORD WINAPI GetAuditedPermissionsFromAclW(_In_ PACL, _In_ PTRUSTEE_W, _Out_ PACCESS_MASK, _Out_ PACCESS_MASK);
-DWORD WINAPI GetEffectiveRightsFromAclA(_In_ PACL, _In_ PTRUSTEE_A, _Out_ PACCESS_MASK);
-DWORD WINAPI GetEffectiveRightsFromAclW(_In_ PACL, _In_ PTRUSTEE_W, _Out_ PACCESS_MASK);
-
-DWORD
-WINAPI
-GetExplicitEntriesFromAclA(
- _In_ PACL pacl,
- _Out_ PULONG pcCountOfExplicitEntries,
- _Outptr_result_buffer_(*pcCountOfExplicitEntries) PEXPLICIT_ACCESS_A *pListOfExplicitEntries);
-
-DWORD
-WINAPI
-GetExplicitEntriesFromAclW(
- _In_ PACL pacl,
- _Out_ PULONG pcCountOfExplicitEntries,
- _Outptr_result_buffer_(*pcCountOfExplicitEntries) PEXPLICIT_ACCESS_W *pListOfExplicitEntries);
-
-#if (_WIN32_WINNT >= 0x0501)
-
-DWORD
-WINAPI
-GetInheritanceSourceA(
- _In_ LPSTR pObjectName,
- _In_ SE_OBJECT_TYPE ObjectType,
- _In_ SECURITY_INFORMATION SecurityInfo,
- _In_ BOOL Container,
- _In_reads_opt_(GuidCount) GUID **pObjectClassGuids,
- _In_ DWORD GuidCount,
- _In_ PACL pAcl,
- _In_opt_ PFN_OBJECT_MGR_FUNCTS pfnArray,
- _In_ PGENERIC_MAPPING pGenericMapping,
- _Out_ PINHERITED_FROMA pInheritArray);
-
-DWORD
-WINAPI
-GetInheritanceSourceW(
- _In_ LPWSTR pObjectName,
- _In_ SE_OBJECT_TYPE ObjectType,
- _In_ SECURITY_INFORMATION SecurityInfo,
- _In_ BOOL Container,
- _In_reads_opt_(GuidCount) GUID **pObjectClassGuids,
- _In_ DWORD GuidCount,
- _In_ PACL pAcl,
- _In_opt_ PFN_OBJECT_MGR_FUNCTS pfnArray,
- _In_ PGENERIC_MAPPING pGenericMapping,
- _Out_ PINHERITED_FROMW pInheritArray);
-
-#endif
-
-DWORD
-WINAPI
-GetNamedSecurityInfoA(
- _In_ LPSTR pObjectName,
- _In_ SE_OBJECT_TYPE ObjectType,
- _In_ SECURITY_INFORMATION SecurityInfo,
- _Out_opt_ PSID *ppsidOwner,
- _Out_opt_ PSID *ppsidGroup,
- _Out_opt_ PACL *ppDacl,
- _Out_opt_ PACL *ppSacl,
- _Out_ PSECURITY_DESCRIPTOR *ppSecurityDescriptor);
-
-DWORD
-WINAPI
-GetNamedSecurityInfoW(
- _In_ LPWSTR pObjectName,
- _In_ SE_OBJECT_TYPE ObjectType,
- _In_ SECURITY_INFORMATION SecurityInfo,
- _Out_opt_ PSID *ppsidOwner,
- _Out_opt_ PSID *ppsidGroup,
- _Out_opt_ PACL *ppDacl,
- _Out_opt_ PACL *ppSacl,
- _Out_ PSECURITY_DESCRIPTOR *ppSecurityDescriptor);
-
-DWORD
-WINAPI
-GetSecurityInfo(
- _In_ HANDLE handle,
- _In_ SE_OBJECT_TYPE ObjectType,
- _In_ SECURITY_INFORMATION SecurityInfo,
- _Out_opt_ PSID *ppsidOwner,
- _Out_opt_ PSID *ppsidGroup,
- _Out_opt_ PACL *ppDacl,
- _Out_opt_ PACL *ppSacl,
- _Out_opt_ PSECURITY_DESCRIPTOR *ppSecurityDescriptor);
-
-TRUSTEE_FORM WINAPI GetTrusteeFormA(_In_ PTRUSTEE_A);
-TRUSTEE_FORM WINAPI GetTrusteeFormW(_In_ PTRUSTEE_W);
-LPSTR WINAPI GetTrusteeNameA(_In_ PTRUSTEE_A);
-LPWSTR WINAPI GetTrusteeNameW(_In_ PTRUSTEE_W);
-TRUSTEE_TYPE WINAPI GetTrusteeTypeA(_In_opt_ PTRUSTEE_A);
-TRUSTEE_TYPE WINAPI GetTrusteeTypeW(_In_opt_ PTRUSTEE_W);
-
-DWORD
-WINAPI
-LookupSecurityDescriptorPartsA(
- _Out_opt_ PTRUSTEE_A *ppOwner,
- _Out_opt_ PTRUSTEE_A *ppGroup,
- _Out_opt_ PULONG pcCountOfAccessEntries,
- _Outptr_result_buffer_maybenull_(*pcCountOfAccessEntries) PEXPLICIT_ACCESS_A *ppListOfAccessEntries,
- _Out_opt_ PULONG pcCountOfAuditEntries,
- _Outptr_result_buffer_maybenull_(*pcCountOfAuditEntries) PEXPLICIT_ACCESS_A *ppListOfAuditEntries,
- _In_ PSECURITY_DESCRIPTOR pSD);
-
-DWORD
-WINAPI
-LookupSecurityDescriptorPartsW(
- _Out_opt_ PTRUSTEE_W *ppOwner,
- _Out_opt_ PTRUSTEE_W *ppGroup,
- _Out_opt_ PULONG pcCountOfAccessEntries,
- _Outptr_result_buffer_maybenull_(*pcCountOfAccessEntries) PEXPLICIT_ACCESS_W *ppListOfAccessEntries,
- _Out_opt_ PULONG pcCountOfAuditEntries,
- _Outptr_result_buffer_maybenull_(*pcCountOfAuditEntries) PEXPLICIT_ACCESS_W *ppListOfAuditEntries,
- _In_ PSECURITY_DESCRIPTOR pSD);
-
-DWORD
-WINAPI
-SetEntriesInAclA(
- _In_ ULONG cCountOfExplicitEntries,
- _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_A pListOfExplicitEntries,
- _In_opt_ PACL OldAcl,
- _Out_ PACL *NewAcl);
-
-DWORD
-WINAPI
-SetEntriesInAclW(
- _In_ ULONG cCountOfExplicitEntries,
- _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_W pListOfExplicitEntries,
- _In_opt_ PACL OldAcl,
- _Out_ PACL *NewAcl);
-
-DWORD WINAPI SetNamedSecurityInfoA(_In_ LPSTR, _In_ SE_OBJECT_TYPE, _In_ SECURITY_INFORMATION, _In_opt_ PSID, _In_opt_ PSID, _In_opt_ PACL, _In_opt_ PACL);
-DWORD WINAPI SetNamedSecurityInfoW(_In_ LPWSTR, _In_ SE_OBJECT_TYPE, _In_ SECURITY_INFORMATION, _In_opt_ PSID, _In_opt_ PSID, _In_opt_ PACL, _In_opt_ PACL);
-DWORD WINAPI SetSecurityInfo(_In_ HANDLE, _In_ SE_OBJECT_TYPE, _In_ SECURITY_INFORMATION, _In_opt_ PSID, _In_opt_ PSID, _In_opt_ PACL, _In_opt_ PACL);
-VOID WINAPI BuildImpersonateExplicitAccessWithNameA(_Inout_ PEXPLICIT_ACCESS_A, _In_opt_ LPSTR, _In_opt_ PTRUSTEE_A, _In_ DWORD, _In_ ACCESS_MODE, _In_ DWORD);
-VOID WINAPI BuildImpersonateExplicitAccessWithNameW(_Inout_ PEXPLICIT_ACCESS_W, _In_opt_ LPWSTR, _In_opt_ PTRUSTEE_W, _In_ DWORD, _In_ ACCESS_MODE, _In_ DWORD);
-VOID WINAPI BuildImpersonateTrusteeA(_Inout_ PTRUSTEE_A, _In_opt_ PTRUSTEE_A);
-VOID WINAPI BuildImpersonateTrusteeW(_Inout_ PTRUSTEE_W, _In_opt_ PTRUSTEE_W);
-PTRUSTEE_A WINAPI GetMultipleTrusteeA(_In_opt_ PTRUSTEE_A);
-PTRUSTEE_W WINAPI GetMultipleTrusteeW(_In_opt_ PTRUSTEE_W);
-MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationA(_In_opt_ PTRUSTEE_A);
-MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationW(_In_opt_ PTRUSTEE_W);
-
-#ifdef UNICODE
-#define BuildExplicitAccessWithName BuildExplicitAccessWithNameW
-#define BuildSecurityDescriptor BuildSecurityDescriptorW
-#define BuildTrusteeWithName BuildTrusteeWithNameW
-#define BuildTrusteeWithObjectsAndName BuildTrusteeWithObjectsAndNameW
-#define BuildTrusteeWithObjectsAndSid BuildTrusteeWithObjectsAndSidW
-#define BuildTrusteeWithSid BuildTrusteeWithSidW
-#define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclW
-#define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclW
-#define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclW
-#define GetInheritanceSource GetInheritanceSourceW
-#define GetNamedSecurityInfo GetNamedSecurityInfoW
-#define GetTrusteeForm GetTrusteeFormW
-#define GetTrusteeName GetTrusteeNameW
-#define GetTrusteeType GetTrusteeTypeW
-#define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsW
-#define SetEntriesInAcl SetEntriesInAclW
-#define SetNamedSecurityInfo SetNamedSecurityInfoW
-#define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameW
-#define BuildImpersonateTrustee BuildImpersonateTrusteeW
-#define GetMultipleTrustee GetMultipleTrusteeW
-#define GetMultipleTrusteeOperation GetMultipleTrusteeOperationW
-#else
-#define BuildExplicitAccessWithName BuildExplicitAccessWithNameA
-#define BuildSecurityDescriptor BuildSecurityDescriptorA
-#define BuildTrusteeWithName BuildTrusteeWithNameA
-#define BuildTrusteeWithObjectsAndName BuildTrusteeWithObjectsAndNameA
-#define BuildTrusteeWithObjectsAndSid BuildTrusteeWithObjectsAndSidA
-#define BuildTrusteeWithSid BuildTrusteeWithSidA
-#define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclA
-#define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclA
-#define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclA
-#define GetInheritanceSource GetInheritanceSourceA
-#define GetNamedSecurityInfo GetNamedSecurityInfoA
-#define GetTrusteeForm GetTrusteeFormA
-#define GetTrusteeName GetTrusteeNameA
-#define GetTrusteeType GetTrusteeTypeA
-#define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsA
-#define SetEntriesInAcl SetEntriesInAclA
-#define SetNamedSecurityInfo SetNamedSecurityInfoA
-#define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameA
-#define BuildImpersonateTrustee BuildImpersonateTrusteeA
-#define GetMultipleTrustee GetMultipleTrusteeA
-#define GetMultipleTrusteeOperation GetMultipleTrusteeOperationA
-#endif /* UNICODE */
-
-#ifdef __cplusplus
-}
-#endif
-#endif