123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660 |
- /*++ 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__
|