Operações de configuração de impressora personalizadas
Importante
A plataforma de impressão moderna é o meio preferido do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.
Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.
Para fornecer operações de configuração de impressora personalizadas para impressoras instaladas usando Ntprint.dll, o instalador de classe de impressora padrão do Windows 2000 e posterior, você pode incluir uma entrada INF VendorSetup no arquivo INF da impressora.
Cuidado
Esteja ciente de que VendorSetup agora está obsoleto e não deve ser usado por nenhum driver v3 ou v4 novo que você desenvolver. Esse tópico é fornecido apenas para referência ou para a manutenção de drivers v3 existentes que já usam essa diretiva INF.
Se você planeja exibir elementos da interface do usuário durante a instalação de um driver de impressora, deve usar uma entrada INF VendorSetup. No entanto, você deve usar uma entrada INF VendorSetup somente se for necessário. Uma desvantagem significativa é que seu uso impede que um usuário comum instale uma impressora com Plug and Play (o usuário deve ser um administrador neste caso).
Não é possível instalar um dispositivo usando uma instalação do lado do servidor quando o driver do dispositivo não está assinado ou quando o arquivo INF do driver (assinado ou não assinado) contém uma entrada INF VendorSetup. Quando o driver não está assinado, a Instalação adiciona 0x8000 à classificação que o driver teria se fosse um driver assinado. Se o arquivo INF do driver contiver uma entrada VendorSetup, a Configuração determinará que a instalação do dispositivo requer interação do usuário (o que não pode ocorrer em uma instalação do lado do servidor) e interromperá a instalação.
A instalação também interrompe uma instalação do lado do servidor se a classificação do driver for 0x8000 ou maior. A instalação pode continuar quando um usuário com privilégios administrativos faz logon, momento em que a Instalação reinicia a instalação do dispositivo como uma instalação do lado do cliente. Para um driver cuja classificação é 0x1000 ou maior e, portanto, não é uma correspondência de ID de hardware, a Instalação inicia o Assistente de Novo Hardware Encontrado na DLL do Novo Dispositivo, que solicita ao usuário a instalação de um driver.
Se o arquivo INF de um driver assinado contiver uma entrada VendorSetup e a classificação do driver for menor que 0x1000, a Instalação não iniciará o Assistente de Novo Hardware Encontrado. Para obter mais informações, consulte Como a instalação seleciona drivers.
O formato da entrada VendorSetup é o seguinte:
VendorSetup= FileName, FunctionName
em que FileName é o nome de uma DLL que contém uma função de instalação e FunctionName é o nome da função. A DLL deve ser instalada no diretório %windir%\system32. O instalador da classe de impressora chama a função de instalação nessa DLL somente quando a impressora é instalada por Plug and Play ou pelo Assistente para Adicionar Impressora. A função de instalação não é chamada quando apenas um driver é instalado (por exemplo, usando o Assistente para Adicionar Driver de Impressora).
Para copiar um ou mais arquivos para o diretório %windir%\system32, você pode adicionar o nome de uma seção definida pelo gravador INF à seção INF DestinationDirs. No exemplo a seguir, a seção OEMVendorFiles lista todos os arquivos que devem ser copiados.
[DestinationDirs]
OEMVendorFiles = 11
...
[OEMVendorFiles]
vendor.dll
A função especificada por FunctionName deve corresponder ao seguinte protótipo:
VOID WINAPI
FunctionName (HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLine, UINT nCmdShow);
em que FunctionName é o nome da função de instalação. Os parâmetros da função e suas descrições são mostrados na tabela a seguir.
Parâmetro | Descrição |
---|---|
hWnd | Especifica o identificador da janela pai. |
hInstance | Especifica o identificador de instância do processo de chamada. |
lpszCmdLine | Especifica uma cadeia de caracteres ANSI que contém o nome da impressora que foi instalada. Essa cadeia de caracteres é analisada por FunctionName. |
nCmdShow | Especifica como a janela deve ser mostrada. Os sinalizadores que controlam como a janela é mostrada são definidos em Winuser.h. |
O instalador da classe de impressora chama a função de instalação como uma das etapas finais na operação de instalação.