UPnP.Idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:20k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (c) Microsoft Corporation. All rights reserved.
  5. //
  6. //  File: upnp.idl
  7. //
  8. //----------------------------------------------------------------------------
  9. cpp_quote("//+-------------------------------------------------------------------------")
  10. cpp_quote("//")
  11. cpp_quote("//  Microsoft Windows")
  12. cpp_quote("//  Copyright (c) Microsoft Corporation. All rights reserved.")
  13. cpp_quote("//")
  14. cpp_quote("//--------------------------------------------------------------------------")
  15. #include <idispids.h>
  16. import "oaidl.idl";
  17. import "ocidl.idl";
  18. #define __UPNP_IDL_DEFINE__
  19. interface IUPnPDeviceFinder;
  20. interface IUPnPDeviceFinderCallback;
  21. interface IUPnPDevice;
  22. interface IUPnPDevices;
  23. interface IUPnPDeviceDocumentAccess;
  24. interface IUPnPService;
  25. interface IUPnPServices;
  26. interface IUPnPDevices;
  27. interface IUPnPDescriptionDocument;
  28. interface IUPnPDescriptionDocumentCallback;
  29. interface IUPnPDeviceHostSetup;
  30. cpp_quote("#define UPNP_E_ROOT_ELEMENT_EXPECTED     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0200)")
  31. cpp_quote("#define UPNP_E_DEVICE_ELEMENT_EXPECTED   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201)")
  32. cpp_quote("#define UPNP_E_SERVICE_ELEMENT_EXPECTED  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0202)")
  33. cpp_quote("#define UPNP_E_SERVICE_NODE_INCOMPLETE   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0203)")
  34. cpp_quote("#define UPNP_E_DEVICE_NODE_INCOMPLETE    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0204)")
  35. cpp_quote("#define UPNP_E_ICON_ELEMENT_EXPECTED     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0205)")
  36. cpp_quote("#define UPNP_E_ICON_NODE_INCOMPLETE      MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0206)")
  37. cpp_quote("#define UPNP_E_INVALID_ACTION            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0207)")
  38. cpp_quote("#define UPNP_E_INVALID_ARGUMENTS         MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0208)")
  39. cpp_quote("#define UPNP_E_OUT_OF_SYNC               MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0209)")
  40. cpp_quote("#define UPNP_E_ACTION_REQUEST_FAILED     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0210)")
  41. cpp_quote("#define UPNP_E_TRANSPORT_ERROR           MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0211)")
  42. cpp_quote("#define UPNP_E_VARIABLE_VALUE_UNKNOWN    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0212)")
  43. cpp_quote("#define UPNP_E_INVALID_VARIABLE          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0213)")
  44. cpp_quote("#define UPNP_E_DEVICE_ERROR              MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0214)")
  45. cpp_quote("#define UPNP_E_PROTOCOL_ERROR            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0215)")
  46. cpp_quote("#define UPNP_E_ERROR_PROCESSING_RESPONSE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0216)")
  47. cpp_quote("#define UPNP_E_DEVICE_TIMEOUT            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0217)")
  48. cpp_quote("#define UPNP_E_INVALID_DOCUMENT          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0500)")
  49. cpp_quote("#define UPNP_E_EVENT_SUBSCRIPTION_FAILED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)")
  50. cpp_quote("#define FAULT_INVALID_ACTION             401")
  51. cpp_quote("#define FAULT_INVALID_ARG                402")
  52. cpp_quote("#define FAULT_INVALID_SEQUENCE_NUMBER    403")
  53. cpp_quote("#define FAULT_INVALID_VARIABLE           404")
  54. cpp_quote("#define FAULT_DEVICE_INTERNAL_ERROR      501")
  55. cpp_quote("#define FAULT_ACTION_SPECIFIC_BASE       600")
  56. cpp_quote("#define FAULT_ACTION_SPECIFIC_MAX        899")
  57. // NOTE: Do not define any HRESULTs within the range
  58. // UPNP_E_ACTION_SPECIFIC_BASE - UPNP_E_ACTION_SPECIFIC_MAX.
  59. cpp_quote("#define UPNP_E_ACTION_SPECIFIC_BASE      MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0300)")
  60. cpp_quote("#define UPNP_E_ACTION_SPECIFIC_MAX       (UPNP_E_ACTION_SPECIFIC_BASE + (FAULT_ACTION_SPECIFIC_MAX - FAULT_ACTION_SPECIFIC_BASE))")
  61. #define DISPID_XOBJ_MIN                 0x60020000
  62. #define DISPID_XOBJ_MAX                 0x6002FFFF
  63. #define DISPID_XOBJ_BASE                DISPID_XOBJ_MIN
  64. #define DISPID_UPNPFINDDEVICES          (DISPID_XOBJ_BASE               + 1000)
  65. #define DISPID_UPNPFINDDEVICESCALLBACK  (DISPID_UPNPFINDDEVICES         + 500)
  66. #define DISPID_UPNPSERVICES             (DISPID_UPNPFINDDEVICESCALLBACK + 500)
  67. #define DISPID_UPNPSERVICE              (DISPID_UPNPSERVICES            + 500)
  68. #define DISPID_UPNPDEVICES              (DISPID_UPNPSERVICE             + 1000)
  69. #define DISPID_UPNPDEVICE               (DISPID_UPNPDEVICES             + 500)
  70. #define DISPID_UPNPDESCRIPTIONDOC       (DISPID_UPNPDEVICE              + 500)
  71. #define DISPID_UPNPFINDDEVICES_FINDBYTYPE        (DISPID_UPNPFINDDEVICES + 1)
  72. #define DISPID_UPNPFINDDEVICES_FINDBYDCPI        (DISPID_UPNPFINDDEVICES + 2)
  73. #define DISPID_UPNPFINDDEVICES_FINDBYUDN         (DISPID_UPNPFINDDEVICES + 3)
  74. #define DISPID_UPNPFINDDEVICES_CREATEASYNCFIND   (DISPID_UPNPFINDDEVICES + 4)
  75. #define DISPID_UPNPFINDDEVICES_STARTASYNCFIND    (DISPID_UPNPFINDDEVICES + 5)
  76. #define DISPID_UPNPFINDDEVICES_CANCELASYNCFIND   (DISPID_UPNPFINDDEVICES + 6)
  77. #define DISPID_UPNPFINDDEVICESCALLBACK_NEWDEVICE        (DISPID_UPNPFINDDEVICESCALLBACK + 1)
  78. #define DISPID_UPNPFINDDEVICESCALLBACK_SEARCHCOMPLETE   (DISPID_UPNPFINDDEVICESCALLBACK + 2)
  79. #define DISPID_UPNPSERVICES_COUNT                (DISPID_UPNPSERVICES + 1)
  80. #define DISPID_UPNPSERVICE_QUERYSTATEVARIABLE    (DISPID_UPNPSERVICE  + 1)
  81. #define DISPID_UPNPSERVICE_INVOKEACTION          (DISPID_UPNPSERVICE  + 2)
  82. #define DISPID_UPNPSERVICE_SERVICETYPEIDENTIFIER (DISPID_UPNPSERVICE  + 3)
  83. #define DISPID_UPNPSERVICE_ADDSTATECHANGECALLBACK   (DISPID_UPNPSERVICE  + 4)
  84. #define DISPID_UPNPSERVICE_SERVICEID             (DISPID_UPNPSERVICE  + 5)
  85. #define DISPID_UPNPSERVICE_LASTTRANSPORTSTATUS   (DISPID_UPNPSERVICE  + 6)
  86. #define DISPID_UPNPDEVICES_COUNT                 (DISPID_UPNPDEVICES  + 1)
  87. #define DISPID_UPNPDEVICE_ISROOTDEVICE           (DISPID_UPNPDEVICE   + 1)
  88. #define DISPID_UPNPDEVICE_ROOT                   (DISPID_UPNPDEVICE   + 2)
  89. #define DISPID_UPNPDEVICE_PARENT                 (DISPID_UPNPDEVICE   + 3)
  90. #define DISPID_UPNPDEVICE_HASCHILDREN            (DISPID_UPNPDEVICE   + 4)
  91. #define DISPID_UPNPDEVICE_CHILDREN               (DISPID_UPNPDEVICE   + 5)
  92. #define DISPID_UPNPDEVICE_UDN                    (DISPID_UPNPDEVICE   + 6)
  93. #define DISPID_UPNPDEVICE_FRIENDLYNAME           (DISPID_UPNPDEVICE   + 7)
  94. #define DISPID_UPNPDEVICE_DEVICETYPE             (DISPID_UPNPDEVICE   + 8)
  95. #define DISPID_UPNPDEVICE_PRESENTATIONURL        (DISPID_UPNPDEVICE   + 9)
  96. #define DISPID_UPNPDEVICE_MANUFACTURERNAME       (DISPID_UPNPDEVICE   + 10)
  97. #define DISPID_UPNPDEVICE_MANUFACTURERURL        (DISPID_UPNPDEVICE   + 11)
  98. #define DISPID_UPNPDEVICE_MODELNAME              (DISPID_UPNPDEVICE   + 12)
  99. #define DISPID_UPNPDEVICE_MODELNUMBER            (DISPID_UPNPDEVICE   + 13)
  100. #define DISPID_UPNPDEVICE_DESCRIPTION            (DISPID_UPNPDEVICE   + 14)
  101. #define DISPID_UPNPDEVICE_MODELURL               (DISPID_UPNPDEVICE   + 15)
  102. #define DISPID_UPNPDEVICE_UPC                    (DISPID_UPNPDEVICE   + 16)
  103. #define DISPID_UPNPDEVICE_SERIALNUMBER           (DISPID_UPNPDEVICE   + 17)
  104. #define DISPID_UPNPDEVICE_LOADSMALLICON          (DISPID_UPNPDEVICE   + 18)
  105. #define DISPID_UPNPDEVICE_LOADICON               (DISPID_UPNPDEVICE   + 19)
  106. #define DISPID_UPNPDEVICE_SERVICES               (DISPID_UPNPDEVICE   + 20)
  107. #define DISPID_UPNPDESCRIPTIONDOC_LOAD           (DISPID_UPNPDESCRIPTIONDOC + 1)
  108. #define DISPID_UPNPDESCRIPTIONDOC_LOADASYNC      (DISPID_UPNPDESCRIPTIONDOC + 2)
  109. #define DISPID_UPNPDESCRIPTIONDOC_LOADERROR      (DISPID_UPNPDESCRIPTIONDOC + 3)
  110. #define DISPID_UPNPDESCRIPTIONDOC_ABORT          (DISPID_UPNPDESCRIPTIONDOC + 4)
  111. #define DISPID_UPNPDESCRIPTIONDOC_ROOTDEVICE     (DISPID_UPNPDESCRIPTIONDOC + 5)
  112. #define DISPID_UPNPDESCRIPTIONDOC_DEVICEBYUDN    (DISPID_UPNPDESCRIPTIONDOC + 6)
  113. [
  114.     object,
  115.     uuid(ADDA3D55-6F72-4319-BFF9-18600A539B10),
  116.     dual,
  117.     helpstring("IUPnPDeviceFinder Interface"),
  118.     oleautomation,
  119.     pointer_default(unique),
  120.     nonextensible
  121. ]
  122. interface IUPnPDeviceFinder : IDispatch
  123. {
  124.     [id(DISPID_UPNPFINDDEVICES_FINDBYTYPE),
  125.      helpstring("method FindByType")]
  126.     HRESULT FindByType([in] BSTR bstrTypeURI,
  127.                        [in] DWORD dwFlags,
  128.                        [out, retval] IUPnPDevices ** pDevices);
  129.     [id(DISPID_UPNPFINDDEVICES_CREATEASYNCFIND),
  130.      helpstring("method CreateAsyncFind")]
  131.     HRESULT CreateAsyncFind([in] BSTR bstrTypeURI,
  132.                             [in] DWORD dwFlags,
  133.                             [in] IUnknown * punkDeviceFinderCallback,
  134.                             [out, retval] LONG * plFindData);
  135.     [id(DISPID_UPNPFINDDEVICES_STARTASYNCFIND),
  136.      helpstring("method StartAsyncFind")]
  137.     HRESULT StartAsyncFind([in] LONG lFindData);
  138.     [id(DISPID_UPNPFINDDEVICES_CANCELASYNCFIND),
  139.      helpstring("method CancelAsyncFind")]
  140.     HRESULT CancelAsyncFind([in] LONG lFindData);
  141.     [id(DISPID_UPNPFINDDEVICES_FINDBYUDN),
  142.      helpstring("method FindByUDN")]
  143.     HRESULT FindByUDN([in] BSTR bstrUDN,
  144.                       [out, retval] IUPnPDevice ** pDevice);
  145. };
  146. [
  147.     object,
  148.     uuid(415A984A-88B3-49F3-92AF-0508BEDF0D6C),
  149.     pointer_default(unique)
  150. ]
  151. interface IUPnPDeviceFinderCallback : IUnknown
  152. {
  153.     HRESULT DeviceAdded([in] LONG lFindData,
  154.                         [in] IUPnPDevice * pDevice);
  155.     HRESULT DeviceRemoved([in] LONG lFindData,
  156.                           [in] BSTR bstrUDN);
  157.     HRESULT SearchComplete([in] LONG lFindData);
  158. };
  159. [
  160.     object,
  161.     uuid(3F8C8E9E-9A7A-4DC8-BC41-FF31FA374956),
  162.     dual,
  163.     helpstring("IUPnPServices Interface"),
  164.     pointer_default(unique),
  165.     nonextensible
  166. ]
  167. interface IUPnPServices : IDispatch
  168. {
  169.     [propget, id(DISPID_UPNPSERVICES_COUNT), helpstring("property Count")]
  170.     HRESULT Count([out, retval] long *plCount);
  171.     [propget, id(DISPID_NEWENUM), restricted, hidden, helpstring("property _NewEnum")]
  172.     HRESULT _NewEnum([out, retval] LPUNKNOWN *ppunk);
  173.     [propget, id(DISPID_VALUE), helpstring("property Item")]
  174.     HRESULT Item([in] BSTR bstrServiceId,
  175.                  [out, retval] IUPnPService ** ppService);
  176. };
  177. [
  178.     object,
  179.     uuid(A295019C-DC65-47DD-90DC-7FE918A1AB44),
  180.     dual,
  181.     helpstring("IUPnPService Interface"),
  182.     oleautomation,
  183.     pointer_default(unique),
  184.     nonextensible
  185. ]
  186. interface IUPnPService : IDispatch
  187. {
  188.     [id(DISPID_UPNPSERVICE_QUERYSTATEVARIABLE),
  189.      helpstring("method QueryStateVariable")]
  190.     HRESULT QueryStateVariable([in] BSTR bstrVariableName,
  191.                                [out, retval] VARIANT *pValue);
  192.     [id(DISPID_UPNPSERVICE_INVOKEACTION),
  193.      helpstring("method InvokeAction")]
  194.     HRESULT InvokeAction([in] BSTR bstrActionName,
  195.                          [in] VARIANT vInActionArgs,
  196.                          [in, out] VARIANT * pvOutActionArgs,
  197.                          [out, retval] VARIANT *pvRetVal);
  198.     [propget, id(DISPID_UPNPSERVICE_SERVICETYPEIDENTIFIER),
  199.      helpstring("property ServiceTypeIdentifier")]
  200.     HRESULT ServiceTypeIdentifier([out, retval] BSTR *pVal);
  201.     [id(DISPID_UPNPSERVICE_ADDSTATECHANGECALLBACK),
  202.      helpstring("method AddStateChangeCallback")]
  203.     HRESULT AddCallback([in] IUnknown  * pUnkCallback);
  204.     [propget, id(DISPID_UPNPSERVICE_SERVICEID),
  205.      helpstring("property Id")]
  206.     HRESULT Id([out, retval] BSTR *pbstrId);
  207.     [propget, id(DISPID_UPNPSERVICE_LASTTRANSPORTSTATUS),
  208.      helpstring("property LastTransportStatus")]
  209.     HRESULT LastTransportStatus([out, retval] long * plValue);
  210. };
  211. [
  212.     object,
  213.     uuid(31fadca9-ab73-464b-b67d-5c1d0f83c8b8),
  214.     pointer_default(unique)
  215. ]
  216. interface IUPnPServiceCallback : IUnknown
  217. {
  218.     HRESULT
  219.     StateVariableChanged([in]   IUPnPService    * pus,
  220.                          [in]   LPCWSTR         pcwszStateVarName,
  221.                          [in]   VARIANT         vaValue);
  222.     HRESULT
  223.     ServiceInstanceDied([in]    IUPnPService    * pus);
  224. };
  225. [
  226.     object,
  227.     uuid(FDBC0C73-BDA3-4C66-AC4F-F2D96FDAD68C),
  228.     dual,
  229.     helpstring("IUPnPDevices Interface"),
  230.     oleautomation,
  231.     pointer_default(unique),
  232.     nonextensible
  233. ]
  234. interface IUPnPDevices : IDispatch
  235. {
  236.     [propget, id(DISPID_UPNPDEVICES_COUNT), helpstring("property Count")]
  237.     HRESULT Count([out, retval] long * plCount);
  238.     [propget, id(DISPID_NEWENUM), restricted, hidden, helpstring("property _NewEnum")]
  239.     HRESULT _NewEnum([out, retval] LPUNKNOWN * ppunk);
  240.     [propget, id(DISPID_VALUE), helpstring("property Item")]
  241.     HRESULT Item([in] BSTR bstrUDN,
  242.                  [out, retval] IUPnPDevice ** ppDevice);
  243. };
  244. [
  245.     object,
  246.     uuid(3D44D0D1-98C9-4889-ACD1-F9D674BF2221),
  247.     dual,
  248.     helpstring("IUPnPDevice Interface"),
  249.     oleautomation,
  250.     pointer_default(unique),
  251.     nonextensible
  252. ]
  253. interface IUPnPDevice : IDispatch
  254. {
  255.     [propget, id(DISPID_UPNPDEVICE_ISROOTDEVICE),
  256.      helpstring("denotes whether the device is the highest-level device in the device tree")]
  257.     HRESULT IsRootDevice([out, retval] VARIANT_BOOL * pvarb);
  258.     [propget, id(DISPID_UPNPDEVICE_ROOT),
  259.      helpstring("returns the top device in the device tree")]
  260.     HRESULT RootDevice([out, retval] IUPnPDevice ** ppudRootDevice);
  261.     [propget, id(DISPID_UPNPDEVICE_PARENT),
  262.      helpstring("returns the parent of the current device")]
  263.     HRESULT ParentDevice([out, retval] IUPnPDevice ** ppudDeviceParent);
  264.     [propget, id(DISPID_UPNPDEVICE_HASCHILDREN),
  265.      helpstring("denotes whether the current device contains child devices")]
  266.     HRESULT HasChildren([out, retval] VARIANT_BOOL * pvarb);
  267.     [propget, id(DISPID_UPNPDEVICE_CHILDREN),
  268.      helpstring("returns a collection of the children of the current device")]
  269.     HRESULT Children([out, retval] IUPnPDevices ** ppudChildren);
  270.     [propget, id(DISPID_UPNPDEVICE_UDN),
  271.      helpstring("returns the UDN of the device")]
  272.     HRESULT UniqueDeviceName([out, retval] BSTR * pbstr);
  273.     [propget, id(DISPID_UPNPDEVICE_FRIENDLYNAME),
  274.      helpstring("returns the (optional) display name of the device")]
  275.     HRESULT FriendlyName([out, retval] BSTR * pbstr);
  276.     [propget, id(DISPID_UPNPDEVICE_DEVICETYPE),
  277.      helpstring("returns the device type URI")]
  278.     HRESULT Type([out, retval] BSTR * pbstr);
  279.     [propget, id(DISPID_UPNPDEVICE_PRESENTATIONURL),
  280.      helpstring("obtains a presentation URL to a web page that can control the device")]
  281.     HRESULT PresentationURL([out, retval] BSTR * pbstr);
  282.     [propget, id(DISPID_UPNPDEVICE_MANUFACTURERNAME),
  283.      helpstring("displayable manufacturer name")]
  284.     HRESULT ManufacturerName([out, retval] BSTR * pbstr);
  285.     [propget, id(DISPID_UPNPDEVICE_MANUFACTURERURL),
  286.      helpstring("URL to the manufacturer's website")]
  287.     HRESULT ManufacturerURL([out, retval] BSTR * pbstr);
  288.     [propget, id(DISPID_UPNPDEVICE_MODELNAME),
  289.      helpstring("a displayable string containing the model name")]
  290.     HRESULT ModelName([out, retval] BSTR * pbstr);
  291.     [propget, id(DISPID_UPNPDEVICE_MODELNUMBER),
  292.      helpstring("a displayable string containing the model number")]
  293.     HRESULT ModelNumber([out, retval] BSTR * pbstr);
  294.     [propget, id(DISPID_UPNPDEVICE_DESCRIPTION),
  295.      helpstring("displayable summary of the device's function")]
  296.     HRESULT Description([out, retval] BSTR * pbstr);
  297.     [propget, id(DISPID_UPNPDEVICE_MODELURL),
  298.      helpstring("URL to a webpage containing model-specific information")]
  299.     HRESULT ModelURL([out, retval] BSTR * pbstr);
  300.     [propget, id(DISPID_UPNPDEVICE_UPC),
  301.      helpstring("displayable product code")]
  302.     HRESULT UPC([out, retval] BSTR * pbstr);
  303.     [propget, id(DISPID_UPNPDEVICE_SERIALNUMBER),
  304.      helpstring("displayable serial number")]
  305.     HRESULT SerialNumber([out, retval] BSTR * pbstr);
  306.     [id(DISPID_UPNPDEVICE_LOADICON),
  307.      helpstring("retrieves an url from which an icon of the specified format can be loaded")]
  308.     HRESULT IconURL([in] BSTR bstrEncodingFormat,
  309.                     [in] LONG lSizeX,
  310.                     [in] LONG lSizeY,
  311.                     [in] LONG lBitDepth,
  312.                     [out, retval] BSTR * pbstrIconURL);
  313.     [propget, id(DISPID_UPNPDEVICE_SERVICES),
  314.      helpstring("returns the collection of services exposed by the device")]
  315.     HRESULT Services([out, retval] IUPnPServices ** ppusServices);
  316. };
  317. [
  318.     object,
  319.     uuid(E7772804-3287-418e-9072-CF2B47238981),
  320.     pointer_default(unique)
  321. ]
  322. interface IUPnPDeviceDocumentAccess : IUnknown
  323. {
  324.     HRESULT GetDocumentURL([out, retval] BSTR * pbstrDocument);
  325. }
  326. [
  327.     object,
  328.     uuid(11d1c1b2-7daa-4c9e-9595-7f82ed206d1e),
  329.     dual,
  330.     helpstring("IUPnPDescriptionDocument Interface"),
  331.     oleautomation,
  332.     pointer_default(unique),
  333.     nonextensible
  334. ]
  335. interface IUPnPDescriptionDocument : IDispatch
  336. {
  337.     [propget, id(DISPID_READYSTATE),
  338.      helpstring("the current status of the document's loading process")]
  339.     HRESULT ReadyState([out, retval] LONG * plReadyState);
  340.     [id(DISPID_UPNPDESCRIPTIONDOC_LOAD),
  341.      helpstring("loads a document synchronously from an URL")]
  342.     HRESULT Load([in] BSTR bstrUrl);
  343.     [id(DISPID_UPNPDESCRIPTIONDOC_LOADASYNC),
  344.      helpstring("starts an asynchronous download, returning immediately")]
  345.     HRESULT LoadAsync([in] BSTR bstrUrl, [in] IUnknown * punkCallback);
  346.     [propget, id(DISPID_UPNPDESCRIPTIONDOC_LOADERROR),
  347.      helpstring("the success or failure code of the completed load operation")]
  348.     HRESULT LoadResult([out, retval] long * phrError);
  349.     [id(DISPID_UPNPDESCRIPTIONDOC_ABORT),
  350.      helpstring("stops an asynchronous loading operation")]
  351.     HRESULT Abort();
  352.     [id(DISPID_UPNPDESCRIPTIONDOC_ROOTDEVICE),
  353.      helpstring("returns the root device of the loaded document's device tree")]
  354.     HRESULT RootDevice([out, retval] IUPnPDevice ** ppudRootDevice);
  355.     [id(DISPID_UPNPDESCRIPTIONDOC_DEVICEBYUDN),
  356.      helpstring("returns a device by its unique device name (UDN)")]
  357.     HRESULT DeviceByUDN([in] BSTR bstrUDN,
  358.                         [out, retval] IUPnPDevice ** ppudDevice);
  359. };
  360. [
  361.     object,
  362.     uuid(77394c69-5486-40d6-9bc3-4991983e02da),
  363.     pointer_default(unique)
  364. ]
  365. interface IUPnPDescriptionDocumentCallback : IUnknown
  366. {
  367.     HRESULT LoadComplete([in] HRESULT hrLoadResult);
  368. };
  369. [
  370.     uuid(DB3442A7-A2E9-4A59-9CB5-F5C1A5D901E5),
  371.     version(1.0),
  372.     helpstring("UPnP 1.0 Type Library")
  373. ]
  374. library UPNPLib
  375. {
  376.     importlib("stdole2.tlb");
  377.     [
  378.         uuid(E2085F28-FEB7-404A-B8E7-E659BDEAAA02),
  379.         helpstring("UPnPDeviceFinder Class")
  380.     ]
  381.     coclass UPnPDeviceFinder
  382.     {
  383.         [default] interface IUPnPDeviceFinder;
  384.     };
  385.     [
  386.         uuid(B9E84FFD-AD3C-40A4-B835-0882EBCBAAA8),
  387.         helpstring("UPnPDevices Class")
  388.     ]
  389.     coclass UPnPDevices
  390.     {
  391.         [default] interface IUPnPDevices;
  392.     };
  393.     [
  394.         uuid(A32552C5-BA61-457A-B59A-A2561E125E33),
  395.         helpstring("UPnPDevice Class")
  396.     ]
  397.     coclass UPnPDevice
  398.     {
  399.         [default] interface IUPnPDevice;
  400.     };
  401.     [
  402.         uuid(C0BC4B4A-A406-4EFC-932F-B8546B8100CC),
  403.         helpstring("UPnPServices Class")
  404.     ]
  405.     coclass UPnPServices
  406.     {
  407.         [default] interface IUPnPServices;
  408.     };
  409.     [
  410.         uuid(C624BA95-FBCB-4409-8C03-8CCEEC533EF1),
  411.         helpstring("UPnPService Class")
  412.     ]
  413.     coclass UPnPService
  414.     {
  415.         [default] interface IUPnPService;
  416.     };
  417.     [
  418.         uuid(1d8a9b47-3a28-4ce2-8a4b-bd34e45bceeb),
  419.         helpstring("UPnPDescriptionDocument Class")
  420.     ]
  421.     coclass UPnPDescriptionDocument
  422.     {
  423.         [default] interface IUPnPDescriptionDocument;
  424.     };
  425.     [
  426.         oleautomation,
  427.         uuid(6BD34909-54E7-4fbf-8562-7B89709A589A),
  428.         pointer_default(unique)
  429.     ]
  430.     interface IUPnPDeviceHostSetup : IUnknown
  431.     {
  432.         HRESULT AskIfNotAlreadyEnabled([out, retval] VARIANT_BOOL * pbEnabled);
  433.     };
  434.     [
  435.         uuid(B4609411-C81C-4cce-8C76-C6B50C9402C6),
  436.         helpstring("UPnPDeviceHostSetup Class")
  437.     ]
  438.     coclass UPnPDeviceHostSetup
  439.     {
  440.         [default] interface IUnknown;
  441.     };
  442.     interface IUPnPDeviceDocumentAccess;
  443. };