Partilhar via


Manifesto do driver V4

Important

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.

O manifesto do driver de impressão v4 é um arquivo de texto que contém todas as diretivas de configuração específicas da impressora. Um manifesto do driver de impressão v4 é usado com um arquivo INF do driver de impressão v4, como parte da configuração de um driver de impressão v4 específico da impressora.

As diretivas de um manifesto estão organizadas em secções:

Seção DriverConfig

A tabela a seguir mostra as diretivas usadas na seção DriverConfig.

Directive Restrictions Usage
Arquivos Necessários

Inclui arquivos de ntprint.inf ou ntprint4.inf.

A diretiva RequiredFiles suporta o seguinte valor no Windows 10:

PWGRRenderFilter.dll: Adiciona o filtro de renderização Microsoft PWG Raster à lista de arquivos dependentes do driver.

O filtro de renderização do filtro de renderização PWG Raster requer que o driver use um arquivo PrintDeviceCapabilities para configuração.
Unidrv.dll, pscript5.dlle mxdwdrv.dll devem ser omitidas desta lista. Eles serão resolvidos automaticamente. Examples:

RequiredFiles=
UNIRES.DLL,
STDNAMES. GPD,
V3HOSTINGFILTER.DLL
Classe Obrigatória

Faz com que esse driver inclua todos os arquivos de um driver de classe definido usando o driver/nome amigável do dispositivo e seu GUID como chave. Este é o mecanismo para vincular um driver de classe de impressão a um driver específico do modelo.
A diretiva RequiredClass não pode ser usada por um driver de classe. Ao usar RequiredClass, você deve evitar colisões de nome de arquivo entre o driver de impressora e o driver de classe de impressão ao qual você está vinculando.

Embora os arquivos com nomes semelhantes não substituam uns aos outros, pode ser difícil durante a solução de problemas, distinguir entre o arquivo de pacote de driver de classe e o arquivo do driver de impressora v4.
Example:

RequiredClass=
"Driver de classe PCL5e da Fabrikam",(9343720D-B67E-4451-B93F-6F721C439771)
DriverFile

Isso aponta para o binário de renderização. Mxdwdrv é o padrão, mas os drivers de classe podem, alternativamente, especificar unidrv.dll ou pscript5.dll. Isso é funcionalmente idêntico à mesma diretiva em um INF v3.
Só pode ser definido em um driver de classe. As opções válidas são unidrv.dll ou pscript5.dll. Os drivers de impressão V4 herdam de uma RequiredClass ou usam como padrão mxdwdrv.dll DriverFile=unidrv.dll
Arquivo de dados

Isso define o GPD ou PPD primário para esse driver. Isso é funcionalmente idêntico à mesma diretiva em um INF v3.

No Windows 10, drivers de impressão v4 podem continuar a especificar um GPD ou PPD DataFile, no entanto, eles também podem descrever um DataFile que está no formato PrintDeviceCapabilities.
Required. Examples:

DataFile=FAPDL.gpd
DataFile=FAPDL.xml
DataFileType

O DataFileType deve ser usado ao descrever um arquivo PrintDeviceCapabilities como o DataFile e também pode ser usado com um DataFile baseado em GPD ou PPD.
Necessário para o arquivo PrintDeviceCapabilities. Example:

DataFileType=
"aplicativo/vnd.ms-PrintDeviceCapabilities+xml"
Flags

Isso é usado para especificar atributos opcionais associados ao driver.

NotShareable: Este sinalizador especifica que o driver não é compartilhável. Isso é apropriado para drivers virtuais, como o Microsoft XPS Document Writer.

SoftResetOnJobCancellation: Este sinalizador especifica que o dispositivo requer uma redefinição suave USB (IOCTL_USBPRINT_SOFT_RESET) no cancelamento do trabalho de impressão. ArchiveEnabled O driver v4 usa esse sinalizador para solicitar XPS otimizado para arquivamento como um arquivo de spool.
None. Examples:

Bandeiras=
NotCompartilhável,
SoftResetOnJobCancellation
Bandeiras=
ArchiveEnabled,NotShareable
ID do driver da impressora

Este é um ID exclusivo que descreve o driver de impressão. Se dois drivers especificarem o mesmo PrinterDriverID, eles deverão ser compatíveis para compartilhamento e suportar as mesmas extensões de impressora.
Required. PrinterDriverID=
{GUID}
PropertyBag

Especifica um pacote de propriedades de driver para esse driver. Este é um arquivo compilado gerado pelo DriverPropertyBagTool.exe ou Visual Studio.
None. PropertyBag=
FAProperty.dpb
Ficheiro de Recursos

Define o nome da DLL do recurso de cadeia de caracteres do driver.

