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 上執行,則必須將 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