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.
 
 
 
 
 
 

194 lines
5.9 KiB

#ifndef _CCOMPDTA_H
#define _CCOMPDTA_H
// forward decls
class CWirelessManagerFolder;
class CSnapObject;
class CComponentDataImpl:
public IComponentData,
#ifdef WIZ97WIZARDS
public IExtendPropertySheet2,
#else
public IExtendPropertySheet,
#endif
public IExtendContextMenu,
public IPersistStream,
public ISnapinHelp,
public CComObjectRoot
{
BEGIN_COM_MAP(CComponentDataImpl)
COM_INTERFACE_ENTRY(IComponentData)
#ifdef WIZ97WIZARDS
COM_INTERFACE_ENTRY(IExtendPropertySheet2)
#else
COM_INTERFACE_ENTRY(IExtendPropertySheet)
#endif
COM_INTERFACE_ENTRY(IExtendContextMenu)
COM_INTERFACE_ENTRY(ISnapinHelp)
COM_INTERFACE_ENTRY(IPersistStream)
END_COM_MAP()
friend class CComponentImpl;
friend class CDataObject;
CComponentDataImpl();
~CComponentDataImpl();
public:
virtual const CLSID& GetCoClassID() = 0;
public:
// IComponentData interface members
STDMETHOD(Initialize)(LPUNKNOWN pUnknown);
STDMETHOD(CreateComponent)(LPCOMPONENT* ppComponent);
STDMETHOD(Notify)(LPDATAOBJECT pDataobject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param);
STDMETHOD(Destroy)();
STDMETHOD(QueryDataObject)(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT* ppDataObject);
STDMETHOD(GetDisplayInfo)(SCOPEDATAITEM* pScopeDataItem);
STDMETHOD(CompareObjects)(LPDATAOBJECT lpDataObjectA, LPDATAOBJECT lpDataObjectB);
// IExtendPropertySheet interface
public:
STDMETHOD(QueryPagesFor)(LPDATAOBJECT pDataobject);
STDMETHOD(CreatePropertyPages)(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, LPDATAOBJECT pDataobject);
#ifdef WIZ97WIZARDS
STDMETHOD(GetWatermarks)(LPDATAOBJECT pDataobject, HBITMAP* lphWatermark, HBITMAP* lphHeader, HPALETTE* lphPalette, BOOL* bStretch);
#endif
// IExtendContextMenu
public:
STDMETHOD(AddMenuItems)(LPDATAOBJECT pDataObject, LPCONTEXTMENUCALLBACK pCallbackUnknown, long *pInsertionAllowed);
STDMETHOD(Command)(long nCommandID, LPDATAOBJECT pDataObject);
public:
// IPersistStream interface members
STDMETHOD(GetClassID)(CLSID *pClassID);
STDMETHOD(IsDirty)();
STDMETHOD(Load)(IStream *pStm);
STDMETHOD(Save)(IStream *pStm, BOOL fClearDirty);
STDMETHOD(GetSizeMax)(ULARGE_INTEGER *pcbSize);
// ISnapinHelp interface member
public:
STDMETHOD(GetHelpTopic)(LPOLESTR* lpCompiledHelpFile);
#if DBG==1
public:
ULONG InternalAddRef()
{
return CComObjectRoot::InternalAddRef();
}
ULONG InternalRelease()
{
return CComObjectRoot::InternalRelease();
}
#endif // DBG==1
private:
LPCONSOLENAMESPACE m_pConsoleNameSpace; // My interface pointer to the scope pane
LPCONSOLE m_pConsole; // My interface pointer to the console
HSCOPEITEM m_pRootFolderScopeItem;
BOOL m_bIsDirty;
BOOL m_bRsop;
void SetDirty(BOOL b = TRUE) { m_bIsDirty = b; }
void ClearDirty() { m_bIsDirty = FALSE; }
BOOL InternalIsDirty() { return m_bIsDirty; }
void AddScopeItemToResultPane(MMC_COOKIE cookie);
// BOOL IsScopePaneNode(LPDATAOBJECT pDataobject);
HRESULT GetDomainDnsName(CString & strName);
HRESULT GetDomainGPOName(CString & strName);
public:
CComObject <CWirelessManagerFolder>* GetStaticScopeObject () {return m_pScopeRootFolder;};
// the returned interface will be valid for the duration of the call, but if you intend on
// storing it you must AddRef
IGPEInformation* UseGPEInformationInterface() {return m_pGPEInformation;};
IRSOPInformation* UseRSOPInformationInterface() {return m_pRSOPInformation;};
BOOL IsRsop() { return m_bRsop; };
LPCONSOLE GetConsole() {return m_pConsole;};
LPCONSOLENAMESPACE GetConsoleNameSpace () {return m_pConsoleNameSpace;};
void EnumLocation (enum STORAGE_LOCATION enumLocation);
enum STORAGE_LOCATION EnumLocation()
{
return m_enumLocation;
}
void RemoteMachineName (CString sRemoteMachineName) {m_sRemoteMachineName = sRemoteMachineName;}
CString RemoteMachineName () {return m_sRemoteMachineName;}
void DomainGPOName (CString sDomainGPOName) {m_sDomainGPOName = sDomainGPOName;}
CString DomainGPOName () {return m_sDomainGPOName;}
LPPROPERTYSHEETPROVIDER m_pPrshtProvider;
HANDLE GetPolicyStoreHandle()
{
return(m_hPolicyStore);
}
DWORD OpenPolicyStore();
void IssueStorageWarning (BOOL bWarn)
{
m_bStorageWarningIssued = !bWarn;
}
BOOL m_bStorageWarningIssued;
BOOL m_bLocationStorageWarningIssued;
BOOL m_bAttemptReconnect;
private:
CComObject <CWirelessManagerFolder>* m_pScopeRootFolder;
IGPEInformation* m_pGPEInformation;
IRSOPInformation* m_pRSOPInformation;
enum STORAGE_LOCATION m_enumLocation;
HANDLE m_hPolicyStore;
IWbemServices *m_pWbemServices;
CString m_sRemoteMachineName;
CString m_sDomainGPOName;
BOOL m_bDontDisplayRootFolderProperties;
BOOL m_bNeedCleanUpWSA;
#ifdef _DEBUG
friend class CDataObject;
int m_cDataObjects;
#endif
// for winsock
WSADATA wsaData;
};
// TODO: declare registry values appear to conflict with step four and others
class CComponentDataPrimaryImpl : public CComponentDataImpl,
public CComCoClass<CComponentDataPrimaryImpl, &CLSID_Snapin>
{
public:
DECLARE_REGISTRY(CComponentImpl, _T("Wireless.Snapin.1"), _T("Wireless.Snapin"), IDS_SNAPIN_DESC, THREADFLAGS_BOTH)
CComponentDataPrimaryImpl();
virtual const CLSID & GetCoClassID(){ return CLSID_Snapin; }
};
class CComponentDataExtensionImpl : public CComponentDataImpl,
public CComCoClass<CComponentDataExtensionImpl, &CLSID_Extension>
{
public:
DECLARE_REGISTRY(CComponentImpl, _T("Wireless.Extension.1"), _T("Wireless.Extension"), IDS_SNAPIN_DESC, THREADFLAGS_BOTH)
virtual const CLSID & GetCoClassID(){ return CLSID_Extension; }
};
#endif