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 结构中。

Windows XP 中的 MONITOR2 结构比在 Windows 2000 中更大。 为了确保使用 Windows XP 驱动程序开发工具包 (DDK) 开发的监视器将安装在 Windows XP 和 Windows 2000 上,监视器必须执行以下操作:

  • 执行运行时检查以确定运行监视器的操作系统版本。
  • 如果监视器在 Windows 2000 上运行,则必须将 MONITOR2 结构的 cbSize 成员设置为 winsplp.h) 中定义的MONITOR2_SIZE_WIN2K (,该大小适合此结构的 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)

另请参阅

MONITORINIT