AclAPI.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:17k
- /*++ BUILD Version: 0001 // Increment this if a change has global effects
- Copyright (c) 1993-1999, Microsoft Corporation
- Module Name:
- aclapi.h
- Abstract:
- Public
- Structure/constant definitions and typedefines for the Win32 Access
- Control APIs
- --*/
- #ifndef __ACCESS_CONTROL_API__
- #define __ACCESS_CONTROL_API__
- #include <windows.h>
- #include <accctrl.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- //
- // Progress Function:
- // Caller of tree operation implements this Progress function, then
- // passes its function pointer to tree operation.
- // Tree operation invokes Progress function to provide progress and error
- // information to the caller during the potentially long execution
- // of the tree operation. Tree operation provides the name of the object
- // last processed and the error status of the operation on that object.
- // Tree operation also passes the current InvokeSetting value.
- // Caller may change the InvokeSetting value, for example, from "Always"
- // to "Only On Error."
- //
- typedef VOID (*FN_PROGRESS) (
- IN LPWSTR pObjectName, // name of object just processed
- IN DWORD Status, // status of operation on object
- IN OUT PPROG_INVOKE_SETTING pInvokeSetting, // Never, always,
- IN PVOID Args, // Caller specific data
- IN BOOL SecuritySet // Whether security was set
- );
- WINADVAPI
- DWORD
- WINAPI
- SetEntriesInAclA(
- IN ULONG cCountOfExplicitEntries,
- IN PEXPLICIT_ACCESS_A pListOfExplicitEntries,
- IN PACL OldAcl,
- OUT PACL * NewAcl
- );
- WINADVAPI
- DWORD
- WINAPI
- SetEntriesInAclW(
- IN ULONG cCountOfExplicitEntries,
- IN PEXPLICIT_ACCESS_W pListOfExplicitEntries,
- IN PACL OldAcl,
- OUT PACL * NewAcl
- );
- #ifdef UNICODE
- #define SetEntriesInAcl SetEntriesInAclW
- #else
- #define SetEntriesInAcl SetEntriesInAclA
- #endif // !UNICODE
- WINADVAPI
- DWORD
- WINAPI
- GetExplicitEntriesFromAclA(
- IN PACL pacl,
- OUT PULONG pcCountOfExplicitEntries,
- OUT PEXPLICIT_ACCESS_A * pListOfExplicitEntries
- );
- WINADVAPI
- DWORD
- WINAPI
- GetExplicitEntriesFromAclW(
- IN PACL pacl,
- OUT PULONG pcCountOfExplicitEntries,
- OUT PEXPLICIT_ACCESS_W * pListOfExplicitEntries
- );
- #ifdef UNICODE
- #define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclW
- #else
- #define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclA
- #endif // !UNICODE
- WINADVAPI
- DWORD
- WINAPI
- GetEffectiveRightsFromAclA(
- IN PACL pacl,
- IN PTRUSTEE_A pTrustee,
- OUT PACCESS_MASK pAccessRights
- );
- WINADVAPI
- DWORD
- WINAPI
- GetEffectiveRightsFromAclW(
- IN PACL pacl,
- IN PTRUSTEE_W pTrustee,
- OUT PACCESS_MASK pAccessRights
- );
- #ifdef UNICODE
- #define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclW
- #else
- #define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclA
- #endif // !UNICODE
- WINADVAPI
- DWORD
- WINAPI
- GetAuditedPermissionsFromAclA(
- IN PACL pacl,
- IN PTRUSTEE_A pTrustee,
- OUT PACCESS_MASK pSuccessfulAuditedRights,
- OUT PACCESS_MASK pFailedAuditRights
- );
- WINADVAPI
- DWORD
- WINAPI
- GetAuditedPermissionsFromAclW(
- IN PACL pacl,
- IN PTRUSTEE_W pTrustee,
- OUT PACCESS_MASK pSuccessfulAuditedRights,
- OUT PACCESS_MASK pFailedAuditRights
- );
- #ifdef UNICODE
- #define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclW
- #else
- #define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclA
- #endif // !UNICODE
- WINADVAPI
- DWORD
- WINAPI
- GetNamedSecurityInfoA(
- IN LPSTR pObjectName,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- OUT PSID * ppsidOwner,
- OUT PSID * ppsidGroup,
- OUT PACL * ppDacl,
- OUT PACL * ppSacl,
- OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor
- );
- WINADVAPI
- DWORD
- WINAPI
- GetNamedSecurityInfoW(
- IN LPWSTR pObjectName,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- OUT PSID * ppsidOwner,
- OUT PSID * ppsidGroup,
- OUT PACL * ppDacl,
- OUT PACL * ppSacl,
- OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor
- );
- #ifdef UNICODE
- #define GetNamedSecurityInfo GetNamedSecurityInfoW
- #else
- #define GetNamedSecurityInfo GetNamedSecurityInfoA
- #endif // !UNICODE
- WINADVAPI
- DWORD
- WINAPI
- GetSecurityInfo(
- IN HANDLE handle,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- OUT PSID * ppsidOwner,
- OUT PSID * ppsidGroup,
- OUT PACL * ppDacl,
- OUT PACL * ppSacl,
- OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor
- );
- WINADVAPI
- DWORD
- WINAPI
- SetNamedSecurityInfoA(
- IN LPSTR pObjectName,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- IN PSID psidOwner,
- IN PSID psidGroup,
- IN PACL pDacl,
- IN PACL pSacl
- );
- WINADVAPI
- DWORD
- WINAPI
- SetNamedSecurityInfoW(
- IN LPWSTR pObjectName,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- IN PSID psidOwner,
- IN PSID psidGroup,
- IN PACL pDacl,
- IN PACL pSacl
- );
- #ifdef UNICODE
- #define SetNamedSecurityInfo SetNamedSecurityInfoW
- #else
- #define SetNamedSecurityInfo SetNamedSecurityInfoA
- #endif // !UNICODE
- WINADVAPI
- DWORD
- WINAPI
- SetSecurityInfo(
- IN HANDLE handle,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- IN PSID psidOwner,
- IN PSID psidGroup,
- IN PACL pDacl,
- IN PACL pSacl
- );
- WINADVAPI
- DWORD
- WINAPI
- GetInheritanceSourceA(
- IN LPSTR pObjectName,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- IN BOOL Container,
- IN GUID ** pObjectClassGuids OPTIONAL,
- IN DWORD GuidCount,
- IN PACL pAcl,
- IN PFN_OBJECT_MGR_FUNCTS pfnArray OPTIONAL,
- IN PGENERIC_MAPPING pGenericMapping,
- OUT PINHERITED_FROMA pInheritArray
- );
- WINADVAPI
- DWORD
- WINAPI
- GetInheritanceSourceW(
- IN LPWSTR pObjectName,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- IN BOOL Container,
- IN GUID ** pObjectClassGuids OPTIONAL,
- IN DWORD GuidCount,
- IN PACL pAcl,
- IN PFN_OBJECT_MGR_FUNCTS pfnArray OPTIONAL,
- IN PGENERIC_MAPPING pGenericMapping,
- OUT PINHERITED_FROMW pInheritArray
- );
- #ifdef UNICODE
- #define GetInheritanceSource GetInheritanceSourceW
- #else
- #define GetInheritanceSource GetInheritanceSourceA
- #endif // !UNICODE
- WINADVAPI
- DWORD
- WINAPI
- FreeInheritedFromArray(
- IN PINHERITED_FROMW pInheritArray,
- IN USHORT AceCnt,
- IN PFN_OBJECT_MGR_FUNCTS pfnArray OPTIONAL
- );
- WINADVAPI
- DWORD
- WINAPI
- TreeResetNamedSecurityInfoA(
- IN LPSTR pObjectName,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- IN PSID pOwner,
- IN PSID pGroup,
- IN PACL pDacl,
- IN PACL pSacl,
- IN BOOL KeepExplicit,
- IN FN_PROGRESS fnProgress,
- IN PROG_INVOKE_SETTING ProgressInvokeSetting,
- IN PVOID Args
- );
- WINADVAPI
- DWORD
- WINAPI
- TreeResetNamedSecurityInfoW(
- IN LPWSTR pObjectName,
- IN SE_OBJECT_TYPE ObjectType,
- IN SECURITY_INFORMATION SecurityInfo,
- IN PSID pOwner,
- IN PSID pGroup,
- IN PACL pDacl,
- IN PACL pSacl,
- IN BOOL KeepExplicit,
- IN FN_PROGRESS fnProgress,
- IN PROG_INVOKE_SETTING ProgressInvokeSetting,
- IN PVOID Args
- );
- #ifdef UNICODE
- #define TreeResetNamedSecurityInfo TreeResetNamedSecurityInfoW
- #else
- #define TreeResetNamedSecurityInfo TreeResetNamedSecurityInfoA
- #endif // !UNICODE
- //----------------------------------------------------------------------------
- // The following API are provided for trusted servers to use to
- // implement access control on their own objects.
- //----------------------------------------------------------------------------
- WINADVAPI
- 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
- );
- WINADVAPI
- 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
- );
- #ifdef UNICODE
- #define BuildSecurityDescriptor BuildSecurityDescriptorW
- #else
- #define BuildSecurityDescriptor BuildSecurityDescriptorA
- #endif // !UNICODE
- WINADVAPI
- 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
- );
- WINADVAPI
- 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
- );
- #ifdef UNICODE
- #define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsW
- #else
- #define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsA
- #endif // !UNICODE
- //----------------------------------------------------------------------------
- // The following helper API are provided for building
- // access control structures.
- //----------------------------------------------------------------------------
- WINADVAPI
- VOID
- WINAPI
- BuildExplicitAccessWithNameA(
- IN OUT PEXPLICIT_ACCESS_A pExplicitAccess,
- IN LPSTR pTrusteeName,
- IN DWORD AccessPermissions,
- IN ACCESS_MODE AccessMode,
- IN DWORD Inheritance
- );
- WINADVAPI
- VOID
- WINAPI
- BuildExplicitAccessWithNameW(
- IN OUT PEXPLICIT_ACCESS_W pExplicitAccess,
- IN LPWSTR pTrusteeName,
- IN DWORD AccessPermissions,
- IN ACCESS_MODE AccessMode,
- IN DWORD Inheritance
- );
- #ifdef UNICODE
- #define BuildExplicitAccessWithName BuildExplicitAccessWithNameW
- #else
- #define BuildExplicitAccessWithName BuildExplicitAccessWithNameA
- #endif // !UNICODE
- WINADVAPI
- 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
- );
- WINADVAPI
- 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
- );
- #ifdef UNICODE
- #define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameW
- #else
- #define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameA
- #endif // !UNICODE
- WINADVAPI
- VOID
- WINAPI
- BuildTrusteeWithNameA(
- IN OUT PTRUSTEE_A pTrustee,
- IN LPSTR pName
- );
- WINADVAPI
- VOID
- WINAPI
- BuildTrusteeWithNameW(
- IN OUT PTRUSTEE_W pTrustee,
- IN LPWSTR pName
- );
- #ifdef UNICODE
- #define BuildTrusteeWithName BuildTrusteeWithNameW
- #else
- #define BuildTrusteeWithName BuildTrusteeWithNameA
- #endif // !UNICODE
- WINADVAPI
- VOID
- WINAPI
- BuildImpersonateTrusteeA(
- IN OUT PTRUSTEE_A pTrustee,
- IN PTRUSTEE_A pImpersonateTrustee
- );
- WINADVAPI
- VOID
- WINAPI
- BuildImpersonateTrusteeW(
- IN OUT PTRUSTEE_W pTrustee,
- IN PTRUSTEE_W pImpersonateTrustee
- );
- #ifdef UNICODE
- #define BuildImpersonateTrustee BuildImpersonateTrusteeW
- #else
- #define BuildImpersonateTrustee BuildImpersonateTrusteeA
- #endif // !UNICODE
- WINADVAPI
- VOID
- WINAPI
- BuildTrusteeWithSidA(
- IN OUT PTRUSTEE_A pTrustee,
- IN PSID pSid
- );
- WINADVAPI
- VOID
- WINAPI
- BuildTrusteeWithSidW(
- IN OUT PTRUSTEE_W pTrustee,
- IN PSID pSid
- );
- #ifdef UNICODE
- #define BuildTrusteeWithSid BuildTrusteeWithSidW
- #else
- #define BuildTrusteeWithSid BuildTrusteeWithSidA
- #endif // !UNICODE
- WINADVAPI
- VOID
- WINAPI
- BuildTrusteeWithObjectsAndSidA(
- IN OUT PTRUSTEE_A pTrustee,
- IN POBJECTS_AND_SID pObjSid,
- IN GUID * pObjectGuid,
- IN GUID * pInheritedObjectGuid,
- IN PSID pSid
- );
- WINADVAPI
- VOID
- WINAPI
- BuildTrusteeWithObjectsAndSidW(
- IN OUT PTRUSTEE_W pTrustee,
- IN POBJECTS_AND_SID pObjSid,
- IN GUID * pObjectGuid,
- IN GUID * pInheritedObjectGuid,
- IN PSID pSid
- );
- #ifdef UNICODE
- #define BuildTrusteeWithObjectsAndSid BuildTrusteeWithObjectsAndSidW
- #else
- #define BuildTrusteeWithObjectsAndSid BuildTrusteeWithObjectsAndSidA
- #endif // !UNICODE
- WINADVAPI
- VOID
- WINAPI
- BuildTrusteeWithObjectsAndNameA(
- IN OUT PTRUSTEE_A pTrustee,
- IN POBJECTS_AND_NAME_A pObjName,
- IN SE_OBJECT_TYPE ObjectType,
- IN LPSTR ObjectTypeName,
- IN LPSTR InheritedObjectTypeName,
- IN LPSTR Name
- );
- WINADVAPI
- VOID
- WINAPI
- BuildTrusteeWithObjectsAndNameW(
- IN OUT PTRUSTEE_W pTrustee,
- IN POBJECTS_AND_NAME_W pObjName,
- IN SE_OBJECT_TYPE ObjectType,
- IN LPWSTR ObjectTypeName,
- IN LPWSTR InheritedObjectTypeName,
- IN LPWSTR Name
- );
- #ifdef UNICODE
- #define BuildTrusteeWithObjectsAndName BuildTrusteeWithObjectsAndNameW
- #else
- #define BuildTrusteeWithObjectsAndName BuildTrusteeWithObjectsAndNameA
- #endif // !UNICODE
- WINADVAPI
- LPSTR
- WINAPI
- GetTrusteeNameA(
- IN PTRUSTEE_A pTrustee
- );
- WINADVAPI
- LPWSTR
- WINAPI
- GetTrusteeNameW(
- IN PTRUSTEE_W pTrustee
- );
- #ifdef UNICODE
- #define GetTrusteeName GetTrusteeNameW
- #else
- #define GetTrusteeName GetTrusteeNameA
- #endif // !UNICODE
- WINADVAPI
- TRUSTEE_TYPE
- WINAPI
- GetTrusteeTypeA(
- IN PTRUSTEE_A pTrustee
- );
- WINADVAPI
- TRUSTEE_TYPE
- WINAPI
- GetTrusteeTypeW(
- IN PTRUSTEE_W pTrustee
- );
- #ifdef UNICODE
- #define GetTrusteeType GetTrusteeTypeW
- #else
- #define GetTrusteeType GetTrusteeTypeA
- #endif // !UNICODE
- WINADVAPI
- TRUSTEE_FORM
- WINAPI
- GetTrusteeFormA(
- IN PTRUSTEE_A pTrustee
- );
- WINADVAPI
- TRUSTEE_FORM
- WINAPI
- GetTrusteeFormW(
- IN PTRUSTEE_W pTrustee
- );
- #ifdef UNICODE
- #define GetTrusteeForm GetTrusteeFormW
- #else
- #define GetTrusteeForm GetTrusteeFormA
- #endif // !UNICODE
- WINADVAPI
- MULTIPLE_TRUSTEE_OPERATION
- WINAPI
- GetMultipleTrusteeOperationA(
- IN PTRUSTEE_A pTrustee
- );
- WINADVAPI
- MULTIPLE_TRUSTEE_OPERATION
- WINAPI
- GetMultipleTrusteeOperationW(
- IN PTRUSTEE_W pTrustee
- );
- #ifdef UNICODE
- #define GetMultipleTrusteeOperation GetMultipleTrusteeOperationW
- #else
- #define GetMultipleTrusteeOperation GetMultipleTrusteeOperationA
- #endif // !UNICODE
- WINADVAPI
- PTRUSTEE_A
- WINAPI
- GetMultipleTrusteeA(
- IN PTRUSTEE_A pTrustee
- );
- WINADVAPI
- PTRUSTEE_W
- WINAPI
- GetMultipleTrusteeW(
- IN PTRUSTEE_W pTrustee
- );
- #ifdef UNICODE
- #define GetMultipleTrustee GetMultipleTrusteeW
- #else
- #define GetMultipleTrustee GetMultipleTrusteeA
- #endif // !UNICODE
- //
- // Temporary requirement for the technology preview, no longer required
- //
- #define AccProvInit(err)
- #ifdef __cplusplus
- }
- #endif
- #endif // __ACCESS_CONTROL_API__