InitializePrintMonitor2-Funktion (winsplp.h)

Die InitializePrintMonitor2-Funktion eines Druckmonitors initialisiert einen Druckmonitor zur Verwendung mit gruppierten Druckservern.

Syntax

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

Parameter

[in] pMonitorInit

Vom Aufrufer bereitgestellter Zeiger auf eine MONITORINIT-Struktur .

[out] phMonitor

Vom Aufrufer bereitgestellte Position, an der die Funktion ein Überwachungshandle zurückgibt.

Rückgabewert

Wenn der Vorgang erfolgreich ist, sollte die Funktion einen Zeiger auf eine MONITOR2-Struktur zurückgeben. Andernfalls sollte die Funktion SetLastError aufrufen (in der Microsoft Windows SDK Dokumentation beschrieben), um einen Fehlercode festzulegen und NULL zurückzugeben.

Hinweise

Die InitializePrintMonitor2-Funktion muss nach Sprachmonitoren und nach Portmonitorserver-DLLs exportiert werden. Die Funktion wird unmittelbar nach dem Laden der Monitor-DLL aufgerufen und erst dann erneut aufgerufen, wenn die DLL erneut geladen wird. Zweck ist es, dem Monitor zu ermöglichen, sich selbst zu initialisieren und dem Spooler Zeiger auf interne Überwachungsfunktionen bereitzustellen. Funktionszeiger sind in einer MONITOR2-Struktur enthalten.

Die MONITOR2 Struktur ist in Windows XP größer als in Windows 2000. Um sicherzustellen, dass ein monitor, der mit dem Windows XP Driver Development Kit (DDK) entwickelt wurde, unter Windows XP und Windows 2000 installiert wird, muss der Monitor folgendes tun:

  • Führen Sie eine Laufzeitüberprüfung durch, um zu bestimmen, unter welcher Betriebssystemversion der Monitor ausgeführt wird.
  • Wenn der Monitor unter Windows 2000 ausgeführt wird, muss er den cbSize-Member der MONITOR2-Struktur auf MONITOR2_SIZE_WIN2K (definiert in Winsplp.h) festlegen, die für die Windows 2000-Version dieser Struktur geeignet ist.

Die folgende Funktion bestimmt, ob die aktuelle Betriebssystemversion Windows 2000 ist.

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);
}

Für einen Monitor, der unter Windows 2000 geladen wird, legt der folgende Code den cbSize-Member der MONITOR2-Struktur entsprechend fest.

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

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile winsplp.h (winsplp.h einschließen)

Weitere Informationen

MONITORINIT