diff options
Diffstat (limited to '')
-rw-r--r-- | public/sdk/inc/provapi.h | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/public/sdk/inc/provapi.h b/public/sdk/inc/provapi.h new file mode 100644 index 000000000..c8ead9651 --- /dev/null +++ b/public/sdk/inc/provapi.h @@ -0,0 +1,248 @@ +//+------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1993 - 1994. +// +// File: provapi.h +// +// Contents: public provider independent access control header file +// +// History: 8-94 Created DaveMont +// +//-------------------------------------------------------------------- +#ifndef __PROVIDER_INDEPENDENT_ACCESS__ +#define __PROVIDER_INDEPENDENT_ACCESS__ + +#include <windows.h> +#include <accctrl.h> +#define PRESUME_KEY PVOID + +//-------------------------------------------------------------------- +// +// access request format +// +//-------------------------------------------------------------------- +typedef struct _PROV_ACCESS_REQUEST +{ + DWORD ulAccessRights; + LPTSTR TrusteeName; +} PROV_ACCESS_REQUEST, *PPROV_ACCESS_REQUEST; + +//-------------------------------------------------------------------- +// +// returned by GetExplicitAccessRights +// +//-------------------------------------------------------------------- +typedef struct _PROV_EXPLICIT_ACCESS +{ + DWORD ulAccessRights; + ACCESS_MODE ulAccessMode; + DWORD ulInheritance; + LPTSTR TrusteeName; +} PROV_EXPLICIT_ACCESS, *PPROV_EXPLICIT_ACCESS; +//-------------------------------------------------------------------- +// +// Object type definition +// +//-------------------------------------------------------------------- +typedef enum _PROV_OBJECT_TYPE +{ + PROV_FILE_OBJECT = 1, + PROV_SERVICE, + PROV_PRINTER, + PROV_REGISTRY_KEY, + PROV_LMSHARE, + PROV_OLE_OBJECT, + PROV_PROVIDER_DEFINED +} PROV_OBJECT_TYPE, *PPROV_OBJECT_TYPE; + + +//+------------------------------------------------------------------------- +#ifdef __cplusplus +extern "C" { +#endif +//+------------------------------------------------------------------------- +// provacc.cxx +//+------------------------------------------------------------------------- +WINAPI +GrantAccessRightsW( IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfAccessRequests, + IN PPROV_ACCESS_REQUEST pListOfAccessRequests); +WINAPI +GrantAccessRightsA( IN LPSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfAccessRequests, + IN PPROV_ACCESS_REQUEST pListOfAccessRequests); +#ifdef UNICODE +#define GrantAccessRights GrantAccessRightsW +#else +#define GrantAccessRights GrantAccessRightsA +#endif // UNICODE +WINAPI +ReplaceAllAccessRightsW( IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfAccessRequests, + IN PPROV_ACCESS_REQUEST pListOfAccessRequests); +WINAPI +ReplaceAllAccessRightsA( IN LPSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfAccessRequests, + IN PPROV_ACCESS_REQUEST pListOfAccessRequests); +#ifdef UNICODE +#define ReplaceAllAccessRights ReplaceAllAccessRightsW +#else +#define ReplaceAllAccessRights ReplaceAllAccessRightsA +#endif // UNICODE +WINAPI +SetAccessRightsW( IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfAccessRequests, + IN PPROV_ACCESS_REQUEST pListOfAccessRequests); +WINAPI +SetAccessRightsA( IN LPSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfAccessRequests, + IN PPROV_ACCESS_REQUEST pListOfAccessRequests); +#ifdef UNICODE +#define SetAccessRights SetAccessRightsW +#else +#define SetAccessRights SetAccessRightsA +#endif // UNICODE + +WINAPI +DenyAccessRightsW( IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfAccessRequests, + IN PPROV_ACCESS_REQUEST pListOfAccessRequests); +WINAPI +DenyAccessRightsA( IN LPSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfAccessRequests, + IN PPROV_ACCESS_REQUEST pListOfAccessRequests); +#ifdef UNICODE +#define DenyAccessRights DenyAccessRightsW +#else +#define DenyAccessRights DenyAccessRightsA +#endif // UNICODE + +WINAPI +RevokeExplicitAccessRightsW(IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfTrusteeNames, + IN LPWSTR *pListOfTrusteeNames); +WINAPI +RevokeExplicitAccessRightsA(IN LPSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN ULONG cCountOfTrusteeNames, + IN LPSTR *pListOfTrusteeNames); +#ifdef UNICODE +#define RevokeExplicitAccessRights RevokeExplicitAccessRightsW +#else +#define RevokeExplicitAccessRights RevokeExplicitAccessRightsA +#endif // UNICODE + +WINAPI +IsAccessPermittedW( IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN LPWSTR pTrusteeName, + IN ACCESS_RIGHTS ulRequestedRights, + OUT PBOOL pbResult); +WINAPI +IsAccessPermittedA( IN LPSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN LPSTR pTrusteeName, + IN ACCESS_RIGHTS ulRequestedRights, + OUT PBOOL pbResult); +#ifdef UNICODE +#define IsAccessPermitted IsAccessPermittedW +#else +#define IsAccessPermitted IsAccessPermittedA +#endif // UNICODE + +WINAPI +GetEffectiveAccessRightsW( IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN LPWSTR pTrusteeName, + OUT PACCESS_RIGHTS pulReturnedAccess); +WINAPI +GetEffectiveAccessRightsA( IN LPSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN LPSTR pTrusteeName, + OUT PACCESS_RIGHTS pulReturnedAccess); +#ifdef UNICODE +#define GetEffectiveAccessRights GetEffectiveAccessRightsW +#else +#define GetEffectiveAccessRights GetEffectiveAccessRightsA +#endif // UNICODE + +WINAPI +GetExplicitAccessRightsW(IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + OUT PULONG pcCountOfExplicitAccesses, + OUT PPROV_EXPLICIT_ACCESS *pListOfExplicitAccesses); +WINAPI +GetExplicitAccessRightsA(IN LPSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + OUT PULONG pcCountOfExplicitAccesses, + OUT PPROV_EXPLICIT_ACCESS *pListOfExplicitAccesses); +#ifdef UNICODE +#define GetExplicitAccessRights GetExplicitAccessRightsW +#else +#define GetExplicitAccessRights GetExplicitAccessRightsA +#endif // UNICODE + +//---------------------------------------------------------------------------- +// from enumapi.cxx +//---------------------------------------------------------------------------- +typedef struct _RESUME_KEY +{ + DWORD (*CallEnumTrustees)(IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN LPWSTR pMachineName, + IN LPWSTR pFilter, + IN BOOL bFilterFullNames, + IN ULONG cSizeOfTrusteeNames, + OUT PULONG pcCountOfTrusteeNames, + OUT LPWSTR *pListOfTrusteeNames, + IN OUT PRESUME_KEY *pRresumeKey); + + DWORD (*CallCloseEnumTrusteesKey)( IN PRESUME_KEY presumekey); + + ULONG ProviderSpecificStart; // resume key must be contiguous(???) +} RESUME_KEY, *PIRESUME_KEY; + +WINAPI +CloseEnumTrusteesKey( IN PRESUME_KEY presumekey); + +WINAPI +EnumTrusteesW( IN LPWSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN LPWSTR pFilter, + IN BOOL bFilterFullNames, + IN ULONG cSizeOfTrusteeNames, + OUT PULONG pcCountOfTrusteeNames, + OUT LPWSTR *pListOfTrusteeNames, + IN OUT PRESUME_KEY *pRresumeKey); + +WINAPI +EnumTrusteesA( IN LPSTR pObjectName, + IN PROV_OBJECT_TYPE ObjectType, + IN LPSTR pFilter, + IN BOOL bFilterFullNames, + IN ULONG cSizeOfTrusteeNames, + OUT PULONG pcCountOfTrusteeNames, + OUT LPSTR *pListOfTrusteeNames, + IN OUT PRESUME_KEY *pRresumeKey); + +#ifdef UNICODE +#define EnumTrustees EnumTrusteesW +#else +#define EnumTrustees EnumTrusteesA +#endif // UNICODE +#ifdef __cplusplus +} +#endif +#endif // __PROVIDER_INDEPENDENT_ACCESS__ + + |