共用方式為


WIA 相容性層數據傳輸概觀

如果沒有傳輸相容性層,Windows Vista WIA 驅動程式必須實作 TYMED 和串流式數據傳輸樣式,才能從舊版和 Windows Vista 應用程式執行數據傳輸。 同樣地,Windows Vista WIA 應用程式必須實作這兩種傳輸樣式(使用不同的回呼實作),才能從舊版和 Windows Vista 驅動程式執行數據傳輸。 使用 WIA 相容性層時,WIA 應用程式的驅動程式類型對 WIA 應用程式而言是透明的,而 Windows Vista WIA 驅動程式不需要處理任何舊版傳輸程式代碼。

有兩種傳輸案例需要相容性層,每個案例都可以進一步細分為兩個子類別:

  1. 從 Windows Vista 驅動程式傳輸資料的舊版應用程式:

    1. 檔傳輸:應用程式會呼叫 IWiaDataTransfer::idtGetBandedData
    2. 回呼傳輸:應用程式會呼叫 IWiaDataTransfer::idtGetData
  2. 從舊版驅動程式傳輸資料的 Windows Vista 應用程式:

    1. 檔傳輸:相容性層會起始舊版驅動程序的檔案傳輸。
    2. 回呼傳輸:相容性層會使用舊版驅動程式起始回呼傳輸。

判斷是否要使用相容性層的第一個步驟是判斷 WIA 驅動程式是否為 Windows Vista 驅動程式或舊版驅動程式。 WIA 服務會藉由查看驅動程式從 IStiUSD::GetCapabilities 傳回的版本號碼來判斷這一點。 舊版驅動程式會傳回版本號碼的STI_VERSION,而 Windows Vista 驅動程式必須傳回STI_VERSION_3。 此版本號碼將會公開至 Windows Vista 屬性中的 WIA COM Proxy(以及 WIA 應用程式),WIA_DIP_STI_DRIVER_VERSION。

判斷是否要使用相容性層的下一個步驟是判斷應用程式是否為 Windows Vista WIA 應用程式或舊版 WIA 應用程式很簡單:如果應用程式呼叫 IWiaDataTransfer::idtGetBandedData 或 IWiaDataTransfer::idtGetData,則為舊版 WIA 應用程式,如果應用程式呼叫 IWiaTransfer::D ownload 它是 Windows Vista WIA 應用程式。

使用以數據流為基礎的新數據傳輸模型,WIA 服務將不再區分TYMED_CALLBACK和TYMED_FILE(或TYMED_MULTIPAGE_CALLBACK和TYMED_MULTIPAGE_FILE)。 相反地,只會有TYMED_FILE和TYMED_MULTIPAGE_FILE。 需要TYMED_MULTIPAGE_FILE,讓驅動程式支援多頁 TIFF (或 PDF) 掃描。 如需 TYMED 常數的詳細資訊,請參閱 瞭解 TYMED

WIA 不支援 Windows Vista 驅動程式中的記憶體位圖格式 WiaImgFmt_MEMORYBMP

Windows Vista 驅動程式可以傳送更新訊息以傳輸頻帶中的數據,而不是讓驅動程式在傳輸期間快取整個映像。 這種傳輸形式適用於在掃描期間傳輸數據,因為無法立即判斷要傳輸的影像大小,例如,使用捲動摘要掃描器進行掃描。 為了在頻帶中傳輸影像數據,驅動程式必須在IWiaTransferCallback::GetNextStream 中傳遞給它的數據流上呼叫 IStream::Seek

如需 TYMED 和數據流型傳輸的其他資訊,請參閱 數據傳輸

Microsoft Windows SDK 文件中會討論 IWiaDataTransfer、IWiaTransferIStream 介面。