diff options
Diffstat (limited to '')
-rw-r--r-- | public/sdk/inc/aclapi.h | 519 |
1 files changed, 519 insertions, 0 deletions
diff --git a/public/sdk/inc/aclapi.h b/public/sdk/inc/aclapi.h new file mode 100644 index 000000000..61dd8efbf --- /dev/null +++ b/public/sdk/inc/aclapi.h @@ -0,0 +1,519 @@ +//+------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1993-1996. +// +// File: aclapi.h +// +// Contents: public header file for acl and trusted server access control +// APIs +// +//-------------------------------------------------------------------- +#ifndef __ACCESS_CONTROL_API__ +#define __ACCESS_CONTROL_API__ + +#include <windows.h> +#include <accctrl.h> + +#ifdef __cplusplus +extern "C" { +#endif + +DWORD +WINAPI +SetEntriesInAclW( IN ULONG cCountOfExplicitEntries, + IN PEXPLICIT_ACCESS_W pListOfExplicitEntries, + IN PACL OldAcl, + OUT PACL * NewAcl); + +DWORD +WINAPI +SetEntriesInAclA( IN ULONG cCountOfExplicitEntries, + IN PEXPLICIT_ACCESS_A pListOfExplicitEntries, + IN PACL OldAcl, + OUT PACL * NewAcl); + +#ifdef UNICODE + #define SetEntriesInAcl SetEntriesInAclW +#else + #define SetEntriesInAcl SetEntriesInAclA +#endif + + +DWORD +WINAPI +GetExplicitEntriesFromAclW( IN PACL pacl, + OUT PULONG pcCountOfExplicitEntries, + OUT PEXPLICIT_ACCESS_W * pListOfExplicitEntries); + +DWORD +WINAPI +GetExplicitEntriesFromAclA( IN PACL pacl, + OUT PULONG pcCountOfExplicitEntries, + OUT PEXPLICIT_ACCESS_A * pListOfExplicitEntries); + +#ifdef UNICODE + #define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclW +#else + #define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclA +#endif + + +DWORD +WINAPI +GetEffectiveRightsFromAclW( IN PACL pacl, + IN PTRUSTEE_W pTrustee, + OUT PACCESS_MASK pAccessRights); + +DWORD +WINAPI +GetEffectiveRightsFromAclA( IN PACL pacl, + IN PTRUSTEE_A pTrustee, + OUT PACCESS_MASK pAccessRights); + +#ifdef UNICODE + #define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclW +#else + #define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclA +#endif + + +DWORD +WINAPI +GetAuditedPermissionsFromAclW( IN PACL pacl, + IN PTRUSTEE_W pTrustee, + OUT PACCESS_MASK pSuccessfulAuditedRights, + OUT PACCESS_MASK pFailedAuditRights); + +DWORD +WINAPI +GetAuditedPermissionsFromAclA( IN PACL pacl, + IN PTRUSTEE_A pTrustee, + OUT PACCESS_MASK pSuccessfulAuditedRights, + OUT PACCESS_MASK pFailedAuditRights); + +#ifdef UNICODE + #define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclW +#else + #define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclA +#endif + + + +DWORD +WINAPI +GetNamedSecurityInfoW( IN LPWSTR pObjectName, + IN SE_OBJECT_TYPE ObjectType, + IN SECURITY_INFORMATION SecurityInfo, + OUT PSID * ppsidOowner, + OUT PSID * ppsidGroup, + OUT PACL * ppDacl, + OUT PACL * ppSacl, + OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor); + +DWORD +WINAPI +GetNamedSecurityInfoA( IN LPSTR pObjectName, + IN SE_OBJECT_TYPE ObjectType, + IN SECURITY_INFORMATION SecurityInfo, + OUT PSID * ppsidOowner, + OUT PSID * ppsidGroup, + OUT PACL * ppDacl, + OUT PACL * ppSacl, + OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor); + +#ifdef UNICODE + #define GetNamedSecurityInfo GetNamedSecurityInfoW +#else + #define GetNamedSecurityInfo GetNamedSecurityInfoA +#endif + + +DWORD +WINAPI +GetSecurityInfo( IN HANDLE handle, + IN SE_OBJECT_TYPE ObjectType, + IN SECURITY_INFORMATION SecurityInfo, + OUT PSID * ppsidOowner, + OUT PSID * ppsidGroup, + OUT PACL * ppDacl, + OUT PACL * ppSacl, + OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor); + + +DWORD +WINAPI +SetNamedSecurityInfoW( IN LPWSTR pObjectName, + IN SE_OBJECT_TYPE ObjectType, + IN SECURITY_INFORMATION SecurityInfo, + IN PSID psidOowner, + IN PSID psidGroup, + IN PACL pDacl, + IN PACL pSacl); + +DWORD +WINAPI +SetNamedSecurityInfoA( IN LPSTR pObjectName, + IN SE_OBJECT_TYPE ObjectType, + IN SECURITY_INFORMATION SecurityInfo, + IN PSID psidOowner, + IN PSID psidGroup, + IN PACL pDacl, + IN PACL pSacl); + +#ifdef UNICODE + #define SetNamedSecurityInfo SetNamedSecurityInfoW +#else + #define SetNamedSecurityInfo SetNamedSecurityInfoA +#endif + + +DWORD +WINAPI +SetSecurityInfo( IN HANDLE handle, + IN SE_OBJECT_TYPE ObjectType, + IN SECURITY_INFORMATION SecurityInfo, + IN PSID psidOowner, + IN PSID psidGroup, + IN PACL pDacl, + IN PACL pSacl); + + +//---------------------------------------------------------------------------- +// The following API are provided for trusted servers to use to +// implement access control on their own objects. +//---------------------------------------------------------------------------- + +DWORD +WINAPI +BuildSecurityDescriptorW( IN PTRUSTEE_W pOwner, + IN PTRUSTEE_W pGroup, + IN ULONG cCountOfAccessEntries, + IN PEXPLICIT_ACCESS_W pListOfAccessEntries, + IN ULONG cCountOfAuditEntries, + IN PEXPLICIT_ACCESS_W pListOfAuditEntries, + IN PSECURITY_DESCRIPTOR pOldSD, + OUT PULONG pSizeNewSD, + OUT PSECURITY_DESCRIPTOR * pNewSD); + +DWORD +WINAPI +BuildSecurityDescriptorA( IN PTRUSTEE_A pOwner, + IN PTRUSTEE_A pGroup, + IN ULONG cCountOfAccessEntries, + IN PEXPLICIT_ACCESS_A pListOfAccessEntries, + IN ULONG cCountOfAuditEntries, + IN PEXPLICIT_ACCESS_A pListOfAuditEntries, + IN PSECURITY_DESCRIPTOR pOldSD, + OUT PULONG pSizeNewSD, + OUT PSECURITY_DESCRIPTOR * pNewSD); + + +#ifdef UNICODE + #define BuildSecurityDescriptor BuildSecurityDescriptorW +#else + #define BuildSecurityDescriptor BuildSecurityDescriptorA +#endif + + +DWORD +WINAPI +LookupSecurityDescriptorPartsW( OUT PTRUSTEE_W * pOwner, + OUT PTRUSTEE_W * pGroup, + OUT PULONG cCountOfAccessEntries, + OUT PEXPLICIT_ACCESS_W * pListOfAccessEntries, + OUT PULONG cCountOfAuditEntries, + OUT PEXPLICIT_ACCESS_W * pListOfAuditEntries, + IN PSECURITY_DESCRIPTOR pSD); + +DWORD +WINAPI +LookupSecurityDescriptorPartsA( OUT PTRUSTEE_A * pOwner, + OUT PTRUSTEE_A * pGroup, + OUT PULONG cCountOfAccessEntries, + OUT PEXPLICIT_ACCESS_A * pListOfAccessEntries, + OUT PULONG cCountOfAuditEntries, + OUT PEXPLICIT_ACCESS_A * pListOfAuditEntries, + IN PSECURITY_DESCRIPTOR pSD); + +#ifdef UNICODE + #define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsW +#else + #define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsA +#endif + + +DWORD +WINAPI +GetEffectiveRightsFromSDW( IN PSECURITY_DESCRIPTOR pSD, + IN PTRUSTEE_W pTrustee, + OUT PACCESS_MASK pAccessRights); + +DWORD +WINAPI +GetEffectiveRightsFromSDA( IN PSECURITY_DESCRIPTOR pSD, + IN PTRUSTEE_A pTrustee, + OUT PACCESS_MASK pAccessRights); + +#ifdef UNICODE + #define GetEffectiveRightsFromSD GetEffectiveRightsFromSDW +#else + #define GetEffectiveRightsFromSD GetEffectiveRightsFromSDA +#endif + + +DWORD +WINAPI +GetAuditedPermissionsFromSDW( IN PSECURITY_DESCRIPTOR pSD, + IN PTRUSTEE_W pTrustee, + OUT PACCESS_MASK pSuccessfulAuditedRights, + OUT PACCESS_MASK pFailedAuditRights); + +DWORD +WINAPI +GetAuditedPermissionsFromSDA( IN PSECURITY_DESCRIPTOR pSD, + IN PTRUSTEE_A pTrustee, + OUT PACCESS_MASK pSuccessfulAuditedRights, + OUT PACCESS_MASK pFailedAuditRights); + +#ifdef UNICODE + #define GetAuditedPermissionsFromSD GetAuditedPermissionsFromSDW +#else + #define GetAuditedPermissionsFromSD GetAuditedPermissionsFromSDA +#endif + +//---------------------------------------------------------------------------- +// The following helper API are provided for building +// access control structures. +//---------------------------------------------------------------------------- + +VOID +WINAPI +BuildExplicitAccessWithNameW( IN OUT PEXPLICIT_ACCESS_W pExplicitAccess, + IN LPWSTR pTrusteeName, + IN DWORD AccessPermissions, + IN ACCESS_MODE AccessMode, + IN DWORD Inheritance); + +VOID +WINAPI +BuildExplicitAccessWithNameA( IN OUT PEXPLICIT_ACCESS_A pExplicitAccess, + IN LPSTR pTrusteeName, + IN DWORD AccessPermissions, + IN ACCESS_MODE AccessMode, + IN DWORD Inheritance); + +#ifdef UNICODE + #define BuildExplicitAccessWithName BuildExplicitAccessWithNameW +#else + #define BuildExplicitAccessWithName BuildExplicitAccessWithNameA +#endif + + +VOID +WINAPI +BuildImpersonateExplicitAccessWithNameW( + IN OUT PEXPLICIT_ACCESS_W pExplicitAccess, + IN LPWSTR pTrusteeName, + IN PTRUSTEE_W pTrustee, + IN DWORD AccessPermissions, + IN ACCESS_MODE AccessMode, + IN DWORD Inheritance); + +VOID +WINAPI +BuildImpersonateExplicitAccessWithNameA( + IN OUT PEXPLICIT_ACCESS_A pExplicitAccess, + IN LPSTR pTrusteeName, + IN PTRUSTEE_A pTrustee, + IN DWORD AccessPermissions, + IN ACCESS_MODE AccessMode, + IN DWORD Inheritance); + +#ifdef UNICODE + #define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameW +#else + #define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameA +#endif + + +VOID +WINAPI +BuildTrusteeWithNameW( IN OUT PTRUSTEE_W pTrustee, + IN LPWSTR pName); + +VOID +WINAPI +BuildTrusteeWithNameA( IN OUT PTRUSTEE_A pTrustee, + IN LPSTR pName); + +#ifdef UNICODE + #define BuildTrusteeWithName BuildTrusteeWithNameW +#else + #define BuildTrusteeWithName BuildTrusteeWithNameA +#endif + + +VOID +WINAPI +BuildImpersonateTrusteeW( IN OUT PTRUSTEE_W pTrustee, + IN PTRUSTEE_W pImpersonateTrustee); + +VOID +WINAPI +BuildImpersonateTrusteeA( IN OUT PTRUSTEE_A pTrustee, + IN PTRUSTEE_A pImpersonateTrustee); + +#ifdef UNICODE + #define BuildImpersonateTrustee BuildImpersonateTrusteeW +#else + #define BuildImpersonateTrustee BuildImpersonateTrusteeA +#endif + + +VOID +WINAPI +BuildTrusteeWithSidW( IN OUT PTRUSTEE_W pTrustee, + IN PSID pSid); + +VOID +WINAPI +BuildTrusteeWithSidA( IN OUT PTRUSTEE_A pTrustee, + IN PSID pSid); + +#ifdef UNICODE + #define BuildTrusteeWithSid BuildTrusteeWithSidW +#else + #define BuildTrusteeWithSid BuildTrusteeWithSidA +#endif + + +LPWSTR +WINAPI +GetTrusteeNameW( IN PTRUSTEE_W pTrustee); + +LPSTR +WINAPI +GetTrusteeNameA( IN PTRUSTEE_A pTrustee); + +#ifdef UNICODE + #define GetTrusteeName GetTrusteeNameW +#else + #define GetTrusteeName GetTrusteeNameA +#endif + + +TRUSTEE_TYPE +WINAPI +GetTrusteeTypeW( IN PTRUSTEE_W pTrustee); + +TRUSTEE_TYPE +WINAPI +GetTrusteeTypeA( IN PTRUSTEE_A pTrustee); + +#ifdef UNICODE + #define GetTrusteeType GetTrusteeTypeW +#else + #define GetTrusteeType GetTrusteeTypeA +#endif + + +TRUSTEE_FORM +WINAPI +GetTrusteeFormW( IN PTRUSTEE_W pTrustee); + +TRUSTEE_FORM +WINAPI +GetTrusteeFormA( IN PTRUSTEE_A pTrustee); + +#ifdef UNICODE + #define GetTrusteeForm GetTrusteeFormW +#else + #define GetTrusteeForm GetTrusteeFormA +#endif + + +MULTIPLE_TRUSTEE_OPERATION +WINAPI +GetMultipleTrusteeOperationW( IN PTRUSTEE_W pTrustee); + +MULTIPLE_TRUSTEE_OPERATION +WINAPI +GetMultipleTrusteeOperationA( IN PTRUSTEE_A pTrustee); + +#ifdef UNICODE + #define GetMultipleTrusteeOperation GetMultipleTrusteeOperationW +#else + #define GetMultipleTrusteeOperation GetMultipleTrusteeOperationA +#endif + + +PTRUSTEE_W +WINAPI +GetMultipleTrusteeW( IN PTRUSTEE_W pTrustee); + +PTRUSTEE_A +WINAPI +GetMultipleTrusteeA( IN PTRUSTEE_A pTrustee); + +#ifdef UNICODE + #define GetMultipleTrustee GetMultipleTrusteeW +#else + #define GetMultipleTrustee GetMultipleTrusteeA +#endif + + +void +WINAPI +FreeStgExplicitAccessListW( IN ULONG ccount, + IN PEXPLICIT_ACCESS_W pEA); + +void +WINAPI +FreeStgExplicitAccessListA( IN ULONG ccount, + IN PEXPLICIT_ACCESS_A pEA); + +#ifdef UNICODE + #define FreeStgExplicitAccessList FreeStgExplicitAccessListW +#else + #define FreeStgExplicitAccessList FreeStgExplicitAccessListA +#endif + + +VOID +WINAPI +BuildAccessRequestW( OUT PACCESS_REQUEST_W pAr, + IN LPWSTR Name, + IN DWORD Mask); + +VOID +WINAPI +BuildAccessRequestA( OUT PACCESS_REQUEST_A pAr, + IN LPSTR Name, + IN DWORD Mask); + +#ifdef UNICODE + #define BuildAccessRequest BuildAccessRequestW +#else + #define BuildAccessRequest BuildAccessRequestA +#endif + + +ULONG +WINAPI +NTAccessMaskToProvAccessRights( IN SE_OBJECT_TYPE SeObjectType, + IN BOOL fIsContainer, + IN ACCESS_MASK AccessMask); + +ACCESS_MASK +WINAPI +ProvAccessRightsToNTAccessMask( IN SE_OBJECT_TYPE SeObjectType, + IN ULONG AccessRights); + + +#ifdef __cplusplus +} +#endif +#endif // __ACCESS_CONTROL_API__ + + |