Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
A moderna plataforma de impressão é o meio preferido do Windows para comunicar com as impressoras. Recomendamos que utilize o controlador de classe da caixa de entrada IPP da Microsoft, juntamente com as Aplicações de Suporte de Impressão (PSA), 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 Guia de design do aplicativo de suporte de impressão v1 e v2.
Minidrivers de impressora baseados em Unidrv e Pscript5, bem como drivers de impressora monolíticos (drivers desenvolvidos completamente por um IHV), devem usar o controle de versão do driver de impressora no Microsoft Windows XP e posterior. O spooler de impressão do Windows XP e versões posteriores usa as informações de versionamento para permitir a seleção dos ficheiros de driver corretos durante a instalação de uma nova versão do sistema operativo ou de um service pack, ou quando uma nova ligação Point and Print é estabelecida.
O controle de versão do driver de impressora não é suportado no Windows 2000 ou em versões anteriores do sistema operacional baseado em NT. Nessas versões do sistema operativo, o spooler de impressão baseia a sua decisão sobre substituir um determinado arquivo de driver apenas no carimbo de data/hora do arquivo. Um arquivo mais recente é sempre escolhido em preferência a um arquivo mais antigo, mesmo que o arquivo com a data mais recente possa ter o conjunto de recursos antigo. Como é tão fácil alterar a data de um arquivo, isso pode impedir que o spooler faça a escolha correta nos arquivos que escolher.
Para garantir que as versões corretas dos seus arquivos de driver estão instaladas, basta adicionar números de versão a esses arquivos. Você pode fazer isso fazendo pequenas modificações no pdrvver.h (que acompanha o Kit de Driver do Windows) e incluindo esse arquivo no arquivo de recursos DLL do driver da impressora. A configuração de um driver monolítico, usando a instalação baseada em INF, também se beneficia do controle de versão do driver, porque uma DLL mais recente não é substituída por uma DLL mais antiga, mesmo que a DLL mais antiga possa ter um carimbo de data/hora mais recente.
O cabeçalho pdrvver.h consiste quase exclusivamente em diretivas de #define do pré-processador. Os dois primeiros, VER_FILETYPE e VER_FILESUBTYPE, que não devem ser modificados, indicam que o arquivo é um arquivo de recurso para um driver, especificamente um driver de impressora. As constantes VFT_DRV e VFT2_DRV_VERSIONED_PRINTER, que aparecem com VER_FILETYPE e VER_FILESUBTYPE, são descritas na estrutura VS_FIXEDFILEINFO . Os que você precisa mudar são os quatro últimos, que são os seguintes:
VER_FILEVERSION
Esta constante deve ser definida como uma sequência de quatro valores WORD delimitados por vírgula. O terceiro e quarto WORDs são usados para definir os WORDs superior e inferior, respectivamente, do membro dwFileVersionLS da estrutura VS_FIXEDFILEINFO.
O significado de cada uma das quatro PALAVRAS é descrito abaixo.
Primeira PALAVRA
Reservado. Esse valor deve ser definido como 0.
Segunda PALAVRA
Representa a versão principal do driver. Para drivers de modo de usuário, defina isso como 0x0003. Para drivers de modo kernel, defina isso como 0x0002.
Terceira PALAVRA
Representa o número do conjunto de recursos com um byte alto e um byte baixo.
Byte de ordem superior
Representa uma versão importante de um conjunto de funcionalidades. Presume-se que uma versão mais recente tenha um superconjunto da funcionalidade da versão anterior. Incremente este valor com cada nova versão principal.
Para minidrivers baseados em Unidrv e Pscript5 executados no Windows XP e posterior, incluindo atualizações do Windows e Service Packs, isso deve ser definido como 0x05.
Byte baixo
Representa uma versão secundária do conjunto de recursos - uma nova versão da mesma base de código ou arquitetura. Incremente esse valor a cada nova versão secundária.
Para minidrivers baseados em Unidrv e Pscript5 executados nas seguintes versões do sistema operacional, esse byte deve ser definido como mostrado:
Windows XP: Defina como 0x01.
Primeiro Windows XP Service Pack: definido como 0x01. (O número de correção de bug específico aparece no quarto WORD.)
Primeira atualização do Windows: configurá-la para 0x02.
Quarta PALAVRA
Representa uma correção de bug ou lançamento de service pack. Incremente esse valor no lançamento de um novo binário, quando for uma coleção de correções de bugs ou um service pack.
Aqui está um exemplo de driver monolítico:
#define VER_FILEVERSION 0, 3, 0X0100, 0X0002
Na sequência, da esquerda para a direita, o primeiro valor WORD é zero, como deve ser. O valor do segundo WORD é três, indicando que este é um driver de modo de usuário. No terceiro WORD, o valor do byte alto (0X01) indica que esta é a primeira versão principal, e o byte baixo do mesmo WORD (0x00) indica que não há, até agora, lançamentos menores. O quarto WORD (0x0002) indica que esta é a segunda correção de bug ou lançamento do service pack. (Não é feita distinção entre esses tipos de lançamentos.)
Aqui estão alguns exemplos de minidriver baseados em Unidrv-/Pscript5:
#define VER_FILEVERSION 0, 3, 0X0501, 0X0001
Na sequência, da esquerda para a direita, o primeiro valor WORD é zero, como antes. O valor do segundo WORD é três, indicando que este é um driver de modo de usuário. No terceiro WORD, os valores de byte alto e byte baixo (0X05 e 0x01, respectivamente) indicam que esta é uma versão para o Windows XP. O quarto WORD (0x0001) indica que esta é a primeira correção de bug ou lançamento do service pack.
#define VER_FILEVERSION 0, 3, 0X0502, 0X0000
Como antes, o primeiro WORD é zero, e o segundo WORD indica que este é um minidriver de modo de usuário. O terceiro WORD (0x0502) indica que esta é a primeira versão do Windows Update lançada após o Windows XP. O quarto WORD (0x0000) indica que esta não é uma correção de bug nem uma versão de service pack.
VER_FILEDESCRIPTION_STR
Essa constante deve ser definida como um nome que identifique o driver, como no exemplo a seguir.
#define VER_FILEDESCRIPTION_STR "Sample Printer Driver Resource DLL"
VER_INTERNALNAME_STR
Defina essa constante como um nome que especifique o nome interno do arquivo (não incluindo o caminho), como no exemplo a seguir.
#define VER_INTERNALNAME_STR "SAMPLERES.DLL"
VER_ORIGINALFILENAME_STR
Defina essa constante como um nome que especifique o nome original do arquivo (não incluindo o caminho), como no exemplo a seguir.
#define VER_ORIGINALFILENAME_STR "SAMPLERES.DLL"