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.

148 lines
4.7 KiB

  1. /*******************************************************************************
  2. *
  3. * (C) COPYRIGHT MICROSOFT CORP., 1999
  4. *
  5. * TITLE: WiaPriv.Idl
  6. *
  7. * VERSION: 1.0
  8. *
  9. * DATE: 30 Nov, 1999
  10. *
  11. * DESCRIPTION:
  12. * Private IDL source for STI/WIA.
  13. *
  14. *******************************************************************************/
  15. interface IStiLockMgr;
  16. interface IWiaDataCallback;
  17. interface IWiaItemInternal;
  18. import "unknwn.idl";
  19. /*******************************************************************************
  20. *
  21. * Sti Locking Interface
  22. *
  23. *******************************************************************************/
  24. [
  25. object,
  26. uuid(70681EA0-E7BF-4291-9FB1-FE550482AB88),
  27. helpstring("Lock Manager Interface"),
  28. pointer_default(unique)
  29. ]
  30. interface IStiLockMgr : IUnknown
  31. {
  32. [id(1), helpstring("Request Device Lock method")]
  33. HRESULT RequestLock(
  34. [in] BSTR bstrDeviceName,
  35. [in] ULONG ulTimeout,
  36. [in] BOOL bInServerProcess);
  37. [id(2), helpstring("Request Device Unlock method")]
  38. HRESULT RequestUnlock(
  39. [in] BSTR bstrDeviceName,
  40. [in] BOOL bInServerProcess);
  41. };
  42. /*******************************************************************************
  43. * WIA_DATA_THREAD_INFO
  44. *
  45. * Information for data callback thread
  46. *
  47. * History:
  48. *
  49. * 4/9/1999 Original Version
  50. *
  51. *******************************************************************************/
  52. typedef struct _WIA_DATA_THREAD_INFO {
  53. //
  54. // communications to client
  55. //
  56. LONG lReason;
  57. LONG lStatus;
  58. LONG lPercentComplete;
  59. LONG lOffset;
  60. LONG lLength;
  61. LONG lClientAddress;
  62. LONG lMarshalLength;
  63. BYTE *pBuffer;
  64. //
  65. // thread sync
  66. //
  67. BOOL bTerminateThread;
  68. HANDLE hEventStart;
  69. HANDLE hEventComplete;
  70. HRESULT hr;
  71. IWiaDataCallback* pIDataCallback;
  72. }WIA_DATA_THREAD_INFO,*PWIA_DATA_THREAD_INFO;
  73. /**************************************************************************\
  74. *
  75. * WIA_DATA_CB_BUF_INFO
  76. * Internal transfer information struct.
  77. *
  78. * ulSize - Size of this structure
  79. * pMappingHandle - File mapped handle provided as shared memory buffer
  80. * pTransferBuffer - Pointer to shared memory buffer
  81. * ulBufferSize - Size of the buffer used in data transfer
  82. * ulClientProcessId- Process ID of client
  83. * History:
  84. *
  85. * 07/20/00
  86. *
  87. \**************************************************************************/
  88. typedef struct _WIA_DATA_CB_BUF_INFO {
  89. ULONG ulSize;
  90. ULONG_PTR pMappingHandle;
  91. ULONG_PTR pTransferBuffer;
  92. ULONG ulBufferSize;
  93. ULONG ulClientProcessId;
  94. } WIA_DATA_CB_BUF_INFO, *PWIA_DATA_CB_BUF_INFO;
  95. /*******************************************************************************
  96. *
  97. * IWiaItemInternal Interface
  98. *
  99. *******************************************************************************/
  100. [
  101. object,
  102. uuid(B884E681-66BA-4014-AFBF-DCB3BEE45FAA),
  103. helpstring("WIA Item Internal Interface"),
  104. pointer_default(unique)
  105. ]
  106. interface IWiaItemInternal : IUnknown
  107. {
  108. [helpstring("Store info for callbacks")]
  109. HRESULT SetCallbackBufferInfo(
  110. [in] WIA_DATA_CB_BUF_INFO DataCBBufInfo);
  111. [helpstring("Retrieve info for callbacks")]
  112. HRESULT GetCallbackBufferInfo(
  113. [in, out] WIA_DATA_CB_BUF_INFO *pDataCBBufInfo);
  114. [helpstring("Start remote transfer")]
  115. HRESULT idtStartRemoteDataTransfer();
  116. [helpstring("Get a single band (or other message) from remote device")]
  117. HRESULT idtRemoteDataTransfer(
  118. [in] ULONG nNumberOfBytesToRead,
  119. [out] ULONG *pNumberOfBytesRead,
  120. [out, size_is(nNumberOfBytesToRead), length_is(*pNumberOfBytesRead)] BYTE *pBuffer,
  121. [out] LONG *pOffset,
  122. [out] LONG *pMessage,
  123. [out] LONG *pStatus,
  124. [out] LONG *pPercentComplete);
  125. [helpstring("Stop remote transfer")]
  126. HRESULT idtStopRemoteDataTransfer();
  127. }