Compartilhar via


Manifesto do driver V4

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.

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

As diretivas em um manifesto são organizadas em seções:

Seção DriverConfig

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

Diretiva Restrições Uso
RequiredFiles

Inclui arquivos de ntprint.inf ou ntprint4.inf.

A diretiva RequiredFiles dá suporte ao seguinte valor no Windows 10:

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

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

RequiredFiles=
UNIRES.DLL,
STDNAMES.GPD,
V3HOSTINGFILTER.DLL
RequiredClass

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. Esse é o mecanismo para vincular um driver printclass 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 da impressora e o driver da Classe de Impressão ao qual você está vinculando.

Embora 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.
Exemplo:

RequiredClass=
"Driver de classe Fabrikam PCL5e", (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
DataFile

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

No Windows 10, os 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.
Obrigatória. Exemplos:

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. Exemplo:

DataFileType=
"application/vnd.ms-PrintDeviceCapabilities+xml"
Sinalizadores

Isso é usado para especificar atributos opcionais associados ao driver.

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

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

Flags=
NotShareable,
SoftResetOnJobCancellation
Flags=
ArchiveEnabled,NotShareable
PrinterDriverID

Essa é uma ID exclusiva que descreve o driver de impressão. Se dois drivers especificarem o mesmo PrinterDriverID, eles deverão ser compatíveis para compartilhamento e dar suporte às mesmas extensões de impressora.
Obrigatória. PrinterDriverID=
{guid}
PropertyBag

Especifica um recipiente de propriedades do driver para esse driver. Este é um arquivo compilado gerado pelo DriverPropertyBagTool.exe ou Visual Studio.
Nenhum. PropertyBag=
FAProperty.dpb
ResourceFile

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.
Nenhum. Exemplos:

ResourceFile=
FARC.dll
ConstraintScript

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

Define a categoria do dispositivo entre uma das várias opções. As opções válidas são:
PrintFax.Fax PrintFax.Printer PrintFax.Printer.3D PrintFax.Printer.File PrintFax.Printer.Service PrintFax.Printer.Virtual
Obrigatória. 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. Usado no compartilhamento de impressoras.
Nenhum. PrinterExtensionUrl=
"https://www.fabrikam.com/files/setup.exe";
DevModeMap

Especifica o arquivo de mapeamento Devmode. Esse é um arquivo XML que é usado com a conversão PrintTicket para DEVMODE no código JavaScript.
Nenhum. DevModeMap=
fadmmap.xml
EventFile

Especifica o arquivo XML do Evento do Driver.
Nenhum. EventFile=
faevents.xml
QueueProperties

Especifica o formato de um recipiente de propriedades da fila. Este é um arquivo XML e NÃO deve ser compilado.
Nenhum. 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 ter suporte se o status for feito em uma interface USB que não seja a interface de impressão. BidiUSBStatusInterface=
"USB\vid_1234&pid_1234",
"USB\vid_1234&pid_4567"
UserPropertyBagScope

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

Fila: essa é 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 recipiente de propriedades do usuário.
Nenhum. UserPropertyBagScope=
Fabricante
RecuperarPrintDeviceCapabilitiesFromDevice

Os drivers v4 podem especificar que eles devem recuperar um arquivo PrintDeviceCapabilities de impressoras WS-Print v2.0, desde que definam um arquivo PrintDeviceCapabilities como o DataFile do driver e o DataFileType também indique 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 dessa diretiva será false.
Nenhum. Exemplo:

RetrievePrintDeviceCapabilitiesFromDevice=
true

Seçã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.

Diretiva Restrições Uso
BidiSPMFile
Isso define o arquivo de extensão Bidi para uma impressora baseada em TCP/IP.
Nenhum. BidiSPMFile=FaBidiSPM.xml
BidiWSDFile
Isso define o arquivo de extensão Bidi para uma impressora baseada em WSD.
Nenhum. BidiWSDFile=FABidiWSD.xml
BidiUSBFile
Isso define a extensão Bidi para USB.
Nenhum. BidiUSBFile=FABidiUSB.xml
BidiUSBJSFile
Isso define a extensão JavaScript para USB.
Nenhum. BidiUSBJSFile=FABidiUSBJS.js

Seção DriverRender

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

Diretiva Restrições Uso
PageOutputQuality.[OptionName]
Altera a compactação da 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
XpsFormat
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 driver.
Não disponível para uso em drivers de classe que usam renderização Unidrv/PScript. XpsFormat=XPS

XpsFormat=OpenXPS

XPSFormat=OpenXPS,XPS

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

OutputFormat=
"application/oxps"

OutputFormat=
"application/vnd.ms-xpsdocument"

OutputFormat=
"image/pwg-raster"

OutputFormat=
"application/vnd.ms-3mfdocument"

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 (arquivos menores)
MxdcImageType.JPEGMedium
JPEG de compactação média
MxdcImageType.JPEGLow
JPEG de compactação de linha
MxdcImageType.PNG
Tipo de arquivo PNG (arquivos maiores)

Seção FileSave

Esta seção dá suporte ao cenário de salvamento de arquivo. 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 Arquivo Comum e também especifica as cadeias de caracteres de recursos localizáveis que dão suporte às extensões e à própria caixa de diálogo.

Diretiva Restrições Uso
<FileExtensionName>
Esta diretiva descreve o FileExtension a ser usado ao salvar um arquivo desse driver usando a porta PORTPROMPT. O valor é um resourceID do ResourceFile do driver. Somente para XPS e OXPS, um resourceID de 0 pode ser especificado e o spooler de impressão usará seus recursos internos para eles.
Nenhum. <FileExtensionName>=
<resourceID>
Xps=1234
SaveAsTitle
Esta diretiva descreve o título a ser usado na caixa de diálogo Salvar arquivo. O valor é um resourceID do ResourceFile do driver.
Nenhum. SaveAsTitle=
<resourceID>
SaveAsTitle=4321

Seção PrinterExtensions

A seção PrinterExtensions especifica uma extensão de impressora e os modos de invocação aos quais ela dá suporte. Para ambas as entradas, o aplicativo será registrado automaticamente 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.

Diretiva Restrições Uso
DriverEvent
Aplicativo que atende ao modo DriverEvent.
Nenhum. DriverEvent=
app.exe,{extensionID GUID}
PrintPreferences
Aplicativo que atende ao modo PrintPreferences.
Nenhum. PrintPreferences=
app.exe,{extensionID GUID}

Veja a seguir um exemplo de um manifesto do 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