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


Функция AddPortUI (winsplp.h)

Функция AddPortUI для пользовательского интерфейса монитора портов dll добавляет порт принтера, а затем получает от пользователя сведения о конфигурации порта и отправляет их в библиотеку DLL сервера мониторинга портов.

Синтаксис

BOOL AddPortUI(
  [in, optional]  PCWSTR pszServer,
  [in]            HWND   hWnd,
                  PCWSTR pszMonitorNameIn,
  [out, optional] PWSTR  *ppszPortNameOut
);

Параметры

[in, optional] pszServer

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

[in] hWnd

Предоставленный вызывающим объектом дескриптор окна, который должен использоваться в качестве родительского элемента для диалоговых окон. Если значение РАВНО NULL, диалоговые окна отображаться не должны.

pszMonitorNameIn

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

[out, optional] ppszPortNameOut

Предоставленный вызывающим абонентом указатель на расположение для получения строки имени порта. Может иметь значение NULL, в этом случае имя не возвращается.

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

Если операция выполнена успешно, функция должна вернуть значение TRUE. В противном случае следует вызвать Метод SetLastError, чтобы указать код ошибки, а функция должна возвращать значение FALSE. Если операция отменена пользователем или не поддерживается, функция должна вызвать SetLastError(ERROR_CANCELLED), а затем вернуть значение FALSE.

Комментарии

Библиотеки DLL пользовательского интерфейса монитора портов необходимы для определения функции AddPortUI и включения адреса функции в структуру MONITORUI .

Диспетчер очереди очереди вызывает AddPortUI из функции AddPort. Первые три аргумента, полученные AddPortUI , — это аргументы, полученные Командой AddPort. (Функция AddPort описана в документации по Microsoft Windows SDK.)

Функция должна выполнять следующие операции:

  1. Вызовите OpenPrinter, указав имя принтера в следующем формате:

    \\Имя_сервера\,XcvMonitorMonitorName

    Где ServerName и MonitorName — это имена сервера и монитора, полученные в качестве аргументов функции AddPortUI .

    Для вызова OpenPrinter требуется структура PRINTER_DEFAULTS, описанная в документации по Windows SDK. Элемент DesiredAccess структуры должен иметь значение SERVER_ACCESS_ADMINISTER. Его члены pDatatype и pDevMode могут иметь значение NULL.

    Этот вызов вызывает функцию XcvOpenPort библиотеки DLL сервера монитора печати.

  2. Получите имя порта от пользователя, открыв диалоговое окно.

  3. Вызовите XcvData, указав следующие входные аргументы:

    • Дескриптор, полученный из OpenPrinter

    • Имя порта, полученное от пользователя

    • Строка настраиваемого имени данных, например "PortExists"

    Этот вызов вызывает функцию XcvDataPort серверной библиотеки DLL. Функция XcvDataPort должна возвращать значение, указывающее, используется ли указанное имя порта. Если она имеется, библиотека DLL пользовательского интерфейса должна запросить у пользователя другое имя и снова вызвать XcvData .

  4. После получения допустимого нового имени порта снова вызовите XcvData , на этот раз указав следующие входные аргументы.

    • Дескриптор, полученный из OpenPrinter

    • Проверенное имя порта, полученное от пользователя

    • Строка имени данных AddPort

    Этот вызов приводит к повторному вызову функции XcvDataPort библиотеки DLL сервера.

  5. Получите параметры конфигурации порта от пользователя, открыв диалоговое окно.

  6. Вызовите XcvData один или несколько раз, указав настраиваемые строки имен данных, чтобы отправить каждый параметр конфигурации в серверную библиотеку DLL. Каждый вызов XcvData вызывает функцию XcvDataPort сервера.

  7. Вызовите ClosePrinter, указав дескриптор, полученный из OpenPrinter. Это приводит к вызову функции XcvClosePort библиотеки DLL сервера.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть winsplp.h (включая Winsplp.h)

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

MONITORUI

XcvClosePort

XcvData

XcvDataPort

XcvOpenPort