Настраиваемые операции настройки принтера
Внимание
Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.
Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.
Чтобы обеспечить настраиваемые операции установки принтера для принтеров, установленных с помощью Ntprint.dll, установщик класса принтера windows 2000 и более поздних версий, можно включить запись INF-файла поставщика в INF-файл принтера.
Внимание
Помните, что VendorSetup теперь устарел и не следует использовать новыми драйверами версии 3 или версии 4, которые вы разрабатываете. Этот раздел предоставляется только для справки или для обслуживания существующих драйверов версии 3, которые уже используют эту директиву INF.
Если вы планируете отображать элементы пользовательского интерфейса во время установки драйвера принтера, необходимо использовать запись INF VendorSetup . Однако следует использовать запись INF VendorSetup только в том случае, если это необходимо. Значительным недостатком является то, что его использование предотвращает установку принтера обычным пользователем с самонастраивающийся (в данном случае это должен быть администратор).
Невозможно установить устройство с помощью серверной установки, если драйвер устройства не подписан, или когда INF-файл драйвера (подписанный или неподписанный) содержит запись INF-файла ПоставщикаSetup INF. При отмене знака драйвер программа установки добавляет 0x8000 в ранг, который драйвер должен был бы иметь, если бы он был подписанным драйвером. Если INF-файл драйвера содержит запись VendorSetup , программа установки определяет, что установка устройства требует взаимодействия с пользователем (который не может произойти в серверной установке) и останавливает установку.
Программа установки также останавливает установку на стороне сервера, если рейтинг драйвера 0x8000 или больше. Установка может продолжаться, когда пользователь с правами администратора входит в систему, в то время как программа установки перезапускает установку устройства в качестве клиентской установки. Для драйвера, ранг которого 0x1000 или больше, и не соответствует идентификатору оборудования, программа установки запускает мастер обнаружения нового оборудования в библиотеке DLL нового устройства, которая предложит пользователю установить драйвер.
Если INF-файл для подписанного драйвера содержит запись VendorSetup , а ранг драйвера меньше 0x1000, программа установки не запускает мастер обнаружения нового оборудования. Дополнительные сведения см. в разделе "Выбор драйверов" программы установки.
Формат записи VendorSetup выглядит следующим образом:
VendorSetup= FileName, FunctionName
Где FileName — это имя библиотеки DLL, содержащей функцию установки, и FunctionName — это имя функции. Библиотека DLL должна быть установлена в каталоге %windir%\system32. Установщик класса принтера вызывает функцию установки в этой библиотеке DLL, только если принтер установлен самонастраивающийся или мастером добавления принтера. Функция установки не вызывается, если установлен только драйвер (например, с помощью мастера добавления драйвера принтера).
Чтобы скопировать один или несколько файлов в каталог %windir%\system32, можно добавить имя определенного INF-записи в раздел INF DestinationDirs . В следующем примере в разделе OEMVendorFiles перечислены все файлы, которые необходимо скопировать.
[DestinationDirs]
OEMVendorFiles = 11
...
[OEMVendorFiles]
vendor.dll
Функция, указанная в functionName , должна соответствовать следующему прототипу:
VOID WINAPI
Имя функции (HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLine, UINT nCmdShow);
Where FunctionName — это имя функции установки. Параметры функции и их описания показаны в следующей таблице.
Параметр | Описание |
---|---|
hWnd | Задает дескриптор родительского окна. |
hInstance | Указывает дескриптор экземпляра вызывающего процесса. |
lpszCmdLine | Указывает строку ANSI, содержащую имя установленного принтера. Эта строка анализируется с помощью FunctionName. |
nCmdShow | Указывает способ отображения окна. Флаги, управляющие тем, как отображается окно, определены в Winuser.h. |
Установщик класса принтера вызывает функцию установки в качестве одного из последних шагов в операции установки.