93 lines
3.5 KiB
C++
93 lines
3.5 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1996 - 1999
|
|
//
|
|
// File: si.h
|
|
//
|
|
// This file contains the definition of the CSecurityInformation
|
|
// base class.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef _SI_H_
|
|
#define _SI_H_
|
|
|
|
class CSecurityInformation : public ISecurityInformation, IEffectivePermission, ISecurityObjectTypeInfo
|
|
{
|
|
protected:
|
|
ULONG m_cRef;
|
|
SE_OBJECT_TYPE m_seType;
|
|
HDPA m_hItemList;
|
|
DWORD m_dwSIFlags;
|
|
LPTSTR m_pszServerName;
|
|
LPTSTR m_pszObjectName;
|
|
HWND m_hwndOwner;
|
|
AUTHZ_RESOURCE_MANAGER_HANDLE m_ResourceManager; //Used for access check
|
|
BOOL m_bIsStandAlone;
|
|
|
|
public:
|
|
CSecurityInformation(SE_OBJECT_TYPE seType);
|
|
virtual ~CSecurityInformation();
|
|
|
|
STDMETHOD(Initialize)(HDPA hItemList,
|
|
DWORD dwFlags,
|
|
LPTSTR pszServer,
|
|
LPTSTR pszObject);
|
|
|
|
// IUnknown methods
|
|
STDMETHOD(QueryInterface)(REFIID, LPVOID *);
|
|
STDMETHOD_(ULONG, AddRef)();
|
|
STDMETHOD_(ULONG, Release)();
|
|
|
|
// ISecurityInformation methods
|
|
STDMETHOD(GetObjectInformation)(PSI_OBJECT_INFO pObjectInfo);
|
|
STDMETHOD(GetSecurity)(SECURITY_INFORMATION si,
|
|
PSECURITY_DESCRIPTOR *ppSD,
|
|
BOOL fDefault);
|
|
STDMETHOD(SetSecurity)(SECURITY_INFORMATION si,
|
|
PSECURITY_DESCRIPTOR pSD);
|
|
STDMETHOD(GetAccessRights)(const GUID* pguidObjectType,
|
|
DWORD dwFlags,
|
|
PSI_ACCESS *ppAccess,
|
|
ULONG *pcAccesses,
|
|
ULONG *piDefaultAccess) PURE;
|
|
STDMETHOD(MapGeneric)(const GUID *pguidObjectType,
|
|
UCHAR *pAceFlags,
|
|
ACCESS_MASK *pmask) PURE;
|
|
STDMETHOD(GetInheritTypes)(PSI_INHERIT_TYPE *ppInheritTypes,
|
|
ULONG *pcInheritTypes) PURE;
|
|
STDMETHOD(PropertySheetPageCallback)(HWND hwnd,
|
|
UINT uMsg,
|
|
SI_PAGE_TYPE uPage);
|
|
|
|
STDMETHOD(GetEffectivePermission) ( const GUID* pguidObjectType,
|
|
PSID pUserSid,
|
|
LPCWSTR pszServerName,
|
|
PSECURITY_DESCRIPTOR pSD,
|
|
POBJECT_TYPE_LIST *ppObjectTypeList,
|
|
ULONG *pcObjectTypeListLength,
|
|
PACCESS_MASK *ppGrantedAccessList,
|
|
ULONG *pcGrantedAccessListLength);
|
|
|
|
STDMETHOD(GetInheritSource)(SECURITY_INFORMATION si,
|
|
PACL pACL,
|
|
PINHERITED_FROM *ppInheritArray) PURE;
|
|
|
|
|
|
protected:
|
|
STDMETHOD(ReadObjectSecurity)(LPCTSTR pszObject,
|
|
SECURITY_INFORMATION si,
|
|
PSECURITY_DESCRIPTOR *ppSD);
|
|
STDMETHOD(WriteObjectSecurity)(LPCTSTR pszObject,
|
|
SECURITY_INFORMATION si,
|
|
PSECURITY_DESCRIPTOR pSD);
|
|
|
|
AUTHZ_RESOURCE_MANAGER_HANDLE GetAUTHZ_RM(){ return m_ResourceManager; }
|
|
|
|
BOOL IsFile(){ return !(m_dwSIFlags & SI_CONTAINER); }
|
|
};
|
|
|
|
#endif /* _SI_H_ */
|