//+------------------------------------------------------------------------- // // 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_ */