mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
384 lines
16 KiB
384 lines
16 KiB
//+-------------------------------------------------------------------
|
|
//
|
|
// 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__
|
|
|
|
|