Partilhar via


Instalando a funcionalidade de verificação em um MFP com um único PDO

Importante

A partir do WDK para Windows 11, versão 22H2, não há mais suporte para os co-instaladores redistribuíveis do WDF. Para saber como contornar essa alteração, confira Os co-instaladores redistribuíveis do WDF não funcionam no artigo Problemas conhecidos do WDK .

Um procedimento especial é necessário para instalar a funcionalidade de verificação em impressoras multifuncionais com apenas um único objeto de dispositivo físico (PDO). Se o dispositivo se identificar como uma impressora, o arquivo INF da impressora poderá chamar o co-instalador wia para instalar a funcionalidade de verificação.

A Microsoft recomenda que cada função lógica de uma impressora multifuncional tenha seu próprio PDO, se possível. A associação de várias funções de um dispositivo a um único PDO deve ser evitada.

Se você registrar o co-instalador wia como o co-instalador do seu dispositivo, a Instalação sempre chamará o co-instalador wia para processar a instalação antes e depois do instalador da classe Printer. O co-instalador wia cria uma interface de dispositivo da classe Image no PDO da impressora e armazena todas as informações necessárias na chave do Registro da interface do dispositivo. O local atual no registro dessa chave é:

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

Não há garantia de que essa chave permaneça nesse local em versões futuras do sistema operacional. Para abrir essa chave, chame SetupDiOpenDeviceInterfaceRegKey.

O serviço WIA enumera todos os PDOs de classe de imagem e interfaces de dispositivo. Portanto, a interface do dispositivo recém-criada é enumerada como um dispositivo WIA.

O DDK do Windows é fornecido com um exemplo de INF que instala a funcionalidade de verificação em uma impressora multifuncional com apenas um único PDO. O nome desse arquivo é mfpoemprn.inf e está localizado no diretório \src\print\infs .

Para instalar a funcionalidade de verificação em um MFP

  1. Especifique sti_ci.dll como o valor de entrada para a entrada CoInstallerEntry .

    O INF para seu dispositivo deve ter uma Seção INF DDInstall.CoInstallers para poder registrar o co-instalador para instalação do dispositivo. Esta seção deve ser semelhante ao exemplo a seguir:

    [OEMMFP.GPD.CoInstallers]
    AddReg=WIA.CoInstallers.AddReg
    
    [WIA.CoInstallers.AddReg]
    HKR,,CoInstallers32,0x00010000,"sti_ci.dll, CoInstallerEntry"
    
  2. Inclua uma entrada WIASection na Seção INF DDInstall que se refere à seção que contém todas as configurações relacionadas ao WIA. A seção que contém as configurações relacionadas ao WIA deve aparecer no mesmo arquivo 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}"
    

    Ao incluir uma entrada WIASection , o instalador da classe Image não cria um devnode para o dispositivo, mas cria uma interface de dispositivo adicional. Assim, ele usa a chave do Registro da interface do dispositivo mencionada anteriormente para armazenar informações relacionadas a STI/WIA.

  3. Verifique se a seção INF DDInstall copia todos os arquivos necessários.

    Como alternativa, você pode listar os arquivos a serem copiados no WIASection, mas eles não serão listados em Gerenciador de Dispositivos.

As entradas Incluir e Necessidades não podem ser usadas na seção WIASection .

Todas as partes do modo kernel devem ser instaladas pela Seção DDInstall do INF original.

Se o dispositivo for hot-pluggable e exigir seu próprio componente de modo kernel, ele deverá criar e habilitar uma interface de dispositivo da classe Image. Essa interface é adicional a qualquer outra interface de dispositivo de classe, como a interface do dispositivo da classe Print.

O componente do modo kernel habilita uma interface de dispositivo da classe Image no devnode do dispositivo com uma chamada para a função IoSetDeviceInterfaceState . Quando a interface do dispositivo da classe Image está habilitada, um evento Plug and Play é acionado, notificando o serviço WIA de que o dispositivo está conectado.