使用單一 PDO 在 MFP 中安裝掃描功能
重要
從 Windows 11 版本 22H2 的 WDK 開始,不再支援 WDF 可轉散發的共同安裝程式。 若要瞭解如何解決此問題,請參閱 WDF 可轉散發共同安裝程式無法在WDK 已知問題 一文中運作。
需要特殊程式,才能在只有單一實體裝置物件 (PDO) 的多重功能印表機中安裝掃描功能。 如果裝置將本身識別為印表機,印表機的 INF 檔案可以呼叫 WIA 共同安裝程式,以安裝掃描功能。
Microsoft 建議,如果可能的話,多函式印表機的每個邏輯函式都應該有自己的 PDO。 應避免將裝置的多個功能與單一 PDO 產生關聯。
如果您將 WIA 共同安裝程式註冊為裝置的共同安裝程式,安裝程式一律會呼叫 WIA 共同安裝程式來處理印表機類別安裝程式前後的安裝。 WIA 共同安裝程式會在印表機的 PDO 上建立 Image 類別裝置介面,並將所有必要的資訊儲存在裝置介面登錄機碼中。 此機碼登錄中的目前位置為:
HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses\{6bdd1fc6-810f-11d0-bec7-08002be2092f}\ <device 符號連結>
此金鑰不保證會保留在這個位置。未來作業系統版本。 若要開啟此金鑰,請呼叫 SetupDiOpenDeviceInterfaceRegKey。
WIA 服務會列舉所有 Image 類別 PDO 和裝置介面。 因此,新建立的裝置介面會列舉為 WIA 裝置。
Windows DDK 隨附一個範例 INF,其只會使用單一 PDO 在多功能事務機中安裝掃描功能。 此檔案的名稱為 mfpoemprn.inf,且位於 \src\print\infs 目錄中。
在 MFP 中安裝掃描功能
將 sti_ci.dll 指定為 CoInstallerEntry 專案的專案值。
裝置的 INF 必須具有 INF DDInstall.CoInstallers 區段 ,才能註冊裝置安裝的共同安裝程式。 本節看起來應該類似下列範例:
[OEMMFP.GPD.CoInstallers] AddReg=WIA.CoInstallers.AddReg [WIA.CoInstallers.AddReg] HKR,,CoInstallers32,0x00010000,"sti_ci.dll, CoInstallerEntry"
在INF DDInstall 區段中包含WIASection專案,參考包含所有 WIA 相關設定的區段。 包含 WIA 相關設定的區段必須出現在相同的 INF 檔案中。
[OEMMFP.GPD] CopyFiles=@OEMMFP.DLL,@OEMPRT1.DLL,@OEMUI.DLL,OEMMFP.GPD.WIA.CopyFiles WIASection=OEMMFP.GPD.WIA [OEMMFP.GPD.WIA] Description=%OEM_MFP_SCANNER% SubClass=StillImage DeviceType=1 Capabilities=0x00000011 AddReg=OEMMFP.GPD.WIA.AddReg DeviceData=OEMMFP.GPD.WIA.DeviceData ICMProfiles="sRGB Color Space Profile.icm" USDClass="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
藉由包含 WIASection 專案,Image 類別安裝程式不會建立裝置的開發節點,而是會建立額外的裝置介面。 因此,它會使用先前提及的裝置介面登錄機碼來儲存 STI/WIA 相關資訊。
請確定 INF DDInstall 區段 會複製所有必要的檔案。
或者,您可以列出要複製到 WIASection中的檔案,但不會列在裝置管理員中。
無法在WIASection 區段中使用Include和Needs專案。
所有核心模式部分都必須由原始 INF DDInstall 區段安裝。
如果裝置是可熱插即用的,而且需要它自己的核心模式元件,則必須建立並啟用 Image 類別裝置介面。 此介面除了任何其他類別裝置介面之外,例如 Print 類別裝置介面。
核心模式元件可透過呼叫 IoSetDeviceInterfaceState 函式,在裝置的開發節點上啟用 Image 類別裝置介面。 啟用 Image 類別裝置介面時,就會引發隨插即用事件,通知 WIA 服務裝置已連線。