windows-nt/Source/XPSP1/NT/shell/osshell/lmui/ntshrui/permpage.h
2020-09-26 16:20:57 +08:00

91 lines
2.9 KiB
C++

// PermPage.h : Declaration of the standard permissions page class
#ifndef __PERMPAGE_H_INCLUDED__
#define __PERMPAGE_H_INCLUDED__
#include "aclui.h"
class CSecurityInformation : public ISecurityInformation, public CComObjectRoot
{
DECLARE_NOT_AGGREGATABLE(CSecurityInformation)
BEGIN_COM_MAP(CSecurityInformation)
COM_INTERFACE_ENTRY(ISecurityInformation)
END_COM_MAP()
// *** ISecurityInformation methods ***
STDMETHOD(GetObjectInformation) (PSI_OBJECT_INFO pObjectInfo ) = 0;
STDMETHOD(GetSecurity) (SECURITY_INFORMATION RequestedInformation,
PSECURITY_DESCRIPTOR *ppSecurityDescriptor,
BOOL fDefault ) = 0;
STDMETHOD(SetSecurity) (SECURITY_INFORMATION SecurityInformation,
PSECURITY_DESCRIPTOR pSecurityDescriptor ) = 0;
STDMETHOD(GetAccessRights) (const GUID* pguidObjectType,
DWORD dwFlags,
PSI_ACCESS *ppAccess,
ULONG *pcAccesses,
ULONG *piDefaultAccess );
STDMETHOD(MapGeneric) (const GUID *pguidObjectType,
UCHAR *pAceFlags,
ACCESS_MASK *pMask);
STDMETHOD(GetInheritTypes) (PSI_INHERIT_TYPE *ppInheritTypes,
ULONG *pcInheritTypes );
STDMETHOD(PropertySheetPageCallback)(HWND hwnd, UINT uMsg, SI_PAGE_TYPE uPage );
protected:
HRESULT NewDefaultDescriptor(
PSECURITY_DESCRIPTOR* ppsd,
SECURITY_INFORMATION RequestedInformation
);
// this will throw a memory exception where appropriate
HRESULT MakeSelfRelativeCopy(
PSECURITY_DESCRIPTOR psdOriginal,
PSECURITY_DESCRIPTOR* ppsdNew );
};
class CShareSecurityInformation : public CSecurityInformation
{
private:
LPWSTR m_strMachineName;
LPWSTR m_strShareName;
public:
void SetMachineName( LPWSTR pszMachineName )
{
m_strMachineName = pszMachineName;
}
void SetShareName( LPWSTR pszShareName )
{
m_strShareName = pszShareName;
}
// note: these should be LPCTSTR but are left this way for convenience
LPWSTR QueryMachineName()
{
return m_strMachineName;
}
LPWSTR QueryShareName()
{
return m_strShareName;
}
// *** ISecurityInformation methods ***
STDMETHOD(GetObjectInformation) (PSI_OBJECT_INFO pObjectInfo );
};
class CSMBSecurityInformation : public CShareSecurityInformation
{
STDMETHOD(GetSecurity) (SECURITY_INFORMATION RequestedInformation,
PSECURITY_DESCRIPTOR *ppSecurityDescriptor,
BOOL fDefault );
STDMETHOD(SetSecurity) (SECURITY_INFORMATION SecurityInformation,
PSECURITY_DESCRIPTOR pSecurityDescriptor );
public:
// SHARE_INFO_502* m_pvolumeinfo;
PSECURITY_DESCRIPTOR m_pInitialDescriptor;
PSECURITY_DESCRIPTOR* m_ppCurrentDescriptor;
CSMBSecurityInformation();
~CSMBSecurityInformation();
};
#endif // ~__PERMPAGE_H_INCLUDED__