Leaked source code of windows server 2003
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

  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. };