Функция EnumPorts

Функция EnumPorts перечисляет порты, доступные для печати на указанном сервере.

Синтаксис

BOOL EnumPorts(
  _In_  LPTSTR  pName,
  _In_  DWORD   Level,
  _Out_ LPBYTE  pPorts,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcbNeeded,
  _Out_ LPDWORD pcReturned
);

Параметры

pName [in]

Указатель на строку, завершающуюся значением NULL, которая указывает имя сервера, порты принтера которого требуется перечислить.

Если pName имеет значение NULL, функция перечисляет порты принтера локального компьютера.

Level [in]

Тип сведений, возвращаемых в буфере pPorts . Если значение Level равно 1, pPorts получает массив PORT_INFO_1 структур. Если значение Level равно 2, pPorts получает массив PORT_INFO_2 структур.

pPorts [out]

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

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

cbBuf [in]

Размер (в байтах) буфера, на который указывает pPorts.

pcbNeeded [ out]

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

pcReturned [out]

Указатель на переменную, которая получает количество PORT_INFO_1 или PORT_INFO_2 структур, возвращаемых в буфере pPorts . Это количество портов принтера, доступных на указанном сервере.

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

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

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

Комментарии

Примечание

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

Функция EnumPorts может быть успешной, даже если на сервере, указанном параметром pName , не определен принтер.

Требования

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

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

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

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

AddPort

DeletePort

PORT_INFO_1

PORT_INFO_2