558 lines
14 KiB
C
558 lines
14 KiB
C
/*++ 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__
|
|
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
|
|
#define __ACCESS_CONTROL_API__
|
|
|
|
#include <windows.h>
|
|
#include <accctrl.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
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
|
|
);
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// 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
|
|
|
|
|
|
#pragma option pop /*P_O_Pop*/
|
|
#endif // __ACCESS_CONTROL_API__
|
|
|