共用方式為


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_CALLBACK或TYMED_MULTIPAGE_CALLBACK用於記憶體型傳輸,以及檔案傳輸TYMED_FILETYMED_MULTIPAGE_FILE。 如需這些常數的詳細資訊,請參閱 WIA_IPA_TYMED

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

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

Minidriver 應該定期呼叫 COM 介面點中的 IWiaMiniDrvCallBack::MiniDrvCallback 方法,由 pdmtc-->pIWiaMiniDrvCallBack 更新傳輸的狀態。 針對以記憶體為基礎的傳輸,此函式是用來將數據傳回應用程式。 應該呼叫此函式的頻率會保留至迷你驅動程式,但應該在傳輸期間呼叫大約 10 次,或大約每秒呼叫一次,無論頻率為何。

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屬性的設定為何。
掃描作業期間發生紙張 Jam 或其他錯誤。
其他錯誤碼

規格需求

需求
目標平台 桌面
標頭 wiamindr_lh.h (包括 Wiamindr.h)

另請參閱

IWiaMiniDrv

IWiaMiniDrv::d rvGetDeviceErrorStr

MINIDRV_TRANSFER_CONTEXT

wiasGetImageInformation