共用方式為


WIA-TWAIN 相容性

如果裝置可以有兩個以上的驅動程式,請徹底測試這些驅動程式,以彼此相容。 例如,如果某個驅動程式讓裝置處於無法使用狀態 (,例如驅動程式未在某些通訊協定中傳送關閉會話訊息) ,則嘗試與裝置通訊時,另一個驅動程式可能會失敗。 這種情況通常會發生在序列裝置上。

相同 DLL 中的 WIA 和 TWAIN

如果您同時從單一 DLL 執行 WIA 驅動程式和 TWAIN 驅動程式,WIA 服務和 TWAIN 應用程式將會同時載入此 DLL 的實例。 DLL 的 WIA 實例將會建置 WIA 專案樹狀結構。 此樹狀結構代表相機上的資料夾和影像。 任何使用 WIA (的應用程式,例如[我的電腦] 或 [掃描器和相機精靈]) 都會有驅動程式中的專案樹狀結構複本。

透過 TWAIN 驅動程式刪除或新增映射時,WIA 驅動程式不會收到這項變更的通知。 因此,WIA 專案樹狀結構會包含已刪除的影像,或不包含已新增的影像。 不論是哪一種情況,驅動程式都必須重新整理其專案樹狀結構。 若要這樣做,TWAIN 驅動程式必須訂購 WIA 驅動程式,以便在新增或刪除映射時重新整理其專案樹狀結構。

這樣做的其中一種方式是從 TWAIN 驅動程式呼叫 CoCreateInstance (CLSID_IWiaDevMgr,...) 、列舉所有裝置,以及搜尋您的裝置。 透過此列舉識別驅動程式的其中一種方式是在 WIA 驅動程式中建立自訂屬性,如此一來,如果 TWAIN 驅動程式查詢此屬性並存在,您將知道它是 WIA 驅動程式。 擁有驅動程式的IWiaItem之後,請將命令傳送至驅動程式以重建其樹狀結構 (例如,在呼叫 IWiaItem::D eviceCommand方法) 中傳送WIA CMD_SYNCHRONIZE命令。 Microsoft Windows SDK檔中會說明CoCreateInstanceIWiaDevMgrIWiaItem

重新整理 WIA 專案樹狀結構的另一種方式是在 WIA 驅動程式中建立具名 事件 。 然後,WIA 驅動程式中的執行緒可以等候發出此事件的訊號。 每當您透過 TWAIN 驅動程式刪除或新增映射時,TWAIN 驅動程式會藉由在此具名事件上呼叫 Windows SDK 檔) ) 中所述的 SetEvent (來發出訊號 (。 然後會釋放 WIA 驅動程式中的執行緒,而 WIA 驅動程式會重建樹狀結構。

不論是哪一種方式,您都應該重建樹狀結構,以反映對相機或掃描器上實際影像所做的任何變更。 請確定每當從專案樹狀目錄新增或刪除專案來更新樹狀結構時,您會將事件排入佇列 (例如,WIA_EVENT_ITEM_DELETED或WIA_EVENT_TREE_UPDATED (,以取得這些和其他 WIA 事件識別碼的描述,請參閱 Windows SDK 檔) ) 。 如果您在樹狀結構變更時成功傳送事件,這會解決我的電腦和其他 WIA 應用程式未自動更新的問題。

注意 雖然您的 TWAIN 和 WIA 驅動程式可能存在於相同的 DLL 中,但 WIA 和 TWAIN 驅動程式無法共用相同的 UI。 每個驅動程式都必須有自己的 UI。