91 lines
2.9 KiB
C++
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__
|