mirror of https://github.com/tongzx/nt5src
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.
233 lines
7.6 KiB
233 lines
7.6 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// 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
|
|
|