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
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"
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.
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.