Installieren der Scanfunktionalität in einem MFP mit einem einzelnen PDO

Wichtig

Ab dem WDK für Windows 11 Version 22H2 werden verteilbare WDF-Co-Installer nicht mehr unterstützt. Informationen zum Umgehen dieser Änderung finden Sie unter Verteilbare WDF-Co-Installer funktionieren nicht im WdK-Artikel bekannte Probleme .

Ein spezielles Verfahren ist erforderlich, um Scanfunktionen in Multifunktionsdruckern mit nur einem einzelnen physischen Geräteobjekt (PDO) zu installieren. Wenn sich das Gerät als Drucker identifiziert, kann die INF-Datei des Druckers den WIA-Co-Installer aufrufen, um die Scanfunktion zu installieren.

Microsoft empfiehlt, dass jede logische Funktion eines Multifunktionsdruckers nach Möglichkeit über eine eigene PDO verfügen sollte. Das Zuordnen mehrerer Funktionen eines Geräts zu einem einzelnen PDO sollte vermieden werden.

Wenn Sie den WIA-Co-Installer als Co-Installer Ihres Geräts registrieren, ruft Setup immer den WIA-Co-Installer auf, um die Installation vor und nach dem Druckerklasseninstallationsprogramm zu verarbeiten. Der WIA-Co-Installer erstellt eine Image-Klassengeräteschnittstelle auf der PDO des Druckers und speichert alle erforderlichen Informationen im Registrierungsschlüssel der Geräteschnittstelle. Der aktuelle Speicherort in der Registrierung dieses Schlüssels lautet:

HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses\{6bdd1fc6-810f-11d0-bec7-08002be2092f}\<device symbolic link>

Es ist nicht garantiert, dass dieser Schlüssel in zukünftigen Betriebssystemversionen an diesem Speicherort verbleibt. Um diesen Schlüssel zu öffnen, rufen Sie SetupDiOpenDeviceInterfaceRegKey auf.

Der WIA-Dienst listet alle Image-Klassen-PDOs und Geräteschnittstellen auf. Daher wird die neu erstellte Geräteschnittstelle als WIA-Gerät aufgezählt.

Das Windows DDK wird mit einem Beispiel-INF ausgeliefert, das die Scanfunktion in einem Multifunktionsdrucker mit nur einem einzigen PDO installiert. Der Name dieser Datei lautet mfpoemprn.inf und befindet sich im Verzeichnis \src\print\infs .

So installieren Sie die Scanfunktionalität in einem MFP

  1. Geben Sie sti_ci.dll als Eintragswert für den Eintrag CoInstallerEntry an.

    Das INF für Ihr Gerät muss über einen INF DDInstall.CoInstallers-Abschnitt verfügen, um den Co-Installer für die Geräteinstallation registrieren zu können. Dieser Abschnitt sollte in etwa wie im folgenden Beispiel aussehen:

    [OEMMFP.GPD.CoInstallers]
    AddReg=WIA.CoInstallers.AddReg
    
    [WIA.CoInstallers.AddReg]
    HKR,,CoInstallers32,0x00010000,"sti_ci.dll, CoInstallerEntry"
    
  2. Fügen Sie einen WIASection-Eintrag in den ABSCHNITT INF DDInstall ein, der sich auf den Abschnitt bezieht, der alle WIA-bezogenen Einstellungen enthält. Der Abschnitt mit den WIA-bezogenen Einstellungen muss in derselben INF-Datei angezeigt werden.

    [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}"
    

    Durch das Einschließen eines WIASection-Eintrags erstellt das Imageklasseninstallationsprogramm keinen Devnode für das Gerät, sondern erstellt stattdessen eine zusätzliche Geräteschnittstelle. Dementsprechend wird der zuvor erwähnte Registrierungsschlüssel der Geräteschnittstelle verwendet, um STI-/WIA-bezogene Informationen zu speichern.

  3. Stellen Sie sicher, dass der Abschnitt INF DDInstall alle erforderlichen Dateien kopiert.

    Alternativ können Sie die zu kopierenden Dateien im WIASection auflisten, sie werden jedoch nicht in Geräte-Manager aufgeführt.

Die Einträge Include und Needs können im Abschnitt WIASection nicht verwendet werden.

Alle Kernelmodusteile müssen vom ursprünglichen INF DDInstall-Abschnitt installiert werden.

Wenn das Gerät hot-pluggfähig ist und eine eigene Kernelmoduskomponente erfordert, muss es eine Image-Klasse-Geräteschnittstelle erstellen und aktivieren. Diese Schnittstelle ist zusätzlich zu allen anderen Klassengeräteschnittstellen verfügbar, z. B. der Geräteschnittstelle der Print-Klasse.

Die Kernelmoduskomponente aktiviert eine Image-Klassengeräteschnittstelle auf dem Devnode des Geräts mit einem Aufruf der IoSetDeviceInterfaceState-Funktion . Wenn die Geräteschnittstelle der Imageklasse aktiviert ist, wird ein Plug & Play-Ereignis ausgelöst, das den WIA-Dienst benachrichtigt, dass das Gerät verbunden ist.