共用方式為


IWiaMiniDrv::d rvAcquireItemData 方法 (wiamindr_lh.h)

WIA 服務會呼叫 IWiaMiniDrv::d rvAcquireItemData 方法,以將數據從裝置傳輸到應用程式。

語法

HRESULT drvAcquireItemData(
  BYTE                      *__MIDL__IWiaMiniDrv0009,
  LONG                      __MIDL__IWiaMiniDrv0010,
  PMINIDRV_TRANSFER_CONTEXT __MIDL__IWiaMiniDrv0011,
  LONG                      *__MIDL__IWiaMiniDrv0012
);

參數

__MIDL__IWiaMiniDrv0009

lFlags [in]

保留。

__MIDL__IWiaMiniDrv0010

pWiasContext [in]

WIA 專案內容的指標。

__MIDL__IWiaMiniDrv0011

plDevErrVal [out]

指向將接收此方法狀態代碼的記憶體位置。 如果此方法傳回 S_OK,則儲存的值會是零。 否則,minidriver 特定錯誤碼會儲存在此參數所指向的位置。

__MIDL__IWiaMiniDrv0012

pmdtc [in, out]

指向包含裝置傳輸內容的 MINIDRV_TRANSFER_CONTEXT 結構。 MINIDRV_TRANSFER_CONTEXT 結構包含與要傳輸之數據相關的參數。

傳回值

成功時,方法應該傳回S_OK,並清除 plDevErrVal所指向的裝置錯誤值。 如果已取消傳輸,方法應該會傳回S_FALSE。 如果方法失敗,它應該會傳回標準 COM 錯誤碼,並在 plDevErrVal 所指向的記憶體中填入迷你驅動程式特定的錯誤碼值,< 備註 一節有適用於ADF掃描的其他傳回值資訊。

言論

傳輸有兩種主要類型:記憶體型和檔案型。 WIA 服務會指出要透過 pmdtc 設定來執行哪一種類型-->tymed,這會 TYMED_CALLBACKTYMED_MULTIPAGE_CALLBACK 記憶體型傳輸,以及 TYMED_FILETYMED_MULTIPAGE_FILE 進行檔傳輸。 如需這些常數的詳細資訊,請參閱 WIA_IPA_TYMED

  • 針對記憶體型傳輸,緩衝區可能或可能尚未配置,如 pmdtc 中的值所指示-->bClassDrvAllocBuf。 WIA 服務最多可以將兩個緩衝區傳遞至迷你驅動程式,但通常只會傳遞一個緩衝區。 緩衝區數目是由 pmdtc 中的值所指定,>lNumBuffers。 如果尚未配置緩衝區的記憶體,minidriver 應該使用任何一般方式來配置它,例如 CoTaskMemAlloc,或 新的。 如果 minidriver 配置緩衝區,它也會負責釋放緩衝區。

  • 針對文件傳輸,minidriver 應該先將數據寫入 WIA 服務呼叫此方法時傳遞的緩衝區,然後呼叫 wiasWritePageBufToFile,以將緩衝區數據寫入所涉及的檔案。 minidriver 不應該嘗試使用 pmdtc 中指定的檔句柄 -->hFile 將數據寫入檔案。

minidriver 應該定期呼叫 COM 介面點中的 IWiaMiniDrvCallBack::MiniDrvCallback 方法,方法是 pdmtc-->pIWiaMiniDrvCallBack 更新傳輸的狀態。 針對記憶體型傳輸,此函式會用來將數據傳回應用程式。 應該呼叫此函式的頻率會留給迷你驅動程式,但應該在傳輸期間呼叫大約十次,或大約每秒呼叫一次,但會更常呼叫。

WIA 服務提供的其他傳輸參數包括:

  • pmdtc-->guidFormatID - 數據格式

  • pmdtc-->lCompression - 使用的壓縮類型

ADF 配備掃描器的潛在問題是在掃描作業期間用完紙張。 實作 IWiaMiniDrv::d rvAcquireItemData 傳回的 HRESULT 取決於掃描器WIA_DPS_PAGES屬性的目前設定,以及是否已正確掃描所有頁面。 使用下列規則來引導您判斷適當的 HRESULT,以傳回此方法。

場景 HRESULT 值
WIA_DPS_PAGES 屬性已設定為 0,掃描器會清空其 ADF,沒有任何錯誤。
WIA_DPS_PAGES 屬性已設定為 N (其中 N > 0),掃描器處理 N 頁且沒有錯誤。
S_OK
WIA_DPS_PAGES 屬性已設定為 N,掃描器至少處理了一頁,但在處理所有 N 頁之前已用完紙張。 WIA_STATUS_END_OF_MEDIA
掃描器意外偵測到多個頁面摘要、停止掃描,並將 WIA_DPS_DOCUMENT_HANDLING_STATUS 設定為MULTIPLE_FEED。 WIA_ERROR_MULTI_FEED
不論WIA_DPS_PAGES屬性的設定為何,掃描器在第一次掃描時都用完了紙張。
掃描作業期間發生紙張堵塞或其他錯誤。
其他錯誤碼

要求

要求 價值
目標平臺 桌面
標頭 wiamindr_lh.h (包括 Wiamindr.h)

另請參閱

IWiaMiniDrv

IWiaMiniDrv::d rvGetDeviceErrorStr

MINIDRV_TRANSFER_CONTEXT

wiasGetImageInformation