No Windows 10, os drivers podem especificar um ResourceFile usando o formato .resx.
None. Examples:

ResourceFile=
FARC.dll
ConstraintScript

Define o nome do arquivo de restrição JavaScript do driver.
None. ConstraintScript=
FAConst.js
DriverCategory

Define a categoria do dispositivo entre uma das várias opções. As opções válidas são as seguintes:
PrintFax.Fax PrintFax.Printer PrintFax.Printer.3D PrintFax.Printer.File PrintFax.Printer.Service PrintFax.Printer.Virtual
Required. DriverCategory=
PrintFax.Printer

Para obter mais informações sobre outras categorias de driver, consulte Entradas de arquivo INF da impressora.
PrinterExtensionUrl

Especifica uma URL para o usuário obter uma cópia do aplicativo de extensão de impressora. Utilizado na partilha de impressoras.
None. PrinterExtensionUrl=
";;https://www.fabrikam.com/files/setup.exe"
DevModeMapa

Especifica o arquivo de mapeamento Devmode. Este é um arquivo XML que é usado com a conversão PrintTicket para DEVMODE em código JavaScript.
None. DevModeMap=
fadmmap.xml
Ficheiro de Eventos

Especifica o arquivo XML do evento do driver.
None. EventFile=
faevents.xml
QueueProperties

Especifica o formato de um pacote de propriedades de fila. Este é um arquivo XML e NÃO deve ser compilado.
None. QueueProperties=
faQueueProps.xml
BidiUSBStatusInterface

Especifica uma lista de IDs de hardware que correspondem a uma ou mais interfaces de dispositivo a serem usadas para comunicações USB Bidi.
Nenhum, mas só deve ser suportado se o estado for feito através de uma interface USB que não seja a interface de impressão. BidiUSBStatusInterface=
"USB\vid_1234&pid_1234",
"USB\vid_1234&pid_4567"
UserPropertyBagScope

Esta diretiva especifica o escopo do pacote de propriedades do usuário como Fila ou Fabricante.
Se essa diretiva for omitida, Queue será o valor padrão. As opções válidas para esta diretiva são as seguintes:

Fila: Esta é a configuração padrão e corresponde ao comportamento do Windows 8. Fabricante: Todas as filas que usam a mesma cadeia de caracteres Manufacturer no INF usam o mesmo pacote de propriedades do usuário.
None. UserPropertyBagScope=
Manufacturer
RetrievePrintDeviceCapabilitiesFromDevice

Os drivers v4 podem especificar que devem recuperar um arquivo PrintDeviceCapabilities de WS-Print impressoras v2.0, desde que definam um arquivo PrintDeviceCapabilities como DataFile do driver e o DataFileType também indica que o DataFile é do tipo MIME "application/vnd.ms-PrintDeviceCapabilities+xml".

Opções válidas:

True: Permite que o DataFile local do driver seja substituído pelo arquivo PrintDeviceCapabilities do dispositivo.

False: O DataFile local do driver não será substituído pelo arquivo PrintDeviceCapabilities do dispositivo.

Se não for especificado, o valor padrão desta diretiva é false.
None. Example:

RetrievePrintDeviceCapabilitiesFromDevice=
true

Secção BidiFiles

A seção BidiFiles é usada para definir arquivos de extensão Bidi. É idêntico ao formato do Windows 7 para TCP e WSD. As palavras-chave USB são novas.

A tabela a seguir mostra as diretivas usadas na seção BidiFiles.

Directive Restrictions Usage
BidiSPMFile
Isso define o arquivo de extensão Bidi para uma impressora baseada em TCP/IP.
None. BidiSPMFile=FaBidiSPM.xml
BidiWSDFile
Isso define o arquivo de extensão Bidi para uma impressora baseada em WSD.
None. BidiWSDFile=FABidiWSD.xml
BidiUSBFile
Isso define a extensão Bidi para USB.
None. BidiUSBFile=FABidiUSB.xml
BidiUSBJSFile
Isso define a extensão JavaScript para USB.
None. BidiUSBJSFile=FABidiUSBJS.js

Seção DriverRender

A tabela a seguir mostra as diretivas usadas na seção DriverRender.

Directive Restrictions Usage
PageOutputQuality. [OptionName]
Altera a compactação de imagem com base no valor no trabalho PrintTicket para PageOutputQuality
OptionName deve ser um nome especificado no namespace PrintSchema padrão. PageOutputQuality.Draft=
MxdcImageType.JPEGHigh

PageOutputQuality.Normal=
MxdcImageType.JPEGMedium

PageOutputQuality.High=
MxdcImageType.PNG
Formato Xps
Altera o formato XPS gerado pelo sistema de impressão para este driver. Vários valores podem ser especificados e a ordem representa a preferência do motorista.
Não está disponível para uso em drivers de classe que usam renderização Unidrv/PScript. XpsFormat=XPS

