Функция GetPrinterDriver2

Функция GetPrinterDriver2 извлекает данные драйвера для указанного принтера. Если драйвер не установлен на локальном компьютере, getPrinterDriver2 устанавливает его и отображает любой пользовательский интерфейс в указанном окне.

Синтаксис

BOOL GetPrinterDriver2(
  _In_opt_ HWND    hWnd,
  _In_     HANDLE  hPrinter,
  _In_opt_ LPTSTR  pEnvironment,
  _In_     DWORD   Level,
  _Out_    LPBYTE  pDriverInfo,
  _In_     DWORD   cbBuf,
  _Out_    LPDWORD pcbNeeded
);

Параметры

hWnd [in, необязательный]

Дескриптор окна, который будет использоваться в качестве родительского окна любого пользовательского интерфейса, например диалогового окна, отображаемого драйвером во время установки. Если значение этого параметра равно NULL, пользовательский интерфейс драйвера по-прежнему будет отображаться пользователю во время установки, но не будет иметь родительского окна.

hPrinter [in]

Дескриптор принтера, для которого должны быть получены данные драйвера. Используйте функцию OpenPrinter или AddPrinter для получения дескриптора принтера.

pEnvironment [in, optional]

Указатель на строку, завершающуюся значением NULL, которая указывает среду (например, Windows x86, Windows IA64 или Windows x64). Если этот параметр имеет значение NULL, используется текущая среда вызывающего приложения и клиентского компьютера (не конечного приложения и сервера печати).

Level [in]

Структура драйвера принтера, возвращаемая в буфере pDriverInfo . Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
1
DRIVER_INFO_1
2
DRIVER_INFO_2
3
DRIVER_INFO_3
4
DRIVER_INFO_4
5
DRIVER_INFO_5
6
DRIVER_INFO_6
8
DRIVER_INFO_8

pDriverInfo [out]

Указатель на буфер, который получает структуру, содержащую сведения о драйвере, как указано в параметре Level. Буфер должен быть достаточно большим для хранения строк, на которые указывают члены структуры.

Чтобы определить необходимый размер буфера, вызовите Метод GetPrinterDriver2 с параметром cbBuf , равным нулю. GetPrinterDriver2 завершается сбоем, GetLastError возвращает ERROR_INSUFFICIENT_BUFFER, а параметр pcbNeeded — размер буфера, необходимого для хранения массива структур и их данных, в байтах.

cbBuf [in]

Размер массива в байтах, на который указывает pDriverInfo .

pcbNeeded [ out]

Указатель на значение, которое получает количество байтов, скопированных при успешном выполнении функции, или количество байтов, необходимое, если cbBuf слишком мало.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение будет ненулевым.

Если функция выполняется неудачно, возвращается нулевое значение. Чтобы получить состояние возврата, вызовите Метод GetLastError.

Комментарии

Структуры DRIVER_INFO_2, DRIVER_INFO_3, DRIVER_INFO_4, DRIVER_INFO_5, DRIVER_INFO_6 и DRIVER_INFO_8 содержат имя файла или полный путь и имя файла драйвера принтера в элементе pDriverPath . Приложение может использовать путь и имя файла для загрузки драйвера принтера, вызвав функцию LoadLibrary и указав путь и имя файла в качестве одного аргумента.

Версия ANSI этой функции GetPrinterDriver2A не поддерживается и возвращает ERROR_NOT_SUPPORTED.

Требования

Требование Значение
Минимальная версия клиента
Windows Vista [только классические приложения]
Минимальная версия сервера
Windows Server 2008 [только классические приложения]
Заголовок
Winspool.h (включая Windows.h)
Библиотека
Winspool.lib
DLL
Winspool.drv
Имя в кодировке Юникод и ANSI
GetPrinterDriver2W (Юникод)

См. также раздел

Вывод на печать

Функции API очереди печати принтера

AddPrinterDriver

DRIVER_INFO_1

DRIVER_INFO_2

DRIVER_INFO_3

DRIVER_INFO_4

DRIVER_INFO_5

DRIVER_INFO_6

EnumPrinterDrivers

GetPrinterDriver

OpenPrinter