Манифест драйвера версии 4

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.

Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.

Манифест драйвера печати версии 4 — это текстовый файл, содержащий все директивы установки для конкретного принтера. Манифест драйвера печати версии 4 используется с INF-файлом драйвера печати версии 4 в рамках настройки драйвера печати для конкретного принтера версии 4.

Директивы манифеста упорядочены в разделы:

Раздел DriverConfig

В следующей таблице показаны директивы, используемые в разделе DriverConfig.

Директива Ограничения Использование
RequiredFiles

Включает файлы из ntprint.inf или ntprint4.inf.

Директива RequiredFiles поддерживает следующее значение в Windows 10:

PWGRRenderFilter.dll. Добавляет фильтр отрисовки raster Microsoft PWG в список зависимых файлов драйвера.

Фильтр отрисовки фильтра отрисовки raster RAG требует, чтобы драйвер использовал файл PrintDeviceCapabilities для настройки.
Unidrv.dll, pscript5.dll и mxdwdrv.dll должны быть опущены из этого списка. Они будут разрешены автоматически. Примеры:

RequiredFiles=
UNIRES.DLL,
STDNAMES. GPD,
V3HOSTINGFILTER.DLL
Обязательный класс

Вызывает включение всех файлов из определенного драйвера класса с помощью имени драйвера и понятного имени устройства и его GUID в качестве ключа. Это механизм связывания драйвера printclass с определенным драйвером модели.
Директива RequiredClass не может использоваться драйвером класса. При использовании RequiredClass следует избегать конфликтов имен файлов между драйвером принтера и драйвером класса печати, с которым вы связываетесь.

Хотя файлы с аналогичными именами не перезаписывают друг друга, во время устранения неполадок может быть трудно различать файл пакета драйвера класса и файл от драйвера принтера версии 4.
Пример:

RequiredClass=
"Драйвер класса Fabrikam PCL5e",(9343720D-B67E-4451-B93F-6F721C439771)
DriverFile

Это указывает на двоичный файл отрисовки. Mxdwdrv используется по умолчанию, но драйверы классов могут также указывать unidrv.dll или pscript5.dll. Это функционально идентично той же директиве в INF версии 3.
Можно задать только в драйвере класса. Допустимые варианты : unidrv.dll или pscript5.dll. Драйверы печати версии 4 наследуются от RequiredClass или по умолчанию mxdwdrv.dll DriverFile=unidrv.dll
DataFile

Это определяет основной GPD или PPD для этого драйвера. Это функционально идентично той же директиве в INF версии 3.

В Windows 10 драйверы печати версии 4 могут продолжать указывать GPD или PPD DataFile, однако они также могут описать DataFile, который находится в формате PrintDeviceCapabilities.
Обязательный. Примеры:

DataFile=FAPDL.gpd
DataFile=FAPDL.xml
DataFileType

DataFileType должен использоваться при описании файла PrintDeviceCapabilities в качестве DataFile, а также может использоваться с GPD или PPD-файлом DataFile.
Требуется для файла PrintDeviceCapabilities. Пример:

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

Используется для указания необязательных атрибутов, связанных с драйвером.

NotShareable: этот флаг указывает, что драйвер недоступен. Это подходит для виртуальных драйверов, таких как microsoft XPS Document Writer.

SoftResetOnJobCancellation: этот флаг указывает, что устройство требует обратимого сброса USB (IOCTL_USBPRINT_SOFT_RESET) при отмене задания печати. ArchiveEnabled Драйвер версии 4 использует этот флаг для запроса архива, оптимизированного для XPS, в качестве файла spool.
Нет. Примеры:

Флаги=
NotShareable,
SoftResetOnJobCancellation
Флаги=
ArchiveEnabled,NotShareable
PrinterDriverID

Это уникальный идентификатор, описывающий драйвер печати. Если два драйвера указывают один и тот же PrinterDriverID, то они должны быть совместимы для совместного использования и поддержки одного и того же расширения принтера.
Обязательный. PrinterDriverID=
{guid}
PropertyBag

