建立映射擷取 API 的Device-Specific元件
影像擷取 API,例如 TWAIN,通常需要裝置特定的元件,例如 TWAIN 資料來源。 這些裝置特定元件應該使用 IStillImage COM 介面 和 IStiDevice COM 介面 來與使用者模式仍會映射設備磁碟機和事件監視器進行通訊。
映射擷取 API 可以呼叫 IStillImage::GetDeviceValue 和 IStillImage::SetDeviceValue 來讀取和寫入 仍然映射裝置的登錄專案。 例如,每個仍然映射裝置的 TWAIN 資料來源名稱都會儲存在登錄中。
由於 TWAIN API 不允許應用程式在呼叫資料來源時指定使用中的裝置,因此資料來源通常會呼叫 IStillImage::GetDeviceList 以取得所有仍然影像裝置的清單,然後搜尋清單以尋找正確的裝置,通常是根據製造商和型號名稱。 製造商和型號文字名稱是從安裝資訊 (INF) 檔案取得。 因為 TWAIN 有 32 個字元的資料來源名稱限制,而且因為 WIA 將 「WIA-」 附加至字串以建構相容的名稱,所以 INF 檔案中的文字不應超過 28 個字元。 否則,對整個字串執行比較且不只是前 32 個字元的 TWAIN 相容應用程式可能無法自動尋找導致應用程式啟動的裝置。
若要存取裝置,映射擷取軟體會呼叫 IStillImage::CreateDevice ,以建立定義 IStiDevice 介面的 COM 物件的實例。 IStiDevice介面提供數種方法來執行裝置 I/O 作業。 建立物件實例時,映射擷取軟體應該指定「資料」 傳輸模式。
映射擷取軟體可以呼叫 IStiDevice::Subscribe 以要求事件監視器傳遞 「仍然映射裝置事件」的通知。 收到通知之後,可以呼叫 IStiDevice::GetLastNotificationData 來判斷事件種類。 不再需要通知時,應該呼叫IStiDevice::UnSubscribe。
當映射擷取軟體使用 IStiDevice 介面完成時,它必須呼叫 IStiDevice::Release。