//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 2000. // // File: R E G I S T R A R . H // // Contents: Top level device host object // // Notes: // // Author: mbend 12 Sep 2000 // //---------------------------------------------------------------------------- #pragma once #include "uhres.h" // main symbols #include "upnphost.h" #include "hostp.h" #include "UString.h" #include "DeviceManager.h" #include "ProviderManager.h" // Typedefs ///////////////////////////////////////////////////////////////////////////// // CRegistrar class ATL_NO_VTABLE CRegistrar : public CComObjectRootEx, public CComCoClass, public IUPnPRegistrarLookup, public IUPnPRegistrarPrivate, public IUPnPRegistrar, public IUPnPReregistrar, public ISupportErrorInfo, public IUPnPRegistrarICSSupport { public: CRegistrar(); ~CRegistrar(); DECLARE_CLASSFACTORY_SINGLETON(CRegistrar) DECLARE_REGISTRY_RESOURCEID(IDR_REGISTRAR) DECLARE_NOT_AGGREGATABLE(CRegistrar) BEGIN_COM_MAP(CRegistrar) COM_INTERFACE_ENTRY(IUPnPRegistrarLookup) COM_INTERFACE_ENTRY(IUPnPRegistrarPrivate) COM_INTERFACE_ENTRY(IUPnPRegistrar) COM_INTERFACE_ENTRY(IUPnPReregistrar) COM_INTERFACE_ENTRY(ISupportErrorInfo) COM_INTERFACE_ENTRY(IUPnPRegistrarICSSupport) END_COM_MAP() public: // ISupportErrorInfo methods STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid); // IUPnPRegistrarLookup methods STDMETHOD(GetEventingManager)( /*[in, string]*/ const wchar_t * szUDN, /*[in, string]*/ const wchar_t * szServiceId, /*[out]*/ IUPnPEventingManager ** ppEventingManager); STDMETHOD(GetAutomationProxy)( /*[in, string]*/ const wchar_t * szUDN, /*[in, string]*/ const wchar_t * szServiceId, /*[out]*/ IUPnPAutomationProxy ** ppAutomationProxy); // IUPnPRegistrarPrivate methods STDMETHOD(Initialize)(); STDMETHOD(Shutdown)(); STDMETHOD(GetSCPDText)( /*[in]*/ REFGUID guidPhysicalDeviceIdentifier, /*[in, string]*/ const wchar_t * szUDN, /*[in, string]*/ const wchar_t * szServiceId, /*[out, string]*/ wchar_t ** pszSCPDText, /*[out, string]*/ wchar_t ** pszServiceType); STDMETHOD(GetDescriptionText)( /*[in]*/ REFGUID guidPhysicalDeviceIdentifier, /*[out]*/ BSTR * pbstrDescriptionDocument); // IUPnPRegistrar methods STDMETHOD(RegisterDevice)( /*[in]*/ BSTR bstrXMLDesc, /*[in]*/ BSTR bstrProgIDDeviceControlClass, /*[in]*/ BSTR bstrInitString, /*[in]*/ BSTR bstrContainerId, /*[in]*/ BSTR bstrResourcePath, /*[in]*/ long nLifeTime, /*[out, retval]*/ BSTR * pbstrDeviceIdentifier); STDMETHOD(RegisterRunningDevice)( /*[in]*/ BSTR bstrXMLDesc, /*[in]*/ IUnknown * punkDeviceControl, /*[in]*/ BSTR bstrInitString, /*[in]*/ BSTR bstrResourcePath, /*[in]*/ long nLifeTime, /*[out, retval]*/ BSTR * pbstrDeviceIdentifier); STDMETHOD(RegisterDeviceProvider)( /*[in]*/ BSTR bstrProviderName, /*[in]*/ BSTR bstrProgIDProviderClass, /*[in]*/ BSTR bstrInitString, /*[in]*/ BSTR bstrContainerId); STDMETHOD(GetUniqueDeviceName)( /*[in]*/ BSTR bstrDeviceIdentifier, /*[in]*/ BSTR bstrTemplateUDN, /*[out, retval]*/ BSTR * pbstrUDN); STDMETHOD(UnregisterDevice)( /*[in]*/ BSTR bstrDeviceIdentifier, /*[in]*/ BOOL fPermanent); STDMETHOD(UnregisterDeviceProvider)( /*[in]*/ BSTR bstrProviderName); // IUPnPReregistrar methods STDMETHOD(ReregisterDevice)( /*[in]*/ BSTR bstrDeviceIdentifier, /*[in]*/ BSTR bstrXMLDesc, /*[in]*/ BSTR bstrProgIDDeviceControlClass, /*[in]*/ BSTR bstrInitString, /*[in]*/ BSTR bstrContainerId, /*[in]*/ BSTR bstrResourcePath, /*[in]*/ long nLifeTime); STDMETHOD(ReregisterRunningDevice)( /*[in]*/ BSTR bstrDeviceIdentifier, /*[in]*/ BSTR bstrXMLDesc, /*[in]*/ IUnknown * punkDeviceControl, /*[in]*/ BSTR bstrInitString, /*[in]*/ BSTR bstrResourcePath, /*[in]*/ long nLifeTime); // IUPnPRegistrarICSSupport methods STDMETHOD(SetICSInterfaces)(/*[in]*/ long nCount, /*[in, size_is(nCount)]*/ GUID * arPrivateInterfaceGuids); STDMETHOD(SetICSOff)(); private: HRESULT HrSetAutoStart(); HRESULT HrUnregisterDeviceByPDI(PhysicalDeviceIdentifier & pdi, BOOL fPermanent); CDeviceManager m_deviceManager; CProviderManager m_providerManager; IUPnPDescriptionManagerPtr m_pDescriptionManager; IUPnPDevicePersistenceManagerPtr m_pDevicePersistenceManager; IUPnPValidationManagerPtr m_pValidationManager; IUPnPContainerManagerPtr m_pContainerManager; IUPnPDynamicContentSourcePtr m_pDynamicContentSource; BOOL m_bSetAutoStart; };