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


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

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

Синтаксис

LPMONITOR2 InitializePrintMonitor2(
  [in]  PMONITORINIT pMonitorInit,
  [out] PHANDLE      phMonitor
);

Параметры

[in] pMonitorInit

Указатель на структуру MONITORINIT , предоставленный вызывающим.

[out] phMonitor

Указанное вызывающей стороны расположение, в котором функция возвращает дескриптор монитора.

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

Если операция выполнена успешно, функция должна вернуть указатель на структуру MONITOR2 . В противном случае функция должна вызвать SetLastError (описано в документации по Microsoft Windows SDK), чтобы задать код ошибки и вернуть значение NULL.

Комментарии

Функция InitializePrintMonitor2 должна быть экспортирована языковыми мониторами и библиотеками DLL сервера мониторинга портов. Функция вызывается сразу после загрузки библиотеки DLL монитора и не вызывается повторно, пока библиотека DLL не будет перезагружена. Его назначение — разрешить монитору инициализировать себя и предоставить очереди очереди с указателями на внутренние функции монитора. Указатели функций содержатся в структуре MONITOR2 .

Структура MONITOR2 в Windows XP больше, чем в Windows 2000. Чтобы гарантировать, что монитор, разработанный с помощью пакета средств разработки драйверов Windows XP (DDK), будет установлен в Windows XP и Windows 2000, монитор должен выполнить следующие действия:

  • Выполните проверка во время выполнения, чтобы определить версию операционной системы, в которой работает монитор.
  • Если монитор работает в Windows 2000, он должен задать для элемента cbSize структуры MONITOR2 значение MONITOR2_SIZE_WIN2K (определяется в Winsplp.h) размера, соответствующего версии Windows 2000 этой структуры.

Следующая функция определяет, является ли текущая версия операционной системы Windows 2000.

BOOL  Is_Win2000()
{
  OSVERSIONINFOEX osvi;
  DWORDLONG dwlConditionMask = 0;

  // Initialize the OSVERSIONINFOEX structure.

  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  osvi.dwMajorVersion = 5;
  osvi.dwMinorVersion = 0;

  // Initialize the condition mask.
  VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, VER_EQUAL );
  VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, VER_EQUAL );

  // Perform the test.
  return VerifyVersionInfo(
      &osvi,
      VER_MAJORVERSION | VER_MINORVERSION,
      dwlConditionMask);
}

Для монитора, который загружается в Windows 2000, следующий код задает член cbSize структуры MONITOR2 соответствующим образом.

if ( Is_Win2000( ) )
    Monitor2.cbSize = MONITOR2_SIZE_WIN2K;

Требования

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

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

MONITORINIT