Функция 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) |