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.
 
 
 
 
 
 

527 lines
20 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: upnp.idl
//
//----------------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
#include <idispids.h>
import "oaidl.idl";
import "ocidl.idl";
#define __UPNP_IDL_DEFINE__
interface IUPnPDeviceFinder;
interface IUPnPDeviceFinderCallback;
interface IUPnPDevice;
interface IUPnPDevices;
interface IUPnPDeviceDocumentAccess;
interface IUPnPService;
interface IUPnPServices;
interface IUPnPDevices;
interface IUPnPDescriptionDocument;
interface IUPnPDescriptionDocumentCallback;
interface IUPnPDeviceHostSetup;
cpp_quote("#define UPNP_E_ROOT_ELEMENT_EXPECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0200)")
cpp_quote("#define UPNP_E_DEVICE_ELEMENT_EXPECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201)")
cpp_quote("#define UPNP_E_SERVICE_ELEMENT_EXPECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0202)")
cpp_quote("#define UPNP_E_SERVICE_NODE_INCOMPLETE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0203)")
cpp_quote("#define UPNP_E_DEVICE_NODE_INCOMPLETE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0204)")
cpp_quote("#define UPNP_E_ICON_ELEMENT_EXPECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0205)")
cpp_quote("#define UPNP_E_ICON_NODE_INCOMPLETE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0206)")
cpp_quote("#define UPNP_E_INVALID_ACTION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0207)")
cpp_quote("#define UPNP_E_INVALID_ARGUMENTS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0208)")
cpp_quote("#define UPNP_E_OUT_OF_SYNC MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0209)")
cpp_quote("#define UPNP_E_ACTION_REQUEST_FAILED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0210)")
cpp_quote("#define UPNP_E_TRANSPORT_ERROR MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0211)")
cpp_quote("#define UPNP_E_VARIABLE_VALUE_UNKNOWN MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0212)")
cpp_quote("#define UPNP_E_INVALID_VARIABLE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0213)")
cpp_quote("#define UPNP_E_DEVICE_ERROR MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0214)")
cpp_quote("#define UPNP_E_PROTOCOL_ERROR MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0215)")
cpp_quote("#define UPNP_E_ERROR_PROCESSING_RESPONSE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0216)")
cpp_quote("#define UPNP_E_DEVICE_TIMEOUT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0217)")
cpp_quote("#define UPNP_E_INVALID_DOCUMENT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0500)")
cpp_quote("#define UPNP_E_EVENT_SUBSCRIPTION_FAILED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)")
cpp_quote("#define FAULT_INVALID_ACTION 401")
cpp_quote("#define FAULT_INVALID_ARG 402")
cpp_quote("#define FAULT_INVALID_SEQUENCE_NUMBER 403")
cpp_quote("#define FAULT_INVALID_VARIABLE 404")
cpp_quote("#define FAULT_DEVICE_INTERNAL_ERROR 501")
cpp_quote("#define FAULT_ACTION_SPECIFIC_BASE 600")
cpp_quote("#define FAULT_ACTION_SPECIFIC_MAX 899")
// NOTE: Do not define any HRESULTs within the range
// UPNP_E_ACTION_SPECIFIC_BASE - UPNP_E_ACTION_SPECIFIC_MAX.
cpp_quote("#define UPNP_E_ACTION_SPECIFIC_BASE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0300)")
cpp_quote("#define UPNP_E_ACTION_SPECIFIC_MAX (UPNP_E_ACTION_SPECIFIC_BASE + (FAULT_ACTION_SPECIFIC_MAX - FAULT_ACTION_SPECIFIC_BASE))")
#define DISPID_XOBJ_MIN 0x60020000
#define DISPID_XOBJ_MAX 0x6002FFFF
#define DISPID_XOBJ_BASE DISPID_XOBJ_MIN
#define DISPID_UPNPFINDDEVICES (DISPID_XOBJ_BASE + 1000)
#define DISPID_UPNPFINDDEVICESCALLBACK (DISPID_UPNPFINDDEVICES + 500)
#define DISPID_UPNPSERVICES (DISPID_UPNPFINDDEVICESCALLBACK + 500)
#define DISPID_UPNPSERVICE (DISPID_UPNPSERVICES + 500)
#define DISPID_UPNPDEVICES (DISPID_UPNPSERVICE + 1000)
#define DISPID_UPNPDEVICE (DISPID_UPNPDEVICES + 500)
#define DISPID_UPNPDESCRIPTIONDOC (DISPID_UPNPDEVICE + 500)
#define DISPID_UPNPFINDDEVICES_FINDBYTYPE (DISPID_UPNPFINDDEVICES + 1)
#define DISPID_UPNPFINDDEVICES_FINDBYDCPI (DISPID_UPNPFINDDEVICES + 2)
#define DISPID_UPNPFINDDEVICES_FINDBYUDN (DISPID_UPNPFINDDEVICES + 3)
#define DISPID_UPNPFINDDEVICES_CREATEASYNCFIND (DISPID_UPNPFINDDEVICES + 4)
#define DISPID_UPNPFINDDEVICES_STARTASYNCFIND (DISPID_UPNPFINDDEVICES + 5)
#define DISPID_UPNPFINDDEVICES_CANCELASYNCFIND (DISPID_UPNPFINDDEVICES + 6)
#define DISPID_UPNPFINDDEVICESCALLBACK_NEWDEVICE (DISPID_UPNPFINDDEVICESCALLBACK + 1)
#define DISPID_UPNPFINDDEVICESCALLBACK_SEARCHCOMPLETE (DISPID_UPNPFINDDEVICESCALLBACK + 2)
#define DISPID_UPNPSERVICES_COUNT (DISPID_UPNPSERVICES + 1)
#define DISPID_UPNPSERVICE_QUERYSTATEVARIABLE (DISPID_UPNPSERVICE + 1)
#define DISPID_UPNPSERVICE_INVOKEACTION (DISPID_UPNPSERVICE + 2)
#define DISPID_UPNPSERVICE_SERVICETYPEIDENTIFIER (DISPID_UPNPSERVICE + 3)
#define DISPID_UPNPSERVICE_ADDSTATECHANGECALLBACK (DISPID_UPNPSERVICE + 4)
#define DISPID_UPNPSERVICE_SERVICEID (DISPID_UPNPSERVICE + 5)
#define DISPID_UPNPSERVICE_LASTTRANSPORTSTATUS (DISPID_UPNPSERVICE + 6)
#define DISPID_UPNPDEVICES_COUNT (DISPID_UPNPDEVICES + 1)
#define DISPID_UPNPDEVICE_ISROOTDEVICE (DISPID_UPNPDEVICE + 1)
#define DISPID_UPNPDEVICE_ROOT (DISPID_UPNPDEVICE + 2)
#define DISPID_UPNPDEVICE_PARENT (DISPID_UPNPDEVICE + 3)
#define DISPID_UPNPDEVICE_HASCHILDREN (DISPID_UPNPDEVICE + 4)
#define DISPID_UPNPDEVICE_CHILDREN (DISPID_UPNPDEVICE + 5)
#define DISPID_UPNPDEVICE_UDN (DISPID_UPNPDEVICE + 6)
#define DISPID_UPNPDEVICE_FRIENDLYNAME (DISPID_UPNPDEVICE + 7)
#define DISPID_UPNPDEVICE_DEVICETYPE (DISPID_UPNPDEVICE + 8)
#define DISPID_UPNPDEVICE_PRESENTATIONURL (DISPID_UPNPDEVICE + 9)
#define DISPID_UPNPDEVICE_MANUFACTURERNAME (DISPID_UPNPDEVICE + 10)
#define DISPID_UPNPDEVICE_MANUFACTURERURL (DISPID_UPNPDEVICE + 11)
#define DISPID_UPNPDEVICE_MODELNAME (DISPID_UPNPDEVICE + 12)
#define DISPID_UPNPDEVICE_MODELNUMBER (DISPID_UPNPDEVICE + 13)
#define DISPID_UPNPDEVICE_DESCRIPTION (DISPID_UPNPDEVICE + 14)
#define DISPID_UPNPDEVICE_MODELURL (DISPID_UPNPDEVICE + 15)
#define DISPID_UPNPDEVICE_UPC (DISPID_UPNPDEVICE + 16)
#define DISPID_UPNPDEVICE_SERIALNUMBER (DISPID_UPNPDEVICE + 17)
#define DISPID_UPNPDEVICE_LOADSMALLICON (DISPID_UPNPDEVICE + 18)
#define DISPID_UPNPDEVICE_LOADICON (DISPID_UPNPDEVICE + 19)
#define DISPID_UPNPDEVICE_SERVICES (DISPID_UPNPDEVICE + 20)
#define DISPID_UPNPDESCRIPTIONDOC_LOAD (DISPID_UPNPDESCRIPTIONDOC + 1)
#define DISPID_UPNPDESCRIPTIONDOC_LOADASYNC (DISPID_UPNPDESCRIPTIONDOC + 2)
#define DISPID_UPNPDESCRIPTIONDOC_LOADERROR (DISPID_UPNPDESCRIPTIONDOC + 3)
#define DISPID_UPNPDESCRIPTIONDOC_ABORT (DISPID_UPNPDESCRIPTIONDOC + 4)
#define DISPID_UPNPDESCRIPTIONDOC_ROOTDEVICE (DISPID_UPNPDESCRIPTIONDOC + 5)
#define DISPID_UPNPDESCRIPTIONDOC_DEVICEBYUDN (DISPID_UPNPDESCRIPTIONDOC + 6)
[
object,
uuid(ADDA3D55-6F72-4319-BFF9-18600A539B10),
dual,
helpstring("IUPnPDeviceFinder Interface"),
oleautomation,
pointer_default(unique),
nonextensible
]
interface IUPnPDeviceFinder : IDispatch
{
[id(DISPID_UPNPFINDDEVICES_FINDBYTYPE),
helpstring("method FindByType")]
HRESULT FindByType([in] BSTR bstrTypeURI,
[in] DWORD dwFlags,
[out, retval] IUPnPDevices ** pDevices);
[id(DISPID_UPNPFINDDEVICES_CREATEASYNCFIND),
helpstring("method CreateAsyncFind")]
HRESULT CreateAsyncFind([in] BSTR bstrTypeURI,
[in] DWORD dwFlags,
[in] IUnknown * punkDeviceFinderCallback,
[out, retval] LONG * plFindData);
[id(DISPID_UPNPFINDDEVICES_STARTASYNCFIND),
helpstring("method StartAsyncFind")]
HRESULT StartAsyncFind([in] LONG lFindData);
[id(DISPID_UPNPFINDDEVICES_CANCELASYNCFIND),
helpstring("method CancelAsyncFind")]
HRESULT CancelAsyncFind([in] LONG lFindData);
[id(DISPID_UPNPFINDDEVICES_FINDBYUDN),
helpstring("method FindByUDN")]
HRESULT FindByUDN([in] BSTR bstrUDN,
[out, retval] IUPnPDevice ** pDevice);
};
[
object,
uuid(415A984A-88B3-49F3-92AF-0508BEDF0D6C),
pointer_default(unique)
]
interface IUPnPDeviceFinderCallback : IUnknown
{
HRESULT DeviceAdded([in] LONG lFindData,
[in] IUPnPDevice * pDevice);
HRESULT DeviceRemoved([in] LONG lFindData,
[in] BSTR bstrUDN);
HRESULT SearchComplete([in] LONG lFindData);
};
[
object,
uuid(3F8C8E9E-9A7A-4DC8-BC41-FF31FA374956),
dual,
helpstring("IUPnPServices Interface"),
pointer_default(unique),
nonextensible
]
interface IUPnPServices : IDispatch
{
[propget, id(DISPID_UPNPSERVICES_COUNT), helpstring("property Count")]
HRESULT Count([out, retval] long *plCount);
[propget, id(DISPID_NEWENUM), restricted, hidden, helpstring("property _NewEnum")]
HRESULT _NewEnum([out, retval] LPUNKNOWN *ppunk);
[propget, id(DISPID_VALUE), helpstring("property Item")]
HRESULT Item([in] BSTR bstrServiceId,
[out, retval] IUPnPService ** ppService);
};
[
object,
uuid(A295019C-DC65-47DD-90DC-7FE918A1AB44),
dual,
helpstring("IUPnPService Interface"),
oleautomation,
pointer_default(unique),
nonextensible
]
interface IUPnPService : IDispatch
{
[id(DISPID_UPNPSERVICE_QUERYSTATEVARIABLE),
helpstring("method QueryStateVariable")]
HRESULT QueryStateVariable([in] BSTR bstrVariableName,
[out, retval] VARIANT *pValue);
[id(DISPID_UPNPSERVICE_INVOKEACTION),
helpstring("method InvokeAction")]
HRESULT InvokeAction([in] BSTR bstrActionName,
[in] VARIANT vInActionArgs,
[in, out] VARIANT * pvOutActionArgs,
[out, retval] VARIANT *pvRetVal);
[propget, id(DISPID_UPNPSERVICE_SERVICETYPEIDENTIFIER),
helpstring("property ServiceTypeIdentifier")]
HRESULT ServiceTypeIdentifier([out, retval] BSTR *pVal);
[id(DISPID_UPNPSERVICE_ADDSTATECHANGECALLBACK),
helpstring("method AddStateChangeCallback")]
HRESULT AddCallback([in] IUnknown * pUnkCallback);
[propget, id(DISPID_UPNPSERVICE_SERVICEID),
helpstring("property Id")]
HRESULT Id([out, retval] BSTR *pbstrId);
[propget, id(DISPID_UPNPSERVICE_LASTTRANSPORTSTATUS),
helpstring("property LastTransportStatus")]
HRESULT LastTransportStatus([out, retval] long * plValue);
};
[
object,
uuid(31fadca9-ab73-464b-b67d-5c1d0f83c8b8),
pointer_default(unique)
]
interface IUPnPServiceCallback : IUnknown
{
HRESULT
StateVariableChanged([in] IUPnPService * pus,
[in] LPCWSTR pcwszStateVarName,
[in] VARIANT vaValue);
HRESULT
ServiceInstanceDied([in] IUPnPService * pus);
};
[
object,
uuid(FDBC0C73-BDA3-4C66-AC4F-F2D96FDAD68C),
dual,
helpstring("IUPnPDevices Interface"),
oleautomation,
pointer_default(unique),
nonextensible
]
interface IUPnPDevices : IDispatch
{
[propget, id(DISPID_UPNPDEVICES_COUNT), helpstring("property Count")]
HRESULT Count([out, retval] long * plCount);
[propget, id(DISPID_NEWENUM), restricted, hidden, helpstring("property _NewEnum")]
HRESULT _NewEnum([out, retval] LPUNKNOWN * ppunk);
[propget, id(DISPID_VALUE), helpstring("property Item")]
HRESULT Item([in] BSTR bstrUDN,
[out, retval] IUPnPDevice ** ppDevice);
};
[
object,
uuid(3D44D0D1-98C9-4889-ACD1-F9D674BF2221),
dual,
helpstring("IUPnPDevice Interface"),
oleautomation,
pointer_default(unique),
nonextensible
]
interface IUPnPDevice : IDispatch
{
[propget, id(DISPID_UPNPDEVICE_ISROOTDEVICE),
helpstring("denotes whether the device is the highest-level device in the device tree")]
HRESULT IsRootDevice([out, retval] VARIANT_BOOL * pvarb);
[propget, id(DISPID_UPNPDEVICE_ROOT),
helpstring("returns the top device in the device tree")]
HRESULT RootDevice([out, retval] IUPnPDevice ** ppudRootDevice);
[propget, id(DISPID_UPNPDEVICE_PARENT),
helpstring("returns the parent of the current device")]
HRESULT ParentDevice([out, retval] IUPnPDevice ** ppudDeviceParent);
[propget, id(DISPID_UPNPDEVICE_HASCHILDREN),
helpstring("denotes whether the current device contains child devices")]
HRESULT HasChildren([out, retval] VARIANT_BOOL * pvarb);
[propget, id(DISPID_UPNPDEVICE_CHILDREN),
helpstring("returns a collection of the children of the current device")]
HRESULT Children([out, retval] IUPnPDevices ** ppudChildren);
[propget, id(DISPID_UPNPDEVICE_UDN),
helpstring("returns the UDN of the device")]
HRESULT UniqueDeviceName([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_FRIENDLYNAME),
helpstring("returns the (optional) display name of the device")]
HRESULT FriendlyName([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_DEVICETYPE),
helpstring("returns the device type URI")]
HRESULT Type([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_PRESENTATIONURL),
helpstring("obtains a presentation URL to a web page that can control the device")]
HRESULT PresentationURL([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_MANUFACTURERNAME),
helpstring("displayable manufacturer name")]
HRESULT ManufacturerName([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_MANUFACTURERURL),
helpstring("URL to the manufacturer's website")]
HRESULT ManufacturerURL([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_MODELNAME),
helpstring("a displayable string containing the model name")]
HRESULT ModelName([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_MODELNUMBER),
helpstring("a displayable string containing the model number")]
HRESULT ModelNumber([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_DESCRIPTION),
helpstring("displayable summary of the device's function")]
HRESULT Description([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_MODELURL),
helpstring("URL to a webpage containing model-specific information")]
HRESULT ModelURL([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_UPC),
helpstring("displayable product code")]
HRESULT UPC([out, retval] BSTR * pbstr);
[propget, id(DISPID_UPNPDEVICE_SERIALNUMBER),
helpstring("displayable serial number")]
HRESULT SerialNumber([out, retval] BSTR * pbstr);
[id(DISPID_UPNPDEVICE_LOADICON),
helpstring("retrieves an url from which an icon of the specified format can be loaded")]
HRESULT IconURL([in] BSTR bstrEncodingFormat,
[in] LONG lSizeX,
[in] LONG lSizeY,
[in] LONG lBitDepth,
[out, retval] BSTR * pbstrIconURL);
[propget, id(DISPID_UPNPDEVICE_SERVICES),
helpstring("returns the collection of services exposed by the device")]
HRESULT Services([out, retval] IUPnPServices ** ppusServices);
};
[
object,
uuid(E7772804-3287-418e-9072-CF2B47238981),
pointer_default(unique)
]
interface IUPnPDeviceDocumentAccess : IUnknown
{
HRESULT GetDocumentURL([out, retval] BSTR * pbstrDocument);
}
[
object,
uuid(11d1c1b2-7daa-4c9e-9595-7f82ed206d1e),
dual,
helpstring("IUPnPDescriptionDocument Interface"),
oleautomation,
pointer_default(unique),
nonextensible
]
interface IUPnPDescriptionDocument : IDispatch
{
[propget, id(DISPID_READYSTATE),
helpstring("the current status of the document's loading process")]
HRESULT ReadyState([out, retval] LONG * plReadyState);
[id(DISPID_UPNPDESCRIPTIONDOC_LOAD),
helpstring("loads a document synchronously from an URL")]
HRESULT Load([in] BSTR bstrUrl);
[id(DISPID_UPNPDESCRIPTIONDOC_LOADASYNC),
helpstring("starts an asynchronous download, returning immediately")]
HRESULT LoadAsync([in] BSTR bstrUrl, [in] IUnknown * punkCallback);
[propget, id(DISPID_UPNPDESCRIPTIONDOC_LOADERROR),
helpstring("the success or failure code of the completed load operation")]
HRESULT LoadResult([out, retval] long * phrError);
[id(DISPID_UPNPDESCRIPTIONDOC_ABORT),
helpstring("stops an asynchronous loading operation")]
HRESULT Abort();
[id(DISPID_UPNPDESCRIPTIONDOC_ROOTDEVICE),
helpstring("returns the root device of the loaded document's device tree")]
HRESULT RootDevice([out, retval] IUPnPDevice ** ppudRootDevice);
[id(DISPID_UPNPDESCRIPTIONDOC_DEVICEBYUDN),
helpstring("returns a device by its unique device name (UDN)")]
HRESULT DeviceByUDN([in] BSTR bstrUDN,
[out, retval] IUPnPDevice ** ppudDevice);
};
[
object,
uuid(77394c69-5486-40d6-9bc3-4991983e02da),
pointer_default(unique)
]
interface IUPnPDescriptionDocumentCallback : IUnknown
{
HRESULT LoadComplete([in] HRESULT hrLoadResult);
};
[
uuid(DB3442A7-A2E9-4A59-9CB5-F5C1A5D901E5),
version(1.0),
helpstring("UPnP 1.0 Type Library")
]
library UPNPLib
{
importlib("stdole2.tlb");
[
uuid(E2085F28-FEB7-404A-B8E7-E659BDEAAA02),
helpstring("UPnPDeviceFinder Class")
]
coclass UPnPDeviceFinder
{
[default] interface IUPnPDeviceFinder;
};
[
uuid(B9E84FFD-AD3C-40A4-B835-0882EBCBAAA8),
helpstring("UPnPDevices Class")
]
coclass UPnPDevices
{
[default] interface IUPnPDevices;
};
[
uuid(A32552C5-BA61-457A-B59A-A2561E125E33),
helpstring("UPnPDevice Class")
]
coclass UPnPDevice
{
[default] interface IUPnPDevice;
};
[
uuid(C0BC4B4A-A406-4EFC-932F-B8546B8100CC),
helpstring("UPnPServices Class")
]
coclass UPnPServices
{
[default] interface IUPnPServices;
};
[
uuid(C624BA95-FBCB-4409-8C03-8CCEEC533EF1),
helpstring("UPnPService Class")
]
coclass UPnPService
{
[default] interface IUPnPService;
};
[
uuid(1d8a9b47-3a28-4ce2-8a4b-bd34e45bceeb),
helpstring("UPnPDescriptionDocument Class")
]
coclass UPnPDescriptionDocument
{
[default] interface IUPnPDescriptionDocument;
};
[
oleautomation,
uuid(6BD34909-54E7-4fbf-8562-7B89709A589A),
pointer_default(unique)
]
interface IUPnPDeviceHostSetup : IUnknown
{
HRESULT AskIfNotAlreadyEnabled([out, retval] VARIANT_BOOL * pbEnabled);
};
[
uuid(B4609411-C81C-4cce-8C76-C6B50C9402C6),
helpstring("UPnPDeviceHostSetup Class")
]
coclass UPnPDeviceHostSetup
{
[default] interface IUnknown;
};
interface IUPnPDeviceDocumentAccess;
};