Поделиться через


Написание основных драйверов

Внимание

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

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

Средства записи драйверов печати могут использовать основные функции драйвера, которые предоставляет Windows Vista. Чтобы сделать основной драйвер, создайте GUID, который другие пакеты драйверов могут использовать для ссылки на набор файлов, составляющих основной драйвер. Например, в Ntprint.inf определение файла драйвера core Unidrv показано в следующем примере:

[Microsoft.NTx86]
"{D20EA372-DD35-4950-9ED8-A6335AFE79F0}" =  
  {D20EA372-DD35-4950-9ED8-A6335AFE79F0}, 
  {D20EA372-DD35-4950-9ED8-A6335AFE79F0}
[{D20EA372-DD35-4950-9ED8-A6335AFE79F0}]
CopyFiles=UNIDRV,PJLMON.DLL,@TTFSUB.GPD,@LOCALE.GPD,@MSXPSINC.GPD
[UNIDRV]
; Unidrv files and pjlmon sections follow...

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

Важно отметить, что основной драйвер должен сохранять совместимость с более ранними версиями. Так как более одного драйвера может использовать основной драйвер, он должен продолжать работать с существующими драйверами, которые зависят от него при обновлении. Основной драйвер должен отправляться в составе пакета драйвера.

Основной драйвер определяется с разделом модели, который содержит описание устройства, являющееся идентификатором GUID основного драйвера. Например:

; Model section
[Company.NTx86]
"{GUID1}" = {GUID1}, {GUID1}

; Install section - must list all files in the core printer driver
[{GUID1}]
DriverVer = MM/DD/YYYY,1.1.1.1
CopyFiles=MANUFACTURER_CORE_FILESET

; Core Driver Section, can use print-specific INF keywords here
[MANUFACTURER_CORE]
CopyFiles=MANUFACTURER_CORE_FILESET

[MANUFACTURER_CORE_FILESET]
File1.dll
File2.dll
File3.dll

[ControlFlags]
AlwaysExcludeFromSelect = {GUID1}

Основной драйвер должен содержать сведения о версии в разделе установки с помощью ключевого слова DriverVer . Раздел установки также должен содержать список всех файлов, необходимых основному драйверу. Используйте новое ключевое слово AlwaysExcludeFromSelect , чтобы убедиться, что основной драйвер не отображается пользователю в пользовательском интерфейсе.