Указывает контейнер свойств драйвера для этого драйвера. Это скомпилированный файл, созданный DriverPropertyBagTool.exe или Visual Studio.
Нет. PropertyBag=
FAProperty.dpb
ResourceFile

Определяет имя библиотеки DLL строкового ресурса драйвера.

В Windows 10 драйверы могут указывать ResourceFile с помощью формата RESX.
Нет. Примеры:

ResourceFile=
FARC.dll
ConstraintScript

Определяет имя файла ограничения JavaScript драйвера.
Нет. ConstraintScript=
FAConst.js
DriverCategory

Определяет категорию устройства между одним из нескольких вариантов. Допустимые параметры приведены следующим образом:
PrintFax.Факс PrintFax.Printer PrintFax.Printer.3D PrintFax.Printer.File PrintFax.Printer.Service PrintFax.Printer.Virtual
Обязательный. DriverCategory=
PrintFax.Printer

Дополнительные сведения о других категориях драйверов см. в записях INF-файла принтера.
PrinterExtensionUrl

Указывает URL-адрес для пользователя, чтобы получить копию приложения расширения принтера. Используется в совместном использовании принтера.
Нет. PrinterExtensionUrl=
"https://www.fabrikam.com/files/setup.exe";
DevModeMap

Указывает файл сопоставления Devmode. Это XML-файл, используемый с преобразованием PrintTicket в DEVMODE в коде JavaScript.
Нет. DevModeMap=
fadmmap.xml
EventFile

Указывает XML-файл события драйвера.
Нет. EventFile=
faevents.xml
QueueProperties

Задает формат контейнера свойств очереди. Это XML-файл и не должен быть скомпилирован.
Нет. QueueProperties=
faQueueProps.xml
BidiUSBStatusInterface

Указывает список аппаратных идентификаторов, которые соответствуют одному или нескольким интерфейсам устройств, которые будут использоваться для обмена данными ЧЕРЕЗ USB Bidi.
Нет, но следует поддерживать только в том случае, если состояние выполняется через USB-интерфейс, который не является интерфейсом печати. BidiUSBStatusInterface=
"USB\vid_1234&pid_1234",
"USB\vid_1234&pid_4567"
UserPropertyBagScope

Эта директива указывает область контейнера свойств пользователя в качестве очереди или производителя.
Если эта директива опущена, очередь — это значение по умолчанию. Допустимые параметры для этой директивы:

Очередь: это конфигурация по умолчанию, и она соответствует поведению Windows 8. Производитель: все очереди, использующие ту же строку производителя в INF, используют один и тот же контейнер свойств пользователя.
Нет. UserPropertyBagScope=
Производитель
RetrievePrintDeviceCapabilitiesFromDevice

Драйверы версии 4 могут указывать, что они должны получить файл PrintDeviceCapabilities из принтеров WS-Print версии 2.0, если они задают файл PrintDeviceCapabilities в качестве файла DataFile драйвера и DataFileType, также указывает, что DataFile имеет тип MIME "application/vnd.ms-PrintDeviceCapabilities+xml".

Допустимые параметры:

True: позволяет локальному файлу DataFile драйвера заменить файл PrintDeviceCapabilities с устройства.

False: локальный файл DataFile драйвера не будет заменен файлом PrintDeviceCapabilities с устройства.

Если этот директива не указана, значение по умолчанию равно false.
Нет. Пример:

RetrievePrintDeviceCapabilitiesFromDevice=
true

Раздел BidiFiles

Раздел BidiFiles используется для определения файлов расширений Bidi. Он идентичен формату Windows 7 для TCP и WSD. Ключевые слова USB являются новыми.

В следующей таблице показаны директивы, используемые в разделе BidiFiles.

Директива Ограничения Использование
BidiSPMFile
Это определяет файл расширения Bidi для принтера на основе TCP/IP.
Нет. BidiSPMFile=FaBidiSPM.xml
BidiWSDFile
Это определяет файл расширения Bidi для принтера на основе WSD.
Нет. BidiWSDFile=FABidiWSD.xml
BidiUSBFile
Это определяет расширение Bidi для USB.
Нет. BidiUSBFile=FABidiUSB.xml
BidiUSBJSFile
Это определяет расширение JavaScript для USB.
Нет. BidiUSBJSFile=FABidiUSBJS.js