XpsFormat=OpenXPS

XPSFormat=OpenXPS,XPS

XPSFormat=XPS,OpenXPS
Formato de saída
A diretiva OutputFormat descreve um único PDL que é gerado por esse driver usando um tipo MIME.
Essas informações são usadas durante a operação CreateJob ou CreateJob2 para impressoras WSD.
None. Os tipos de utilização válidos incluem:

OutputFormat=
"aplicação/oxps"

OutputFormat=
"aplicativo/vnd.ms-xpsdocument"

OutputFormat=
"imagem/pwg-raster"

OutputFormat=
"Aplicativo/vnd.ms-3MFncuce"

Qualquer outro tipo MIME definido válido também pode ser especificado aqui.

A palavra-chave MxdcImageType para a diretiva PageOutputQuality tem os seguintes valores permitidos:

Valor MxdcImageType
MxdcImageType.JPEGHigh
JPEG de alta compressão (ficheiros mais pequenos)
MxdcImageType.JPEGMedium
JPEG de compressão média
MxdcImageType.JPEGLow
JPEG de baixa compressão
MxdcImageType.PNG
Tipo de ficheiro PNG (ficheiros maiores)

Secção FileSave

Esta seção oferece suporte ao cenário de salvamento de arquivos. Quando um driver de impressão v4 é instalado no novo tipo de porta PORTPROMPT, esta seção especifica as extensões de arquivo a serem mostradas na janela Common File e também especifica as cadeias de caracteres de recursos localizáveis que suportam as extensões e a própria caixa de diálogo.

Directive Restrictions Usage
<FileExtensionName>
Esta diretiva descreve o FileExtension a ser usado ao salvar um arquivo deste driver usando a porta PORTPROMPT. O valor é um resourceID do ResourceFile do driver. Apenas para XPS e OXPS, um resourceID de 0 pode ser especificado e o spooler de impressão usará seus recursos internos para isso.
None. <FileExtensionName>=
<resourceID>
XPS=1234
SalvarAsTítulo
Esta diretiva descreve o título a ser usado na caixa de diálogo Salvar arquivo. O valor é um resourceID do ResourceFile do driver.
None. SaveAsTitle=
<resourceID>
SalvarAsTítulo=4321

Seção PrinterExtensions

A seção PrinterExtensions especifica uma extensão de impressora e os modos de invocação que ela suporta. Para ambas as entradas, o aplicativo será automaticamente registrado no sistema de impressão. Além disso, o aplicativo é configurado com dois parâmetros diferentes, o PrinterDriverID e o ReasonID, nessa ordem. Como resultado, cada entrada deve usar um GUID PrinterExtensionID diferente.

A tabela a seguir mostra as diretivas usadas na seção PrinterExtensions.

Directive Restrictions Usage
DriverEvent
Manutenção do aplicativo no modo DriverEvent.
None. DriverEvent=
app.exe,{extensionID GUID}
ImprimirPreferências
Aplicação que serve o modo PrintPreferences.
None. PrintPreferences=
app.exe, {extensionID GUID}

A seguir está um exemplo de um manifesto de driver de impressão v4.

[DriverConfig]
DataFile=FAPDL.xml
RequiredFiles=UNIRES.DLL,STDNAMES.GPD,STDDTYPE.GDL,STDSCHEM.GDL,STDSCHMX.GDL,XPSSVCS.DLL,MSXPSINC.GPD,PWGRRenderFilter.DLL
ResourceFile=FARC.dll
PropertyBag=FAProperty.dpb
PrinterDriverID={GUID}
DriverCategory=PrintFax.Printer
ConstraintScript=faconst.js
EventFile=faevents.xml
PrinterExtensionUrl="https://www.fabrikam.com/download.asp?uiapp=120"
UserPropertyBagScope=Manufacturer
DataFileType="application/vnd.ms-PrintDeviceCapabilities+xml"
RetrievePrintDeviceCapabilitiesFromDevice=true

[BidiFiles]
BidiSPMFile=FABidiSPM.xml
BidiWSDFile=FABidiWSD.xml
BidiUSBFile=FaBidiUSB.xml
BidiUSBJSFile=FABidiUSBJS.js

[DriverRender]
PageOutputQuality.Draft=MxdcImageType.JPEGHigh
PageOutputQuality.Normal=MxdcImageType.JPEGMedium
PageOutputQuality.High=MxdcImageType.PNG
OutputFormat="image/pwg-raster"

[PrinterExtensions]
DriverEvent=FAapp.exe,{GUID}
PrintPreferences=FAapp.exe,{GUID2}

Entradas de arquivo INF da impressora