打印监视器的 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 上运行,则必须将MONITOR2结构的 cbSize 成员设置为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 上加载的监视器,以下代码相应地设置MONITOR2结构的 cbSize 成员。
if ( Is_Win2000( ) )
    Monitor2.cbSize = MONITOR2_SIZE_WIN2K;
要求
| 要求 | 价值 | 
|---|---|
| 目标平台 | 桌面 | 
| 标头 | winsplp.h (包括 Winsplp.h) |