111 lines
2.8 KiB
C++
111 lines
2.8 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)(
|
|
IN PSI_OBJECT_INFO pObjectInfo
|
|
) = 0;
|
|
STDMETHOD(GetSecurity)(
|
|
IN SECURITY_INFORMATION RequestedInformation,
|
|
OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor,
|
|
IN BOOL fDefault
|
|
) = 0;
|
|
STDMETHOD(SetSecurity)(
|
|
IN SECURITY_INFORMATION SecurityInformation,
|
|
IN 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(
|
|
OUT PSECURITY_DESCRIPTOR *ppsd,
|
|
IN SECURITY_INFORMATION RequestedInformation
|
|
);
|
|
|
|
HRESULT
|
|
MakeSelfRelativeCopy(
|
|
IN PSECURITY_DESCRIPTOR psdOriginal,
|
|
OUT PSECURITY_DESCRIPTOR *ppsdNew
|
|
);
|
|
};
|
|
|
|
class CShareSecurityInformation : public CSecurityInformation
|
|
{
|
|
private:
|
|
CString m_strMachineName;
|
|
CString m_strShareName;
|
|
CString m_strPageTitle;
|
|
public:
|
|
void SetMachineName( LPCTSTR pszMachineName )
|
|
{
|
|
m_strMachineName = pszMachineName;
|
|
}
|
|
void SetShareName( LPCTSTR pszShareName )
|
|
{
|
|
m_strShareName = pszShareName;
|
|
}
|
|
void SetPageTitle( LPCTSTR pszPageTitle )
|
|
{
|
|
m_strPageTitle = pszPageTitle;
|
|
}
|
|
// note: these should be LPCTSTR but are left this way for convenience
|
|
LPTSTR QueryMachineName()
|
|
{
|
|
return (m_strMachineName.IsEmpty())
|
|
? NULL
|
|
: const_cast<LPTSTR>((LPCTSTR)m_strMachineName);
|
|
}
|
|
LPTSTR QueryShareName()
|
|
{
|
|
return const_cast<LPTSTR>((LPCTSTR)m_strShareName);
|
|
}
|
|
LPTSTR QueryPageTitle()
|
|
{
|
|
return const_cast<LPTSTR>((LPCTSTR)m_strPageTitle);
|
|
}
|
|
|
|
// *** ISecurityInformation methods ***
|
|
STDMETHOD(GetObjectInformation) (PSI_OBJECT_INFO pObjectInfo );
|
|
};
|
|
|
|
HRESULT
|
|
MyCreateShareSecurityPage(
|
|
IN LPPROPERTYSHEETCALLBACK pCallBack,
|
|
IN CShareSecurityInformation *pSecInfo,
|
|
IN LPCTSTR pszMachineName,
|
|
IN LPCTSTR pszShareName
|
|
);
|
|
|
|
#endif // ~__PERMPAGE_H_INCLUDED__
|