windows-nt/Source/XPSP1/NT/published/sdk/inc/accprov.h
2020-09-26 16:20:57 +08:00

385 lines
16 KiB
C

//+-------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1993-1999.
//
// File: accprov.h
//
// Contents: public provider independent access control header file
//
// History: 8-94 Created DaveMont
//
//--------------------------------------------------------------------
#ifndef __ACCPROV_H__
#define __ACCPROV_H__
#if _MSC_VER > 1000
#pragma once
#endif
#include <windows.h>
#include <accctrl.h>
#ifdef __cplusplus
extern "C" {
#endif
//
// Flags
//
#define ACTRL_CAP_NONE 0x00000000L // No special capabilities
#define ACTRL_CAP_KNOWS_SIDS 0x00000001L // Understands/handles SIDS
#define ACTRL_CAP_SUPPORTS_HANDLES 0x00000002L // Does handle based calls
#define ACTRL_CLASS_GENERAL 0x00000000L // Capabilities class
//
// interfaces...
//
//
// Capabilities
//
VOID
WINAPI
AccProvGetCapabilities(IN ULONG fClass,
OUT PULONG pulCaps);
typedef VOID (WINAPI *pfAccProvGetCaps) (ULONG fClass,
PULONG pulCaps);
//
// Accessibility
//
DWORD
WINAPI
AccProvIsObjectAccessible(IN LPCWSTR pwszObjectPath,
IN SE_OBJECT_TYPE ObjType);
DWORD
WINAPI
AccProvHandleIsObjectAccessible(IN HANDLE hObject,
IN SE_OBJECT_TYPE ObjType);
typedef DWORD (WINAPI *pfAccProvObjAccess)
(LPCWSTR pwszObjectPath,
SE_OBJECT_TYPE ObjectType);
typedef DWORD (WINAPI *pfAccProvHandleObjAccess)
(HANDLE hObject,
SE_OBJECT_TYPE ObjectType);
//
// Access / auditing requests
//
DWORD
WINAPI
AccProvGrantAccessRights(IN LPCWSTR pwszPath,
IN SE_OBJECT_TYPE ObjectType,
IN PACTRL_ACCESS pAccessList,
IN PACTRL_AUDIT pAuditList,
IN PACTRL_OVERLAPPED pOverlapped);
DWORD
WINAPI
AccProvGrantHandleAccessRights(IN HANDLE hObject,
IN SE_OBJECT_TYPE ObjectType,
IN PACTRL_ACCESS pAccessList,
IN PACTRL_AUDIT pAuditList,
IN PACTRL_OVERLAPPED pOverlapped);
typedef DWORD (WINAPI *pfAccProvAddRights) (LPCWSTR lpObject,
SE_OBJECT_TYPE ObjectType,
PACTRL_ACCESS pAccessList,
PACTRL_AUDIT pAuditList,
PACTRL_OVERLAPPED pOverlapped);
typedef DWORD (WINAPI *pfAccProvHandleAddRights) (
HANDLE hObject,
SE_OBJECT_TYPE ObjectType,
PACTRL_ACCESS pAccessList,
PACTRL_AUDIT pAuditList,
PACTRL_OVERLAPPED pOverlapped);
DWORD
WINAPI
AccProvSetAccessRights(IN LPCWSTR pwszPath,
IN SE_OBJECT_TYPE ObjectType,
IN SECURITY_INFORMATION SecurityInfo,
IN PACTRL_ACCESS pAccessList,
IN PACTRL_AUDIT pAuditList,
IN PTRUSTEE pOwner,
IN PTRUSTEE pGroup,
IN PACTRL_OVERLAPPED pOverlapped);
DWORD
WINAPI
AccProvHandleSetAccessRights(IN HANDLE hObject,
IN SE_OBJECT_TYPE ObjectType,
IN SECURITY_INFORMATION SecurityInfo,
IN PACTRL_ACCESS pAccessList,
IN PACTRL_AUDIT pAuditList,
IN PTRUSTEE pOwner,
IN PTRUSTEE pGroup,
IN PACTRL_OVERLAPPED pOverlapped);
typedef DWORD (WINAPI *pfAccProvSetRights) (LPCWSTR lpObject,
SE_OBJECT_TYPE ObjectType,
SECURITY_INFORMATION SecurityInfo,
PACTRL_ACCESS pAccessList,
PACTRL_AUDIT pAuditList,
PTRUSTEE pOwner,
PTRUSTEE pGroup,
PACTRL_OVERLAPPED pOverlapped);
typedef DWORD (WINAPI *pfAccProvHandleSetRights) (
HANDLE hObject,
SE_OBJECT_TYPE ObjectType,
SECURITY_INFORMATION SecurityInfo,
PACTRL_ACCESS pAccessList,
PACTRL_AUDIT pAuditList,
PTRUSTEE pOwner,
PTRUSTEE pGroup,
PACTRL_OVERLAPPED pOverlapped);
DWORD
WINAPI
AccProvRevokeAccessRights(IN LPCWSTR pwszPath,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR pwszProperty,
IN ULONG cTrustees,
IN PTRUSTEE prgTrustees,
IN PACTRL_OVERLAPPED pOverlapped);
DWORD
WINAPI
AccProvHandleRevokeAccessRights(IN HANDLE hObject,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR pwszProperty,
IN ULONG cTrustees,
IN PTRUSTEE prgTrustees,
IN PACTRL_OVERLAPPED pOverlapped);
DWORD
WINAPI
AccProvRevokeAuditRights(IN LPCWSTR pwszPath,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR pwszProperty,
IN ULONG cTrustees,
IN PTRUSTEE prgTrustees,
IN PACTRL_OVERLAPPED pOverlapped);
DWORD
WINAPI
AccProvHandleRevokeAuditRights(IN HANDLE hObject,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR pwszProperty,
IN ULONG cTrustees,
IN PTRUSTEE prgTrustees,
IN PACTRL_OVERLAPPED pOverlapped);
typedef DWORD (WINAPI *pfAccProvRevoke) (LPCWSTR lpObject,
SE_OBJECT_TYPE ObjectType,
LPCWSTR pwszProperty,
ULONG cTrustees,
PTRUSTEE pTrusteeList,
PACTRL_OVERLAPPED pOverlapped);
typedef DWORD (WINAPI *pfAccProvHandleRevoke) (
HANDLE hObject,
SE_OBJECT_TYPE ObjectType,
LPCWSTR pwszProperty,
ULONG cTrustees,
PTRUSTEE pTrusteeList,
PACTRL_OVERLAPPED pOverlapped);
DWORD
WINAPI
AccProvGetAllRights(IN LPCWSTR pwszPath,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR pwszProperty,
OUT PACTRL_ACCESS *ppAccessList,
OUT PACTRL_AUDIT *ppAuditList,
OUT PTRUSTEE *ppOwner,
OUT PTRUSTEE *ppGroup);
DWORD
WINAPI
AccProvHandleGetAllRights(IN HANDLE hObject,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR pwszProperty,
OUT PACTRL_ACCESS *ppAccessList,
OUT PACTRL_AUDIT *ppAuditList,
OUT PTRUSTEE *ppOwner,
OUT PTRUSTEE *ppGroup);
typedef DWORD (WINAPI *pfAccProvGetRights) (LPCWSTR lpObject,
SE_OBJECT_TYPE ObjectType,
LPCWSTR pwszProperty,
PACTRL_ACCESS *ppAccessList,
PACTRL_AUDIT *ppAuditList,
PTRUSTEE *ppOwner,
PTRUSTEE *ppGroup);
typedef DWORD (WINAPI *pfAccProvHandleGetRights) (
HANDLE hObject,
SE_OBJECT_TYPE ObjectType,
LPCWSTR pwszProperty,
PACTRL_ACCESS *ppAccessList,
PACTRL_AUDIT *ppAuditList,
PTRUSTEE *ppOwner,
PTRUSTEE *ppGroup);
//
// Access/Audit results
//
DWORD
WINAPI
AccProvGetTrusteesAccess(IN LPCWSTR pwszPath,
IN SE_OBJECT_TYPE ObjectType,
IN PTRUSTEE pTrustee,
IN OUT PTRUSTEE_ACCESS pTrusteeAccess);
DWORD
WINAPI
AccProvHandleGetTrusteesAccess(IN HANDLE hObject,
IN SE_OBJECT_TYPE ObjectType,
IN PTRUSTEE pTrustee,
IN OUT PTRUSTEE_ACCESS pTrusteeAccess);
typedef DWORD (WINAPI *pfAccProvTrusteeAccess)
(LPCWSTR pwszPath,
SE_OBJECT_TYPE ObjectType,
PTRUSTEE pTrustee,
PTRUSTEE_ACCESS pTrusteeAccess);
typedef DWORD (WINAPI *pfAccProvHandleTrusteeAccess)
(HANDLE hObject,
SE_OBJECT_TYPE ObjectType,
PTRUSTEE pTrustee,
PTRUSTEE_ACCESS pTrusteeAccess);
DWORD
WINAPI
AccProvIsAccessAudited(IN LPCWSTR pwszPath,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR pwszProperty,
IN PTRUSTEE pTrustee,
IN ACCESS_RIGHTS AuditRights,
OUT PBOOL pfAuditedSuccess,
OUT PBOOL pfAuditedFailure);
DWORD
WINAPI
AccProvHandleIsAccessAudited(IN HANDLE hObject,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR pwszProperty,
IN PTRUSTEE pTrustee,
IN ACCESS_RIGHTS AuditRights,
OUT PBOOL pfAuditedSuccess,
OUT PBOOL pfAuditedFailure);
typedef DWORD (WINAPI *pfAccProvAccessAudit)
(LPCWSTR pwszObjectPath,
SE_OBJECT_TYPE ObjectType,
LPCWSTR pwszProperty,
TRUSTEE Trustee,
ACCESS_RIGHTS ulRequestedRights,
PBOOL pfAuditedSuccess,
PBOOL pfAuditedFailure);
typedef DWORD (WINAPI *pfAccProvHandleAccessAudit)
(HANDLE hObject,
SE_OBJECT_TYPE ObjectType,
LPCWSTR pwszProperty,
TRUSTEE Trustee,
ACCESS_RIGHTS ulRequestedRights,
PBOOL pfAuditedSuccess,
PBOOL pfAuditedFailure);
DWORD
WINAPI
AccProvGetAccessInfoPerObjectType(IN LPCWSTR lpObject,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR lpProperty,
OUT PULONG pcEntries,
OUT PACTRL_ACCESS_INFO *ppAccessInfoList,
OUT PULONG pcRights,
OUT PACTRL_CONTROL_INFOW *ppRightsList,
OUT PULONG pfAccessFlags);
DWORD
WINAPI
AccProvHandleGetAccessInfoPerObjectType(
IN HANDLE hObject,
IN SE_OBJECT_TYPE ObjectType,
IN LPCWSTR lpProperty,
OUT PULONG pcEntries,
OUT PACTRL_ACCESS_INFO *ppAccessInfoList,
OUT PULONG pcRights,
OUT PACTRL_CONTROL_INFOW *ppRightsList,
OUT PULONG pfAccessFlags);
typedef DWORD (WINAPI *pfAccProvGetObjTypeInfo)
(LPCWSTR lpObject,
SE_OBJECT_TYPE ObjectType,
LPCWSTR lpObjType,
PULONG pcEntries,
PACTRL_ACCESS_INFO *ppAccessInfoList,
PULONG pcRights,
PACTRL_CONTROL_INFO *ppRightsList,
PULONG pfAccessFlags);
typedef DWORD (WINAPI *pfAccProvHandleGetObjTypeInfo)
(HANDLE hObject,
SE_OBJECT_TYPE ObjectType,
LPCWSTR lpObjType,
PULONG pcEntries,
PACTRL_ACCESS_INFO *ppAccessInfoList,
PULONG pcRights,
PACTRL_CONTROL_INFO *ppRightsList,
PULONG pfAccessFlags);
//
// Control functions
//
DWORD
WINAPI
AccProvCancelOperation(IN PACTRL_OVERLAPPED pOverlapped);
typedef DWORD (WINAPI *pfAccProvCancelOp) (PACTRL_OVERLAPPED pOverlapped);
DWORD
WINAPI
AccProvGetOperationResults(IN PACTRL_OVERLAPPED pOverlapped,
OUT PDWORD pResults,
OUT PDWORD pcProcessed);
typedef DWORD (WINAPI *pfAccProvGetResults)
(PACTRL_OVERLAPPED pOverlapped,
PDWORD pResults,
PDWORD pcProcessed);
#ifdef __cplusplus
}
#endif
#endif // __ACCPROV_H__