//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (c) Microsoft Corporation. All rights reserved. // // File: U P N P H O S T . I D L // // Contents: Objects and interfaces for hosting UPnP Devices // //---------------------------------------------------------------------------- cpp_quote("//+-------------------------------------------------------------------------") cpp_quote("//") cpp_quote("// Microsoft Windows") cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.") cpp_quote("//") cpp_quote("//--------------------------------------------------------------------------") #ifndef DO_NO_IMPORTS import "ocidl.idl"; #endif // Reserved GUIDS for our use // // 204810b3-73b2-11d4-bf42-00b0d0118b56 LIBID_UPnPHostLib // 204810b4-73b2-11d4-bf42-00b0d0118b56 IID_IUPnPEventSink // 204810b5-73b2-11d4-bf42-00b0d0118b56 IID_IUPnPEventSource // 204810b6-73b2-11d4-bf42-00b0d0118b56 IID_IUPnPRegistrar // 204810b7-73b2-11d4-bf42-00b0d0118b56 IID_IUPnPReregistrar // 204810b8-73b2-11d4-bf42-00b0d0118b56 IID_IUPnPDeviceProvider // 204810b9-73b2-11d4-bf42-00b0d0118b56 CLSID_UPnPRegistrar // 204810ba-73b2-11d4-bf42-00b0d0118b56 IID_IUPnPDeviceControl // 204810bb-73b2-11d4-bf42-00b0d0118b56 // 204810bc-73b2-11d4-bf42-00b0d0118b56 // 204810bd-73b2-11d4-bf42-00b0d0118b56 // 204810be-73b2-11d4-bf42-00b0d0118b56 // 204810bf-73b2-11d4-bf42-00b0d0118b56 // 204810c0-73b2-11d4-bf42-00b0d0118b56 // 204810c1-73b2-11d4-bf42-00b0d0118b56 // 204810c2-73b2-11d4-bf42-00b0d0118b56 // 204810c3-73b2-11d4-bf42-00b0d0118b56 // 204810c4-73b2-11d4-bf42-00b0d0118b56 // 204810c5-73b2-11d4-bf42-00b0d0118b56 // 204810c6-73b2-11d4-bf42-00b0d0118b56 // 204810c7-73b2-11d4-bf42-00b0d0118b56 // 204810c8-73b2-11d4-bf42-00b0d0118b56 // 204810c9-73b2-11d4-bf42-00b0d0118b56 // 204810ca-73b2-11d4-bf42-00b0d0118b56 // 204810cb-73b2-11d4-bf42-00b0d0118b56 // 204810cc-73b2-11d4-bf42-00b0d0118b56 // 204810cd-73b2-11d4-bf42-00b0d0118b56 // .... // 20481499-73b2-11d4-bf42-00b0d0118b56 // 2048149a-73b2-11d4-bf42-00b0d0118b56 ///////////////////////////////////// // Interface forward declarations interface IUPnPEventSink; interface IUPnPEventSource; interface IUPnPRegistrar; interface IUPnPReregistrar; interface IUPnPDeviceControl; interface IUPnPDeviceProvider; //////////////////////////////////// // Error definitions cpp_quote("#define UPNP_E_REQUIRED_ELEMENT_ERROR MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA020)") cpp_quote("#define UPNP_E_DUPLICATE_NOT_ALLOWED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA021)") cpp_quote("#define UPNP_E_DUPLICATE_SERVICE_ID MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA022)") cpp_quote("#define UPNP_E_INVALID_DESCRIPTION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA023)") cpp_quote("#define UPNP_E_INVALID_SERVICE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA024)") cpp_quote("#define UPNP_E_INVALID_ICON MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA025)") cpp_quote("#define UPNP_E_INVALID_XML MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA026)") cpp_quote("#define UPNP_E_INVALID_ROOT_NAMESPACE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA027)") cpp_quote("#define UPNP_E_SUFFIX_TOO_LONG MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA028)") cpp_quote("#define UPNP_E_URLBASE_PRESENT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA029)") cpp_quote("#define UPNP_E_VALUE_TOO_LONG MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA030)") cpp_quote("#define UPNP_E_DEVICE_RUNNING MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA031)") //////////////////////////////////// // Interface definitions [ uuid(204810b4-73b2-11d4-bf42-00b0d0118b56), pointer_default(unique) ] interface IUPnPEventSink: IUnknown { [helpstring("method OnStateChanged"), hidden] HRESULT OnStateChanged( [in] DWORD cChanges, [in, size_is(cChanges)] DISPID rgdispidChanges[]); [helpstring("method OnStateChangedSafe")] HRESULT OnStateChangedSafe( [in] VARIANT varsadispidChanges); } [ uuid(204810b5-73b2-11d4-bf42-00b0d0118b56), pointer_default(unique) ] interface IUPnPEventSource: IUnknown { [helpstring("method Advise")] HRESULT Advise( [in] IUPnPEventSink * pesSubscriber); [helpstring("method Unadvise")] HRESULT Unadvise( [in] IUPnPEventSink * pesSubscriber); } [ uuid(204810b6-73b2-11d4-bf42-00b0d0118b56), pointer_default(unique) ] interface IUPnPRegistrar : IUnknown { HRESULT RegisterDevice( [in] BSTR bstrXMLDesc, [in] BSTR bstrProgIDDeviceControlClass, [in] BSTR bstrInitString, [in] BSTR bstrContainerId, [in] BSTR bstrResourcePath, [in] long nLifeTime, [out, retval] BSTR * pbstrDeviceIdentifier); HRESULT RegisterRunningDevice( [in] BSTR bstrXMLDesc, [in] IUnknown * punkDeviceControl, [in] BSTR bstrInitString, [in] BSTR bstrResourcePath, [in] long nLifeTime, [out, retval] BSTR * pbstrDeviceIdentifier); HRESULT RegisterDeviceProvider( [in] BSTR bstrProviderName, [in] BSTR bstrProgIDProviderClass, [in] BSTR bstrInitString, [in] BSTR bstrContainerId); HRESULT GetUniqueDeviceName( [in] BSTR bstrDeviceIdentifier, [in] BSTR bstrTemplateUDN, [out, retval] BSTR * pbstrUDN); HRESULT UnregisterDevice( [in] BSTR bstrDeviceIdentifier, [in] BOOL fPermanent); HRESULT UnregisterDeviceProvider( [in] BSTR bstrProviderName); } [ uuid(204810b7-73b2-11d4-bf42-00b0d0118b56), pointer_default(unique) ] interface IUPnPReregistrar : IUnknown { HRESULT ReregisterDevice( [in] BSTR bstrDeviceIdentifier, [in] BSTR bstrXMLDesc, [in] BSTR bstrProgIDDeviceControlClass, [in] BSTR bstrInitString, [in] BSTR bstrContainerId, [in] BSTR bstrResourcePath, [in] long nLifeTime); HRESULT ReregisterRunningDevice( [in] BSTR bstrDeviceIdentifier, [in] BSTR bstrXMLDesc, [in] IUnknown * punkDeviceControl, [in] BSTR bstrInitString, [in] BSTR bstrResourcePath, [in] long nLifeTime); } [ uuid(204810ba-73b2-11d4-bf42-00b0d0118b56), pointer_default(unique), ] interface IUPnPDeviceControl : IUnknown { HRESULT Initialize( [in] BSTR bstrXMLDesc, [in] BSTR bstrDeviceIdentifier, [in] BSTR bstrInitString); HRESULT GetServiceObject( [in] BSTR bstrUDN, [in] BSTR bstrServiceId, [out, retval] IDispatch ** ppdispService); } [ uuid(204810b8-73b2-11d4-bf42-00b0d0118b56), pointer_default(unique), ] interface IUPnPDeviceProvider : IUnknown { HRESULT Start([in] BSTR bstrInitString); HRESULT Stop(); } //////////////////////////////////////// // Type library #ifndef DO_NO_IMPORTS [ uuid(204810b3-73b2-11d4-bf42-00b0d0118b56), version(1.0), helpstring("UPnP 1.0 Type Library") ] library UPnPHostLib { importlib("stdole32.tlb"); importlib("stdole2.tlb"); interface IUPnPEventSink; interface IUPnPEventSource; interface IUPnPRegistrar; interface IUPnPReregistrar; interface IUPnPDeviceControl; interface IUPnPDeviceProvider; [ uuid(204810b9-73b2-11d4-bf42-00b0d0118b56) ] coclass UPnPRegistrar { [default] interface IUnknown; }; }; #endif // DO_NO_IMPORTS