次の方法で共有


1 つの PDO を持つ 1 台の MFP へのスキャン機能のインストール

重要

WDK for Windows 11 バージョン 22H2 以降では、WDF 再頒布可能パッケージ共同インストーラーは未対応となりました。 この変更を回避する方法については、「WDK の既知の問題に関する記事」で 「WDF 再頒布可能パッケージ共同インストーラーが機能しない」を参照してください。

1 つの物理デバイス オブジェクト (PDO) のみを持つ多機能プリンターにスキャン機能をインストールするには、特別な手順が必要です。 デバイスがプリンターとして自身を識別する場合、プリンターの INF ファイルは、スキャン機能をインストールするために WIA 共同インストーラーを呼び出すことができます。

可能であれば、多機能プリンターの各論理機能に独自の PDO を設定することをお勧めします。 デバイスの複数の関数を 1 つの PDO に関連付けるのは避ける必要があります。

WIA 共同インストーラーをデバイスの共同インストーラーとして登録する場合、セットアップは常に WIA 共同インストーラーを呼び出して、プリンター クラス インストーラーの前後にインストールを処理します。 WIA 共同インストーラーは、プリンターの PDO にイメージ クラスのデバイス インターフェイスを作成し、デバイス インターフェイス レジストリ キーにすべての必要な情報を格納します。 このキーのレジストリ内の現在の場所は、次のとおりです。

HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses\{6bdd1fc6-810f-11d0-bec7-08002be2092f}\< デバイス シンボリック リンク>

このキーは、今後のオペレーティング システムのバージョンでは、この場所にとどまることは保証されません。 このキーを開くには、SetupDiOpenDeviceInterfaceRegKey を呼び出します。

WIA サービスは、すべてのイメージ クラス PDO とデバイス インターフェイスを列挙します。 したがって、新しく作成されたデバイス インターフェイスは WIA デバイスとして列挙されます。

Windows DDK には、PDO が 1 つだけの多機能プリンターにスキャン機能をインストールする INF の例が付属しています。 このファイルの名前は mfpoemprn.inf で、\src\print\infs ディレクトリにあります。

複合機にスキャン機能をインストールするには

  1. CoInstallerEntry エントリのエントリ値として sti_ci.dll を指定します。

    デバイスのインストール用に共同インストーラーを登録できるようにするには、デバイスの INF に INF DDInstall.CoInstallers Sectionが必要です。 このセクションは、次の例のようになります。

    [OEMMFP.GPD.CoInstallers]
    AddReg=WIA.CoInstallers.AddReg
    
    [WIA.CoInstallers.AddReg]
    HKR,,CoInstallers32,0x00010000,"sti_ci.dll, CoInstallerEntry"
    
  2. すべての WIA 関連の設定を含むセクションを参照する INF DDInstall SectionWIASection エントリを含めます。 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 関連の情報を格納します。

  3. INF DDInstall セクション が必要なすべてのファイルをコピーしてください

    または、WIASection でコピーするファイルを一覧表示できますが、デバイス マネージャーには表示されません。

IncludeNeeds エントリは、WIASection セクションでは使用できません。

すべてのカーネル モード部分は、元の INF DDInstall Sectionによってインストールする必要があります。

デバイスがホット プラグ可能で、独自のカーネルモード コンポーネントが必要な場合、Image クラスのデバイス インターフェイスを作成して有効にする必要があります。 このインターフェイスは、Print クラス デバイス インターフェイスなどの他のクラスのデバイス インターフェイスに追加されます。

カーネルモード コンポーネントは、IoSetDeviceInterfaceState 関数の呼び出しを使用し、デバイスの開発ノードで Image クラスのデバイス インターフェイスを有効にします。 Image クラスのデバイス インターフェイスが有効になっていると、プラグ アンド プレイ イベントが発生し、デバイスが接続されていることを WIA サービスに通知します。