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

Внимание

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

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

Чтобы приложение установки устанавливало принтер на сервере печати, оно должно вызвать функцию AddPrinterDriverEx средства spooler, чтобы загрузить файлы драйверов, а затем вызвать функцию AddPrinter spooler, чтобы сделать принтер доступным на сервере.

Для функции AddPrinterDriverEx требуется DRIVER_INFO_3 структура в качестве входных данных, а для функции AddPrinter требуется PRINTER_INFO_2 структура в качестве входных данных. Установщик класса принтера по умолчанию, Ntprint.dll, считывает INF-файлы принтера для получения строковых значений, которые необходимо поместить в эти структуры перед вызовом функций.

Набор записей INF-файла для драйверов принтера, которые Ntprint.dll распознают, определены. Эти записи имеют следующий формат:

Значение entryName =

Где EntryName — это строка, определяющая запись, и значение является строковым значением, назначенным записи.

В следующей таблице перечислены записи INF-файла, которые должны быть включены в INF-файлы принтера. Для каждой записи таблица содержит следующие элементы:

  • Значение, которое должно быть назначено записи.

  • Значение по умолчанию, которое Ntprint.dll используется, если запись не определена.

  • Элемент структуры, в который Ntprint.dll помещает указатель на значение записи.

Запись INF-файла Значение Значение по умолчанию (если запись не указана) Элемент структуры
ConfigFile Имя библиотеки DLL интерфейса принтера драйвера. Значение, указанное для DriverFile. элемент pConfigFile структуры DRIVER_INFO_3
DataFile Имя связанного файла данных драйвера, например PPD-файла. Имя раздела драйвера в INF-файле. элемент pDataFile структуры DRIVER_INFO_3
DefaultDataType Не используется с операционными системами на основе NT.
DriverCategory См . примечание 1, следующее за этой таблицей. Если INF-файл не указывает категорию драйверов (как и большинство драйверов версии 3), предполагается, что категория драйвера — PrintFax.Printer. нет
DriverFile Имя библиотеки DLL принтера драйвера. Имя раздела драйвера в INF-файле. элемент pDriverPath структуры DRIVER_INFO_3
ExcludeFromSelect См . примечание 2, следующее за этой таблицей. нет нет
HelpFile Имя файла справки библиотеки DLL интерфейса. Нет. Файл справки не указан. элемент pHelpFile структуры DRIVER_INFO_3
LanguageMonitor Имя языкового монитора, связанного с драйвером принтера. См. раздел "Формат значения languageMonitor". Нет. Не указан языковой монитор. элемент pMonitorName структуры DRIVER_INFO_3
PrintProcessor Имя обработчика печати, связанного с очередью принтера. См. раздел "Формат значения PrintProcessor". Используется обработчик печати по умолчанию (WinPrint). элемент pPrintProcessor структуры DRIVER_INFO_2
VendorSetup Имя функции в предоставленной поставщиком библиотеке DLL, которая обрабатывает настраиваемые операции настройки принтера. Нет. См . примечание 3, следующее за этой таблицей. нет
InboxVersionRequired Минимальная допустимая версия для всех основных драйверов, на которые ссылается INF. Дополнительные сведения о inboxVersionRequired см . в директиве INF InboxVersionRequired. нет нет

1 (DriverCategory): если INF-файл указывает категорию, это допустимые значения (от 0 до 5 соответственно) для указания категорий:

Категория драйверов значение Описание
PrintFax.Printer 0 Очередь печати, представляющая принтер, подключенный к компьютеру (через локальный или сетевой протокол), или прокси-сервер физического принтера на другом компьютере. Когда пользователь печатает на физическом принтере, результатом является бумага с документом, напечатанным на нем.
PrintFax.Факс 1 Очередь печати, представляющая физическую или виртуальную факсимильную машину. Когда пользователь печатает на принтер факса, результат (возможно, после дальнейшего взаимодействия с пользователем) заключается в том, что факс отправляется.
PrintFax.Printer.File 2 Очередь печати, которая создает документы обратимого копирования. Когда пользователь печатает на принтере файлов, пользователь должен сначала ввести имя файла, а затем spooler отправляет печатные выходные данные в этот файл. Для принтеров файлов всегда требуется имя файла, но не требуется никаких других входных данных пользователя. Если у пользователя нет возможности предоставить имя файла, приложение создает имя файла, которое становится доступным для spooler. Распространенными примерами принтеров файлов являются средство записи документов Microsoft XPS (MXDW) и записи PDF.
PrintFax.Printer.Virtual 3 Очередь печати с драйвером, выполняющим некоторые операции с печатными данными, непрозрачными для очереди печати. Когда пользователь печатает на виртуальном принтере, некоторые возможные результаты включают в себя сохранение печатного документа где-либо на компьютере, отправку в другое приложение или отправку по электронной почте. Распространенный пример печати на виртуальном принтере — это сценарий, в котором печатный документ отправляется на принтер Microsoft Office OneNote. Когда пользователь выбирает печать на виртуальный принтер, может потребоваться дальнейшее взаимодействие с пользователем, инициированное драйвером или другим компонентом драйвера. Дополнительные сведения см. в разделе "Виртуальные принтеры" в INF-файлах принтера.
PrintFax.Printer.Service 4 Очередь печати, представляющая службу печати. Когда пользователь выбирает печать в службу, результат (возможно, после дальнейшего взаимодействия с пользователем) заключается в том, что сторонняя служба печати получает печатное содержимое. Затем пользователь может перейти в физическое место для бизнеса, чтобы забрать печатные выходные данные.
PrintFax.Printer.3D 5 Очередь печати, представляющая поток данных для трехмерного принтера. Если эта категория непреднамеренно указана для 2D-принтера (обычного принтера), 2D-принтер просто выводит 2D-содержимое потока данных. Если эта категория правильно указана для трехмерного принтера, но 2D-поток данных отправляется на трехмерный принтер, 3D-принтер не создаст выходные данные.

