IStream 資料傳輸驅動程式變更
若要將 Windows Vista 之前開發的驅動程式變更降到最低,驅動程式不需要實作任何新的介面來支援 IStream 資料傳輸。 相反地,新的介面是透過 IWiaMiniDrvCallBack 介面公開。 驅動程式可以針對新的IWiaTransfer回呼函式呼叫IWiaMiniDrvCallBack::QueryInterface,以便他們存取資料流程和狀態通知。 IWiaTransfer介面會在Microsoft Windows SDK檔中說明。
驅動程式內的資料傳輸程式碼現在更為簡單,因為所有傳輸都會以相同方式處理,而沒有檔案或記憶體傳輸分支邏輯。
不支援 IStream 傳輸模型的驅動程式通常會執行下列步驟:
檢查旗標,以判斷要求是否為上傳或下載。
取得 IWiaMiniDrvCallBack 介面。
從回呼函式接收目的地資料流程。
執行資料傳輸迴圈:
- 從裝置接收資料。
- 將資料寫入資料流程。
不過,對於實作新 IStream 傳輸模型的驅動程式,WIA 服務不會呼叫 IWiaMiniDrv::d rvWriteItemProperties ,因為支援 資料夾取得 。
在資料夾擷取中,單一傳輸要求位於父專案上,但實際專案屬性則位於正在傳輸的每個子專案上。 不會針對每個子專案呼叫 IWiaMiniDrv::d rvWriteItemProperties 方法,因此此方法無法用來程式設計裝置設定。 對於支援 IStream 資料傳輸的驅動程式,WIA 服務會改為呼叫 IWiaMiniDrv::d rvAcquireItemData 。
注意 這項變更只會影響支援新資料傳輸的驅動程式。 不支援 IStream 資料傳輸的舊版驅動程式不會受到影響;WIA 服務會繼續為其呼叫 IWiaMiniDrv::d rvWriteItemProperties 方法。
在驅動程式對IWiaTransferCallback::GetNextStream進行多個呼叫的資料夾下載 (,如Microsoft Windows SDK檔) 所述,驅動程式一次只能有一個作用中的資料流程。
驅動程式必須只呼叫資料流程的 IStream::Write、 IStream::Seek和 IStream::SetSize 方法 (,這些方法會在下載作業期間) Windows SDK 檔中說明。 此限制可讓您更輕鬆地撰寫篩選。 驅動程式不應該預期目的地資料流程會實作任何其他方法。
當 WIA_DPS_PAGE_SIZE 屬性設定為WIA_PAGE_AUTO (,也就是) 啟用自動頁面大小偵測時,驅動程式應該只在影像完成傳輸影像資料之後,才提供影像的精確維度資訊。 針對以資料流程為基礎的傳輸,驅動程式應該會在傳輸結束時更新映射標頭中的映射維度。 在新會話的開頭,WIA_DPS_PAGE_SIZE 屬性的值應該一律設定為非WIA_PAGE_AUTO的值。