Раздел DriverRender

В следующей таблице показаны директивы, используемые в разделе DriverRender.

Директива Ограничения Использование
PageOutputQuality. [OptionName]
Изменяет сжатие изображений на основе значения задания PrintTicket для PageOutputQuality
OptionName должен быть именем, указанным в стандартном пространстве имен PrintSchema. PageOutputQuality.Draft=
MxdcImageType.JPEGHigh

PageOutputQuality.Normal=
MxdcImageType.JPEGMedium

PageOutputQuality.High=
MxdcImageType.PNG
XpsFormat
Изменяет формат XPS, созданный системой печати для этого драйвера. Можно указать несколько значений, а порядок представляет предпочтения драйвера.
Недоступно для использования в драйверах классов, использующих отрисовку Unidrv/PScript. XpsFormat=XPS

XpsFormat=OpenXPS

XPSFormat=OpenXPS,XPS

XPSFormat=XPS,OpenXPS
OutputFormat
Директива OutputFormat описывает один PDL,который создается этим драйвером с помощью типа MIME.
Эти сведения используются во время операции CreateJob или CreateJob2 для принтеров WSD.
Нет. Допустимые типы использования включают:

OutputFormat=
"application/oxps"

OutputFormat=
"application/vnd.ms-xpsdocument"

OutputFormat=
"image/pwg-raster"

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

Здесь также можно указать любой другой допустимый тип MIME.

Ключевое слово MxdcImageType для директивы PageOutputQuality имеет следующие допустимые значения:

Значение MxdcImageType
MxdcImageType.JPEGHigh
JPEG с высоким сжатием (небольшие файлы)
MxdcImageType.JPEGMedium
Среднее сжатие JPEG
MxdcImageType.JPEGLow
Низкое сжатие JPEG
MxdcImageType.PNG
Тип ФАЙЛА PNG (крупнейшие файлы)

Раздел FileSave

Этот раздел поддерживает сценарий сохранения файлов. Если драйвер печати версии 4 установлен для нового типа порта PORTPROMPT, этот раздел указывает расширения файлов, отображаемые в окне Common File , а также указывает локализованные строки ресурсов, поддерживающие расширения и диалоговое окно.

Директива Ограничения Использование
<FileExtensionName>
Эта директива описывает файл FileExtension, который будет использоваться при сохранении файла из этого драйвера с помощью порта PORTPROMPT. Это значение является идентификатором ресурса из resourceFile драйвера. Только для XPS и OXPS может быть указан идентификатор ресурса 0, а средство spooler печати будет использовать внутренние ресурсы для этих ресурсов.
Нет. <FileExtensionName>=
<resourceID>
Xps=1234
SaveAsTitle
Эта директива описывает заголовок, используемый в диалоговом окне "Сохранить файл". Это значение является идентификатором ресурса из resourceFile драйвера.
Нет. SaveAsTitle=
<resourceID>
SaveAsTitle=4321

Раздел PrinterExtensions

В разделе PrinterExtensions указывается расширение принтера и поддерживаемые режимы вызова. Для обоих этих записей приложение автоматически будет зарегистрировано в системе печати. Кроме того, приложение настроено с двумя разными параметрами: PrinterDriverID и ReasonID в этом порядке. В результате каждая запись должна использовать другой GUID PrinterExtensionID.

В следующей таблице показаны директивы, используемые в разделе PrinterExtensions.

Директива Ограничения Использование
DriverEvent
Обслуживание приложения в режиме DriverEvent.
Нет. DriverEvent=
app.exe,{extensionID GUID}
PrintPreferences
Обслуживание приложения в режиме PrintPreferences.
Нет. PrintPreferences=
app.exe, {extensionID GUID}

Ниже приведен пример манифеста драйвера печати версии 4.

[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}

Записи INF-файла принтера