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.

1085 lines
37 KiB

  1. /******************************************************************************
  2. *
  3. * (C) COPYRIGHT MICROSOFT CORP., 1998-1999
  4. *
  5. * TITLE: WIA.idl
  6. *
  7. * VERSION: 2.0
  8. *
  9. * DATE: 6 Jan, 1998
  10. *
  11. * DESCRIPTION:
  12. * IDL source for WIA device manager. The MIDL compiler generates
  13. * marshaling code and a type library from this file.
  14. *
  15. ******************************************************************************/
  16. interface IWiaDevMgr;
  17. interface IWiaEventCallback;
  18. interface IWiaDataCallback;
  19. interface IWiaItem;
  20. interface IWiaPropertyStorage;
  21. interface IEnumWiaItem;
  22. interface IEnumWIA_DEV_INFO;
  23. interface IEnumWIA_DEV_CAPS;
  24. interface IEnumWIA_FORMAT_INFO;
  25. interface IStiDevice;
  26. import "unknwn.idl";
  27. import "oaidl.idl";
  28. import "propidl.idl";
  29. /*******************************************************************************
  30. *
  31. * Structures used by WIA
  32. *
  33. *******************************************************************************/
  34. //
  35. // Dither pattern specification structure used
  36. // with WIA_DPS_DITHER_PATTERN_DATA
  37. //
  38. typedef struct _WIA_DITHER_PATTERN_DATA
  39. {
  40. LONG lSize;
  41. BSTR bstrPatternName;
  42. LONG lPatternWidth;
  43. LONG lPatternLength;
  44. LONG cbPattern;
  45. [size_is(cbPattern)] BYTE *pbPattern;
  46. } WIA_DITHER_PATTERN_DATA, *PWIA_DITHER_PATTERN_DATA;
  47. typedef struct _WIA_PROPID_TO_NAME {
  48. PROPID propid;
  49. LPOLESTR pszName;
  50. } WIA_PROPID_TO_NAME, *PWIA_PROPID_TO_NAME;
  51. typedef struct _WIA_FORMAT_INFO
  52. {
  53. GUID guidFormatID;
  54. LONG lTymed;
  55. } WIA_FORMAT_INFO, *PWIA_FORMAT_INFO;
  56. /*******************************************************************************
  57. *
  58. * Import header file which contains WIA constants and globals
  59. *
  60. *******************************************************************************/
  61. cpp_quote("#include \"wiadef.h\"")
  62. /*******************************************************************************
  63. *
  64. * WIA Device Manager Interface
  65. *
  66. *******************************************************************************/
  67. [
  68. object,
  69. uuid(5eb2502a-8cf1-11d1-bf92-0060081ed811),
  70. helpstring("WIA Device Manager Interface"),
  71. pointer_default(unique)
  72. ]
  73. interface IWiaDevMgr : IUnknown
  74. {
  75. [helpstring("Create an WIA device information enumerator")]
  76. HRESULT EnumDeviceInfo(
  77. [in] LONG lFlag,
  78. [out, retval] IEnumWIA_DEV_INFO **ppIEnum);
  79. //
  80. // Creates/loads device.
  81. //
  82. [local]
  83. HRESULT CreateDevice(
  84. [in] BSTR bstrDeviceID,
  85. [out] IWiaItem **ppWiaItemRoot);
  86. [call_as(CreateDevice), helpstring("Create an WIA device object")]
  87. HRESULT LocalCreateDevice(
  88. [in] BSTR bstrDeviceID,
  89. [out] IWiaItem **ppWiaItemRoot);
  90. //
  91. // Creates/loads user selected device. Client side only call.
  92. //
  93. [local]
  94. HRESULT SelectDeviceDlg(
  95. [in] HWND hwndParent,
  96. [in] LONG lDeviceType,
  97. [in] LONG lFlags,
  98. [in,out] BSTR *pbstrDeviceID,
  99. [out,retval] IWiaItem **ppItemRoot);
  100. [call_as(SelectDeviceDlg), helpstring("Present UI to select then create an WIA device")]
  101. HRESULT LocalSelectDeviceDlg(
  102. [in] HWND hwndParent,
  103. [in] LONG lDeviceType,
  104. [in] LONG lFlags,
  105. [in,out] BSTR *pbstrDeviceID,
  106. [out, retval] IWiaItem **ppItemRoot);
  107. //
  108. // Returns the device ID of user selected device. Client side only call.
  109. //
  110. [local]
  111. HRESULT SelectDeviceDlgID(
  112. [in] HWND hwndParent,
  113. [in] LONG lDeviceType,
  114. [in] LONG lFlags,
  115. [out, retval] BSTR *pbstrDeviceID );
  116. [call_as(SelectDeviceDlgID), helpstring("Present UI to select then create an WIA device, returns BSTR")]
  117. HRESULT LocalSelectDeviceDlgID(
  118. [in] HWND hwndParent,
  119. [in] LONG lDeviceType,
  120. [in] LONG lFlags,
  121. [out, retval] BSTR *pbstrDeviceID );
  122. //
  123. // Creates/loads user selected device and gets image. Client side only call.
  124. //
  125. [local]
  126. HRESULT GetImageDlg(
  127. [in] HWND hwndParent,
  128. [in] LONG lDeviceType,
  129. [in] LONG lFlags,
  130. [in] LONG lIntent,
  131. [in] IWiaItem *pItemRoot,
  132. [in] BSTR bstrFilename,
  133. [in,out] GUID *pguidFormat);
  134. [call_as(GetImageDlg), helpstring("Get an image to file")]
  135. HRESULT LocalGetImageDlg(
  136. [in] HWND hwndParent,
  137. [in] LONG lDeviceType,
  138. [in] LONG lFlags,
  139. [in] LONG lIntent,
  140. [in] IWiaItem *pItemRoot,
  141. [in] BSTR bstrFilename,
  142. [in,out] GUID *pguidFormat);
  143. //
  144. // Event registration
  145. //
  146. [local]
  147. HRESULT RegisterEventCallbackProgram(
  148. [in] LONG lFlags,
  149. [in] BSTR bstrDeviceID,
  150. [in] const GUID *pEventGUID,
  151. [in] BSTR bstrCommandline,
  152. [in] BSTR bstrName,
  153. [in] BSTR bstrDescription,
  154. [in] BSTR bstrIcon);
  155. [call_as(RegisterEventCallbackProgram), helpstring("Register application launch")]
  156. HRESULT LocalRegisterEventCallbackProgram(
  157. [in] LONG lFlags,
  158. [in] BSTR bstrDeviceID,
  159. [in] const GUID *pEventGUID,
  160. [in] BSTR bstrCommandline,
  161. [in] BSTR bstrName,
  162. [in] BSTR bstrDescription,
  163. [in] BSTR bstrIcon);
  164. [local]
  165. HRESULT RegisterEventCallbackInterface(
  166. [in] LONG lFlags,
  167. [in] BSTR bstrDeviceID,
  168. [in] const GUID *pEventGUID,
  169. [in,unique] IWiaEventCallback *pIWiaEventCallback,
  170. [out] IUnknown **pEventObject);
  171. [call_as(RegisterEventCallbackInterface), helpstring("Registers a WIA Event Callback")]
  172. HRESULT LocalRegisterEventCallbackInterface(
  173. [in] LONG lFlags,
  174. [in] BSTR bstrDeviceID,
  175. [in] const GUID *pEventGUID,
  176. [in,unique] IWiaEventCallback *pIWiaEventCallback,
  177. [out] IUnknown **pEventObject);
  178. [local]
  179. HRESULT RegisterEventCallbackCLSID(
  180. [in] LONG lFlags,
  181. [in] BSTR bstrDeviceID,
  182. [in] const GUID *pEventGUID,
  183. [in,unique] const GUID *pClsID,
  184. [in] BSTR bstrName,
  185. [in] BSTR bstrDescription,
  186. [in] BSTR bstrIcon);
  187. [call_as(RegisterEventCallbackCLSID), helpstring("Registers a WIA Event Callback via CLSID")]
  188. HRESULT LocalRegisterEventCallbackCLSID(
  189. [in] LONG lFlags,
  190. [in] BSTR bstrDeviceID,
  191. [in] const GUID *pEventGUID,
  192. [in,unique] const GUID *pClsID,
  193. [in] BSTR bstrName,
  194. [in] BSTR bstrDescription,
  195. [in] BSTR bstrIcon);
  196. //
  197. // add either a non-pnp local Wia device or a network device
  198. //
  199. [helpstring("Present UI to add a WIA device")]
  200. HRESULT AddDeviceDlg(
  201. [in] HWND hwndParent,
  202. [in] LONG lFlags);
  203. };
  204. /*******************************************************************************
  205. *
  206. * WIA Device Information Enumeration Interface
  207. *
  208. *******************************************************************************/
  209. [
  210. object,
  211. uuid(5e38b83c-8cf1-11d1-bf92-0060081ed811),
  212. helpstring("WIA Device Information Enumeration Interface"),
  213. pointer_default(unique)
  214. ]
  215. interface IEnumWIA_DEV_INFO : IUnknown
  216. {
  217. [local]
  218. HRESULT Next(
  219. [in] ULONG celt,
  220. [out,size_is(celt), length_is(*pceltFetched)] IWiaPropertyStorage **rgelt,
  221. [in,out,unique] ULONG* pceltFetched);
  222. [call_as(Next), helpstring("Gets the next device information IWiaPropertyStorage object")]
  223. HRESULT RemoteNext(
  224. [in] ULONG celt,
  225. [out,size_is(celt), length_is(*pceltFetched)] IWiaPropertyStorage **rgelt,
  226. [in,out,unique] ULONG* pceltFetched);
  227. [helpstring("Skips the next device information IWiaPropertyStorage object")]
  228. HRESULT Skip(
  229. [in] ULONG celt);
  230. [helpstring("Resets to first device information IWiaPropertyStorage object")]
  231. HRESULT Reset(void);
  232. [helpstring("Clones this IEnumWIA_DEV_INFO object")]
  233. HRESULT Clone(
  234. [out] IEnumWIA_DEV_INFO **ppIEnum);
  235. [helpstring("Returns the number of elements stored by this enumerator")]
  236. HRESULT GetCount(
  237. [out] ULONG *celt);
  238. }
  239. /**************************************************************************\
  240. *
  241. * IWiaEventCallback Interface
  242. *
  243. *
  244. *
  245. *
  246. *
  247. *
  248. * History:
  249. *
  250. * 2/11/1998
  251. *
  252. \**************************************************************************/
  253. [
  254. object,
  255. uuid(ae6287b0-0084-11d2-973b-00a0c9068f2e),
  256. helpstring("WIA Event callback"),
  257. pointer_default(unique)
  258. ]
  259. interface IWiaEventCallback : IUnknown
  260. {
  261. //
  262. // WIA event notification
  263. //
  264. HRESULT ImageEventCallback(
  265. [in] const GUID *pEventGUID,
  266. [in] BSTR bstrEventDescription,
  267. [in] BSTR bstrDeviceID,
  268. [in] BSTR bstrDeviceDescription,
  269. [in] DWORD dwDeviceType,
  270. [in] BSTR bstrFullItemName,
  271. [in, out] ULONG *pulEventType,
  272. [in] ULONG ulReserved);
  273. }
  274. /**************************************************************************\
  275. *
  276. * WIA_DATA_CALLBACK_HEADER
  277. *
  278. * lSize - size of this structure
  279. * lFormat - format of image
  280. * lBufferSize - size of buffer needed for complete data transfer
  281. * lPageCount - zero based count of total pages transfered
  282. *
  283. * History:
  284. *
  285. * 10/29/98
  286. *
  287. \**************************************************************************/
  288. typedef struct _WIA_DATA_CALLBACK_HEADER{
  289. LONG lSize;
  290. GUID guidFormatID;
  291. LONG lBufferSize;
  292. LONG lPageCount;
  293. }WIA_DATA_CALLBACK_HEADER,*PWIA_DATA_CALLBACK_HEADER;
  294. /**************************************************************************\
  295. *
  296. * IWiaDataCallback interface
  297. *
  298. *
  299. *
  300. *
  301. *
  302. * History:
  303. *
  304. * 10/29/1998 Original Version
  305. *
  306. \**************************************************************************/
  307. [
  308. object,
  309. uuid(a558a866-a5b0-11d2-a08f-00c04f72dc3c),
  310. helpstring("WIA data callback"),
  311. pointer_default(unique)
  312. ]
  313. interface IWiaDataCallback : IUnknown
  314. {
  315. //
  316. // image transfer status
  317. //
  318. [local]
  319. HRESULT BandedDataCallback(
  320. [in] LONG lMessage,
  321. [in] LONG lStatus,
  322. [in] LONG lPercentComplete,
  323. [in] LONG lOffset,
  324. [in] LONG lLength,
  325. [in] LONG lReserved,
  326. [in] LONG lResLength,
  327. [in,size_is(lResLength)] BYTE *pbBuffer);
  328. [call_as(BandedDataCallback) ,helpstring(" client data callback")]
  329. HRESULT RemoteBandedDataCallback(
  330. [in] LONG lMessage,
  331. [in] LONG lStatus,
  332. [in] LONG lPercentComplete,
  333. [in] LONG lOffset,
  334. [in] LONG lLength,
  335. [in] LONG lReserved,
  336. [in] LONG lResLength,
  337. [in,size_is(lResLength),unique] BYTE *pbBuffer);
  338. }
  339. /**************************************************************************\
  340. *
  341. * WIA_DATA_TRANSFER_INFO
  342. *
  343. * ulSize - Size of this structure
  344. * ulSection - Section provided by the client, otherwise NULL
  345. * ulBufferSize - Size of the buffer used in data transfer
  346. * bDoubleBuffer - Indicate whether the client want to use double buffer
  347. * ulReserved1 - Must be ZERO
  348. * ulReserved2 - Must be ZERO
  349. * History:
  350. *
  351. * 10/29/98
  352. *
  353. \**************************************************************************/
  354. typedef struct _WIA_DATA_TRANSFER_INFO {
  355. ULONG ulSize;
  356. ULONG ulSection;
  357. ULONG ulBufferSize;
  358. BOOL bDoubleBuffer;
  359. ULONG ulReserved1;
  360. ULONG ulReserved2;
  361. ULONG ulReserved3;
  362. } WIA_DATA_TRANSFER_INFO, *PWIA_DATA_TRANSFER_INFO;
  363. /**************************************************************************\
  364. *
  365. * WIA_EXTENDED_TRANSFER_INFO
  366. *
  367. * ulSize - Size of this structure.
  368. * ulMinBufferSize - Minimum size of buffer that can be requested.
  369. * ulOptimalBufferSize - The device's optimal buffer size.
  370. * ulMaxBufferSize - The maximum buffer size that can be requested.
  371. * ulNumBuffers - Number of buffers the server may use.
  372. *
  373. * History:
  374. *
  375. * 01/20/2000
  376. *
  377. \**************************************************************************/
  378. typedef struct _WIA_EXTENDED_TRANSFER_INFO {
  379. ULONG ulSize;
  380. ULONG ulMinBufferSize;
  381. ULONG ulOptimalBufferSize;
  382. ULONG ulMaxBufferSize;
  383. ULONG ulNumBuffers;
  384. } WIA_EXTENDED_TRANSFER_INFO, *PWIA_EXTENDED_TRANSFER_INFO;
  385. /**************************************************************************\
  386. *
  387. * IWiaDataTransfer - Interface to use shared memory to transfer an image
  388. *
  389. *
  390. *
  391. *
  392. *
  393. *
  394. *
  395. * History:
  396. *
  397. * 4/1/1998
  398. *
  399. \**************************************************************************/
  400. [
  401. object,
  402. uuid(a6cef998-a5b0-11d2-a08f-00c04f72dc3c),
  403. helpstring("WIA Data Transfer Interface"),
  404. pointer_default(unique)
  405. ]
  406. interface IWiaDataTransfer : IUnknown
  407. {
  408. [local]
  409. HRESULT idtGetData(
  410. [in,out] LPSTGMEDIUM pMedium,
  411. [in,unique] IWiaDataCallback *pIWiaDataCallback);
  412. [call_as(idtGetData), helpstring("IDataObject style data transfer with progress callback")]
  413. HRESULT idtGetDataEx(
  414. [in,out] LPSTGMEDIUM pMedium,
  415. [in,unique] IWiaDataCallback *pIWiaDataCallback);
  416. [local]
  417. HRESULT idtGetBandedData(
  418. [in,unique] PWIA_DATA_TRANSFER_INFO pWiaDataTransInfo,
  419. [in,unique] IWiaDataCallback *pIWiaDataCallback);
  420. [call_as(idtGetBandedData), helpstring("transfer image into a buffer")]
  421. HRESULT idtGetBandedDataEx(
  422. [in,unique] PWIA_DATA_TRANSFER_INFO pWiaDataTransInfo,
  423. [in,unique] IWiaDataCallback *pIWiaDataCallback);
  424. [helpstring("Check if format is supported")]
  425. HRESULT idtQueryGetData(
  426. [in,unique] WIA_FORMAT_INFO* pfe);
  427. [helpstring("Create format enumerator")]
  428. HRESULT idtEnumWIA_FORMAT_INFO(
  429. [out] IEnumWIA_FORMAT_INFO **ppEnum);
  430. [helpstring("Returns extended transfer information")]
  431. HRESULT idtGetExtendedTransferInfo(
  432. [out] PWIA_EXTENDED_TRANSFER_INFO pExtendedTransferInfo);
  433. }
  434. /*******************************************************************************
  435. *
  436. * IWiaItem Interface
  437. *
  438. *******************************************************************************/
  439. [
  440. object,
  441. uuid(4db1ad10-3391-11d2-9a33-00c04fa36145),
  442. helpstring("WIA Device Item Interface"),
  443. pointer_default(unique)
  444. ]
  445. interface IWiaItem : IUnknown
  446. {
  447. [helpstring("Get item type")]
  448. HRESULT GetItemType(
  449. [out] LONG *pItemType);
  450. [helpstring("Analyze an item")]
  451. HRESULT AnalyzeItem(
  452. [in] LONG lFlags);
  453. [helpstring("Get item enumerator")]
  454. HRESULT EnumChildItems(
  455. [out] IEnumWiaItem **ppIEnumWiaItem);
  456. [helpstring("Delete an item")]
  457. HRESULT DeleteItem(
  458. [in] LONG lFlags);
  459. [helpstring("Create a new child item")]
  460. HRESULT CreateChildItem(
  461. [in] LONG lFlags,
  462. [in] BSTR bstrItemName,
  463. [in] BSTR bstrFullItemName,
  464. [out] IWiaItem **ppIWiaItem);
  465. [helpstring("Enumerate event info")]
  466. HRESULT EnumRegisterEventInfo(
  467. [in] LONG lFlags,
  468. [in] const GUID *pEventGUID,
  469. [out] IEnumWIA_DEV_CAPS **ppIEnum);
  470. [helpstring("search for item by name")]
  471. HRESULT FindItemByName(
  472. [in] LONG lFlags,
  473. [in] BSTR bstrFullItemName,
  474. [out] IWiaItem **ppIWiaItem);
  475. // Client side only call.
  476. [local]
  477. HRESULT DeviceDlg(
  478. [in] HWND hwndParent,
  479. [in] LONG lFlags,
  480. [in] LONG lIntent,
  481. [out] LONG *plItemCount,
  482. [out] IWiaItem ***ppIWiaItem);
  483. [call_as(DeviceDlg), helpstring("Display device data acquistion UI")]
  484. HRESULT LocalDeviceDlg(
  485. [in] HWND hwndParent,
  486. [in] LONG lFlags,
  487. [in] LONG lIntent,
  488. [out] LONG *plItemCount,
  489. [out] IWiaItem ***pIWiaItem);
  490. [helpstring("Issue a device command")]
  491. HRESULT DeviceCommand(
  492. [in] LONG lFlags,
  493. [in] const GUID *pCmdGUID,
  494. [in, out] IWiaItem **pIWiaItem);
  495. [helpstring("Get device root item")]
  496. HRESULT GetRootItem(
  497. [out] IWiaItem **ppIWiaItem);
  498. [helpstring("Enumerate device events and commands")]
  499. HRESULT EnumDeviceCapabilities(
  500. [in] LONG lFlags,
  501. [out] IEnumWIA_DEV_CAPS **ppIEnumWIA_DEV_CAPS);
  502. [helpstring("Dump private item data, debug only")]
  503. HRESULT DumpItemData(
  504. [out] BSTR *bstrData);
  505. [helpstring("Dump private driver item data, debug only")]
  506. HRESULT DumpDrvItemData(
  507. [out] BSTR *bstrData);
  508. [helpstring("Dump private tree item data, debug only")]
  509. HRESULT DumpTreeItemData(
  510. [out] BSTR *bstrData);
  511. [helpstring("Diagnostic")]
  512. HRESULT Diagnostic(
  513. [in] ULONG ulSize,
  514. [in, size_is(ulSize)] BYTE *pBuffer);
  515. };
  516. /*******************************************************************************
  517. *
  518. * IWiaPropertyStorage Interface
  519. *
  520. *******************************************************************************/
  521. [
  522. object,
  523. uuid(98B5E8A0-29CC-491a-AAC0-E6DB4FDCCEB6),
  524. helpstring("WIA Property Storage Interface"),
  525. pointer_default(unique)
  526. ]
  527. interface IWiaPropertyStorage : IUnknown
  528. {
  529. /*
  530. * Should be inherited really
  531. */
  532. // When this IDL file is used for "IProp.dll" (the
  533. // standalone property set DLL), we must have local
  534. // and remotable routines (call_as routines are used
  535. // to remove BSTRs, which are not remotable with some
  536. // RPC run-times).
  537. //
  538. // For the remotable routines, we must use pointer
  539. // parameters (e.g. "*rgspec" rather than "rgspec[]")
  540. // so that the MIDL 2.0 compiler will generate an
  541. // interpereted proxy/stub, rather than inline.
  542. #ifdef IPROPERTY_DLL
  543. [local]
  544. #endif
  545. HRESULT ReadMultiple(
  546. [in] ULONG cpspec,
  547. [in, size_is(cpspec)]
  548. const PROPSPEC rgpspec[],
  549. [out, size_is(cpspec)]
  550. PROPVARIANT rgpropvar[]
  551. );
  552. #ifdef IPROPERTY_DLL
  553. [call_as(ReadMultiple)]
  554. HRESULT RemoteReadMultiple(
  555. [out] BOOL *pfBstrPresent,
  556. [in] ULONG cpspec,
  557. [in, size_is(cpspec)]
  558. const PROPSPEC *rgpspec,
  559. [out, size_is(cpspec)]
  560. PROPVARIANT *rgpropvar
  561. );
  562. #endif
  563. [local]
  564. HRESULT WriteMultiple(
  565. [in] ULONG cpspec,
  566. [in, size_is(cpspec)]
  567. const PROPSPEC rgpspec[],
  568. [in, size_is(cpspec)]
  569. const PROPVARIANT rgpropvar[],
  570. [in] PROPID propidNameFirst
  571. );
  572. [call_as(WriteMultiple)]
  573. HRESULT RemoteWriteMultiple(
  574. [in] ULONG cpspec,
  575. [in, size_is(cpspec)]
  576. const PROPSPEC *rgpspec,
  577. [in, size_is(cpspec)]
  578. const PROPVARIANT *rgpropvar,
  579. [in] PROPID propidNameFirst
  580. );
  581. #ifdef IPROPERTY_DLL
  582. [local]
  583. #endif
  584. HRESULT DeleteMultiple(
  585. [in] ULONG cpspec,
  586. [in, size_is(cpspec)]
  587. const PROPSPEC rgpspec[]
  588. );
  589. #ifdef IPROPERTY_DLL
  590. [call_as(DeleteMultiple)]
  591. HRESULT RemoteDeleteMultiple(
  592. [in] ULONG cpspec,
  593. [in, size_is(cpspec)]
  594. const PROPSPEC *rgpspec
  595. );
  596. #endif
  597. HRESULT ReadPropertyNames(
  598. [in] ULONG cpropid,
  599. [in, size_is(cpropid)]
  600. const PROPID rgpropid[],
  601. [out, size_is(cpropid)]
  602. LPOLESTR rglpwstrName[]
  603. );
  604. HRESULT WritePropertyNames(
  605. [in] ULONG cpropid,
  606. [in, size_is(cpropid)]
  607. const PROPID rgpropid[],
  608. [in, size_is(cpropid)]
  609. const LPOLESTR rglpwstrName[]
  610. );
  611. HRESULT DeletePropertyNames(
  612. [in] ULONG cpropid,
  613. [in, size_is(cpropid)]
  614. const PROPID rgpropid[]
  615. );
  616. HRESULT Commit(
  617. [in] DWORD grfCommitFlags
  618. );
  619. HRESULT Revert();
  620. HRESULT Enum(
  621. [out] IEnumSTATPROPSTG ** ppenum
  622. );
  623. HRESULT SetTimes(
  624. [in] FILETIME const * pctime,
  625. [in] FILETIME const * patime,
  626. [in] FILETIME const * pmtime
  627. );
  628. HRESULT SetClass(
  629. [in] REFCLSID clsid
  630. );
  631. HRESULT Stat(
  632. [out] STATPROPSETSTG * pstatpsstg
  633. );
  634. /*
  635. *=====================================================================*
  636. */
  637. [helpstring("Get property attribute information.")]
  638. HRESULT GetPropertyAttributes(
  639. [in] ULONG cpspec,
  640. [in, size_is(cpspec)] PROPSPEC rgpspec[],
  641. [out, size_is(cpspec)] ULONG rgflags[],
  642. [out, size_is(cpspec)] PROPVARIANT rgpropvar[]);
  643. [helpstring("Returns the current number of properties in this property storage.")]
  644. HRESULT GetCount(
  645. [out] ULONG *pulNumProps);
  646. [helpstring("Get an items property stream")]
  647. HRESULT GetPropertyStream(
  648. [out] GUID *pCompatibilityId,
  649. [out] IStream **ppIStream);
  650. [local]
  651. HRESULT SetPropertyStream(
  652. [in] GUID *pCompatibilityId,
  653. [in, unique] IStream *pIStream);
  654. [call_as(SetPropertyStream), helpstring("Set an items property stream")]
  655. HRESULT RemoteSetPropertyStream(
  656. [in] GUID *pCompatibilityId,
  657. [in, unique] IStream *pIStream);
  658. };
  659. /*******************************************************************************
  660. *
  661. * IEnumWiaItem Interface
  662. *
  663. *******************************************************************************/
  664. [
  665. object,
  666. uuid(5e8383fc-3391-11d2-9a33-00c04fa36145),
  667. helpstring("WIA Device Class Item Enumeration Interface"),
  668. pointer_default(unique)
  669. ]
  670. interface IEnumWiaItem : IUnknown
  671. {
  672. [local]
  673. HRESULT Next(
  674. [in] ULONG celt,
  675. [out, size_is(celt), length_is(*pceltFetched)] IWiaItem **ppIWiaItem,
  676. [in, out, unique] ULONG *pceltFetched);
  677. [call_as(Next), helpstring("Gets the next IWiaItem object")]
  678. HRESULT RemoteNext(
  679. [in] ULONG celt,
  680. [out, size_is(celt), length_is(*pceltFetched)] IWiaItem **ppIWiaItem,
  681. [in, out, unique] ULONG *pceltFetched);
  682. [helpstring("Skips the next IWiaItem object")]
  683. HRESULT Skip(
  684. [in] ULONG celt);
  685. [helpstring("Resets to first IWiaItem object")]
  686. HRESULT Reset(void);
  687. [helpstring("Clone IEnumWiaItem object")]
  688. HRESULT Clone(
  689. [out] IEnumWiaItem **ppIEnum);
  690. [helpstring("Returns the number of elements stored by this enumerator")]
  691. HRESULT GetCount(
  692. [out] ULONG *celt);
  693. }
  694. /*******************************************************************************
  695. *
  696. * WIA_DEV_CAP
  697. *
  698. * WIA_DEV_CAP structure returns event and command information
  699. * for the IEnumWIA_DEV_CAPS Interface
  700. *
  701. *******************************************************************************/
  702. typedef struct _WIA_DEV_CAP {
  703. GUID guid;
  704. ULONG ulFlags; // Indicate the handler is default, etc
  705. BSTR bstrName;
  706. BSTR bstrDescription;
  707. BSTR bstrIcon;
  708. BSTR bstrCommandline;
  709. } WIA_DEV_CAP, *PWIA_DEV_CAP, WIA_EVENT_HANDLER, *PWIA_EVENT_HANDLER;
  710. /*******************************************************************************
  711. *
  712. * IEnumWIA_DEV_CAPS Interface
  713. *
  714. *******************************************************************************/
  715. [
  716. object,
  717. uuid(1fcc4287-aca6-11d2-a093-00c04f72dc3c),
  718. helpstring("WIA_DEV_CAPS Enumeration Interface"),
  719. pointer_default(unique)
  720. ]
  721. interface IEnumWIA_DEV_CAPS : IUnknown
  722. {
  723. [local]
  724. HRESULT Next(
  725. [in] ULONG celt,
  726. [out, size_is(celt), length_is(*pceltFetched)] WIA_DEV_CAP *rgelt,
  727. [in,out,unique] ULONG *pceltFetched);
  728. [call_as(Next), helpstring("Gets the next WIA_DEV_CAPS")]
  729. HRESULT RemoteNext(
  730. [in] ULONG celt,
  731. [out, size_is(celt), length_is(*pceltFetched)] WIA_DEV_CAP *rgelt,
  732. [in,out,unique] ULONG *pceltFetched);
  733. [helpstring("Skips the next WIA_DEV_CAPS")]
  734. HRESULT Skip(
  735. [in] ULONG celt);
  736. [helpstring("Resets to first WIA_DEV_CAPS")]
  737. HRESULT Reset(void);
  738. [helpstring("Clone IEnumWIA_DEV_CAPS object")]
  739. HRESULT Clone(
  740. [out] IEnumWIA_DEV_CAPS **ppIEnum);
  741. [helpstring("Returns the number of elements stored by this enumerator")]
  742. HRESULT GetCount(
  743. [out] ULONG *pcelt);
  744. }
  745. /*******************************************************************************
  746. *
  747. * IEnumWIA_FORMAT_INF Interface
  748. *
  749. *******************************************************************************/
  750. [
  751. object,
  752. uuid(81BEFC5B-656D-44f1-B24C-D41D51B4DC81),
  753. helpstring("WIA_FORMAT_INFO Enumeration Interface"),
  754. pointer_default(unique)
  755. ]
  756. interface IEnumWIA_FORMAT_INFO : IUnknown
  757. {
  758. [local]
  759. HRESULT Next(
  760. [in] ULONG celt,
  761. [out, size_is(celt), length_is(*pceltFetched)] WIA_FORMAT_INFO *rgelt,
  762. [in,out,unique] ULONG *pceltFetched);
  763. [call_as(Next), helpstring("Gets the next WIA_FORMAT_INFO")]
  764. HRESULT RemoteNext(
  765. [in] ULONG celt,
  766. [out, size_is(celt), length_is(*pceltFetched)] WIA_FORMAT_INFO *rgelt,
  767. [in,out,unique] ULONG *pceltFetched);
  768. [helpstring("Skips the next WIA_FORMAT_INFO")]
  769. HRESULT Skip(
  770. [in] ULONG celt);
  771. [helpstring("Resets to first WIA_FORMAT_INFO")]
  772. HRESULT Reset(void);
  773. [helpstring("Clone IEnumWIA_FORMAT_INFO object")]
  774. HRESULT Clone(
  775. [out] IEnumWIA_FORMAT_INFO **ppIEnum);
  776. [helpstring("Returns the number of elements stored by this enumerator")]
  777. HRESULT GetCount(
  778. [out] ULONG *pcelt);
  779. }
  780. /*******************************************************************************
  781. *
  782. * WIA Logging Interface
  783. *
  784. *******************************************************************************/
  785. [
  786. object,
  787. uuid(A00C10B6-82A1-452f-8B6C-86062AAD6890),
  788. helpstring("WIA Logging Interface"),
  789. pointer_default(unique)
  790. ]
  791. interface IWiaLog : IUnknown
  792. {
  793. [helpstring("Initialize Logging object")]
  794. HRESULT InitializeLog(
  795. [in] LONG hInstance);
  796. [helpstring("Write ERRROR Information to log file, Translating HRESULT to error string")]
  797. HRESULT hResult(
  798. [in] HRESULT hResult);
  799. [helpstring("Write TRACE,ERROR,WARNING, etc.. Information to log file, using service Resource ID")]
  800. HRESULT Log(
  801. [in] LONG lFlags,
  802. [in] LONG lResID,
  803. [in] LONG lDetail,
  804. [in] BSTR bstrText);
  805. };
  806. /*******************************************************************************
  807. *
  808. * WIA Extended Logging Interface
  809. *
  810. *******************************************************************************/
  811. [
  812. object,
  813. uuid(AF1F22AC-7A40-4787-B421-AEb47A1FBD0B),
  814. helpstring("WIA (Extended) Logging Interface"),
  815. pointer_default(unique)
  816. ]
  817. interface IWiaLogEx : IUnknown
  818. {
  819. [helpstring("Initialize Logging object")]
  820. HRESULT InitializeLogEx(
  821. [in] BYTE *hInstance);
  822. [helpstring("Write ERRROR Information to log file, Translating HRESULT to error string")]
  823. HRESULT hResult(
  824. [in] HRESULT hResult);
  825. [helpstring("Write information to log - compatible with IWiaLog::Log(...)")]
  826. HRESULT Log(
  827. [in] LONG lFlags,
  828. [in] LONG lResID,
  829. [in] LONG lDetail,
  830. [in] BSTR bstrText);
  831. [helpstring("Write ERRROR Information to log file, Translating HRESULT to error string")]
  832. HRESULT hResultEx(
  833. [in] LONG lMethodId,
  834. [in] HRESULT hResult);
  835. [helpstring("Write TRACE,ERROR,WARNING, etc.. Information to log file, using service Resource ID")]
  836. HRESULT LogEx(
  837. [in] LONG lMethodId,
  838. [in] LONG lFlags,
  839. [in] LONG lResID,
  840. [in] LONG lDetail,
  841. [in] BSTR bstrText);
  842. };
  843. /*******************************************************************************
  844. *
  845. * WiaDevMgr General Notification Interface
  846. *
  847. *******************************************************************************/
  848. [
  849. object,
  850. uuid(70681EA0-E7BF-4291-9FB1-4E8813A3F78E),
  851. helpstring("WiaDevMgr Notification Interface"),
  852. pointer_default(unique)
  853. ]
  854. interface IWiaNotifyDevMgr : IUnknown
  855. {
  856. [helpstring("Notify of new device arrival")]
  857. HRESULT NewDeviceArrival();
  858. };
  859. [
  860. object,
  861. uuid(6291ef2c-36ef-4532-876a-8e132593778d),
  862. helpstring("WIA Item extras interface"),
  863. pointer_default(unique)
  864. ]
  865. interface IWiaItemExtras : IUnknown
  866. {
  867. [helpstring("Retrieve extended error string")]
  868. HRESULT GetExtendedErrorInfo([out] BSTR *bstrErrorText);
  869. [helpstring("Escape to driver")]
  870. HRESULT Escape([in] DWORD dwEscapeCode,
  871. [in, size_is(cbInDataSize)] BYTE * lpInData,
  872. [in] DWORD cbInDataSize,
  873. [out, size_is(dwOutDataSize), length_is((pdwActualDataSize) ? *pdwActualDataSize : dwOutDataSize)] BYTE * pOutData,
  874. [in] DWORD dwOutDataSize,
  875. [out] DWORD *pdwActualDataSize);
  876. [helpstring("Cancel pending IO")]
  877. HRESULT CancelPendingIO();
  878. }
  879. /*******************************************************************************
  880. *
  881. * C O M P O N E N T D E S C R I P T I O N S
  882. *
  883. *******************************************************************************/
  884. [
  885. uuid(99f74582-8cf1-11d1-bf92-0060081ed811),
  886. version(1.0),
  887. helpstring("WIA Type Library")
  888. ]
  889. library WiaDevMgr
  890. {
  891. importlib("stdole32.tlb") ;
  892. // WIA Device Manager
  893. [
  894. uuid(a1f4e726-8cf1-11d1-bf92-0060081ed811),
  895. helpstring("WIA Device Manager")
  896. ]
  897. coclass WiaDevMgr
  898. {
  899. [default] interface IWiaDevMgr;
  900. };
  901. // WIA Logging
  902. [
  903. uuid(A1E75357-881A-419e-83E2-BB16DB197C68),
  904. helpstring("WIA Logging")
  905. ]
  906. coclass WiaLog
  907. {
  908. interface IWiaLog;
  909. };
  910. };