windows-nt/Source/XPSP1/NT/shell/osshell/security/rshx32/si.h
2020-09-26 16:20:57 +08:00

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