NT4/public/sdk/inc/provapi.h
2020-09-30 17:12:29 +02:00

249 lines
8.4 KiB
C

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