Кроме того, обратите внимание, что драйверы печати версии 4 используют файл манифеста. Дополнительные сведения см . в манифесте драйвера версии 4.

Примечание.

2 (ExcludeFromSelect)идентификатор устройства, которое не должно отображаться в диалоговом окне выбора устройства или мастере добавления принтера. Для принтеров это включает все записи PnP устройств с повторяющимися описаниями устройств в INF-файле; например, устройства с несколькими записями для инфракрасного и параллельного перечисления или для другой шины. Запись ExcludeFromSelect, в отличие от всех остальных в этой таблице, должна отображаться в разделе флагов элементов управления в INF-файле. Дополнительные сведения см. в разделе INF ControlFlags.

Примечание.

3 (VendorSetup): если запись VendorSetup не указана, настраиваемые операции установки не выполняются. В частности, во время установки обработчика печати, монитора печати или драйвера принтера не допускается никаких пользовательских интерфейсов, кроме использования записи VendorSetup INF. Дополнительные сведения об этой записи см. в разделе "Настраиваемые операции настройки принтера".

Внимание

VendorSetup теперь устарел и не должен использоваться новыми драйверами версии 3 или версии 4, которые вы разрабатываете. Эти сведения о VendorSetup предоставляются только для справки или для обслуживания существующих драйверов версии 3, которые уже используют эту директиву INF.

Записи INF-файла принтера обычно указываются в разделах данных INF-файла принтера. Примеры см. в примерах INF-файлов принтера.

Формат значения LanguageMonitor

Если запись LanguageMonitor включена в INF-файл принтера, формат значения выглядит следующим образом:

LanguageMonitor=" MonitorName , MonitorDLLName "

Где MonitorName — это текстовая строка, представляющая отображаемое имя монитора, а MonitorDLLName — имя файла библиотеки DLL монитора.

Формат значения PrintProcessor

Если запись PrintProcessor включена в INF-файл принтера, формат значения выглядит следующим образом:

PrintProcessor=" PrintProcessorName , PrintProcessorDLLName "

Где PrintProcessorName — это текстовая строка, представляющая отображаемое имя обработчика печати, а PrintProcessorDLLName — это имя файла библиотеки DLL.

Зависимые файлы

Зависимый файл — это файл драйвера принтера, включенный в раздел установки INF-файла принтера с 66000, но не назначенный файлам DriverFile, DataFile, ConfigFile или HelpFile.

В следующем примере показаны фрагменты из INF-файла, который устанавливает три зависимых файла путем копирования их в каталог драйвера принтера (т. е. в каталог, указанный dirid 66000):

[Contoso]
%PRINTER_MODEL_123%=Contoso_Install_Section,LPTENUM\Contoso_1284.4_P29C5
...
[Contoso_Install_Section]
CopyFiles=@Contoso.ini,@Contoso.xml,@Contoso.dll
...
[DestinationDirs]
DefaultDestDir=66000
...
[Strings]
PRINTER_MODEL_123 = "Contoso Printer Model 123"

В этом примере Contoso.ini — это файл INI принтера, Contoso.xml — это файл расширения bidi, а Contoso.dll — это настраиваемый компонент. Дополнительные сведения о файлах INI принтера, файлах расширений bidi и настраиваемых компонентах см. в разделе "Установка настраиваемых компонентов драйвера" и двунаправленной схемы связи.

Операции с точками и печатью устанавливают файлы, зависящие от драйвера и драйвера, на клиенте.

Для каждой модели принтера можно указать не более 64 зависимых файлов.

Двунаправленная схема связи

Раздел INF ControlFlags

Установка настраиваемых компонентов драйверов

Точка и печать

Раздел установки INF-файла принтера

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