Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// 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__
|