MONITOR2-Struktur (winsplp.h)

Die MONITOR2-Struktur enthält Zeiger auf die von Druckmonitoren definierten Funktionen.

Syntax

typedef struct _MONITOR2 {
  DWORD  cbSize;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,DWORD Level,LPBYTE pPorts,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)  *pfnEnumPorts;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,PHANDLE pHandle)  *pfnOpenPort;
  BOOL()(HANDLE hMonitor,HANDLE hMonitorPort,LPWSTR pPortName,LPWSTR pPrinterName,PHANDLE pHandle,_MONITOR2 *pMonitor2)  * pfnOpenPortEx;
  BOOL( )(HANDLE hPort,LPWSTR pPrinterName,DWORD JobId,DWORD Level,LPBYTE pDocInfo)  *pfnStartDocPort;
  BOOL( )(HANDLE hPort,LPBYTE pBuffer,DWORD cbBuf,LPDWORD pcbWritten)  *pfnWritePort;
  BOOL( )(HANDLE hPort,LPBYTE pBuffer,DWORD cbBuffer,LPDWORD pcbRead)  *pfnReadPort;
  BOOL( )(HANDLE hPort)  *pfnEndDocPort;
  BOOL( )(HANDLE hPort)  *pfnClosePort;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,HWND hWnd,LPWSTR pMonitorName)  *pfnAddPort;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,DWORD Level,LPBYTE lpBuffer,LPWSTR lpMonitorName)  *pfnAddPortEx;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,HWND hWnd,LPWSTR pPortName)  *pfnConfigurePort;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,HWND hWnd,LPWSTR pPortName)  *pfnDeletePort;
  BOOL( )(HANDLE hPort,DWORD ControlID,LPWSTR pValueName,LPWSTR lpInBuffer,DWORD cbInBuffer,LPWSTR lpOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbReturned)  *pfnGetPrinterDataFromPort;
  BOOL( )(HANDLE hPort,LPCOMMTIMEOUTS lpCTO,DWORD reserved)  *pfnSetPortTimeOuts;
  BOOL( )(HANDLE hMonitor,LPCWSTR pszObject,ACCESS_MASK GrantedAccess,PHANDLE phXcv)  *pfnXcvOpenPort;
  DWORD( )(HANDLE hXcv,LPCWSTR pszDataName,PBYTE pInputData,DWORD cbInputData,PBYTE pOutputData,DWORD cbOutputData,PDWORD pcbOutputNeeded) *pfnXcvDataPort;
  BOOL( )(HANDLE hXcv)  *pfnXcvClosePort;
  VOID( )(HANDLE hMonitor)  *pfnShutdown;
  DWORD()(HANDLE hPort,DWORD dwAccessBit,LPCWSTR pAction,PBIDI_REQUEST_CONTAINER pReqData,PBIDI_RESPONSE_CONTAINER *ppResData) * pfnSendRecvBidiDataFromPort;
  DWORD()(HANDLE hMonitor,DWORD cPorts,PCWSTR *ppszPorts) * pfnNotifyUsedPorts;
  DWORD()(HANDLE hMonitor,DWORD cPorts,PCWSTR *ppszPorts) * pfnNotifyUnusedPorts;
  DWORD()(HANDLE hMonitor,DWORD event,POWERBROADCAST_SETTING *pSettings) * pfnPowerEvent;
} MONITOR2, *PMONITOR2, *LPMONITOR2;

Member

cbSize

Gibt die Größe der MONITOR2-Struktur in Bytes an.

pfnEnumPorts

Die EnumPorts-Funktion einer Portmonitorserver-DLL listet die Vom Portmonitor unterstützten Ports auf.

pfnOpenPort

Zeiger auf die OpenPort-Funktion des Druckmonitors.

pfnOpenPortEx

Die OpenPortEx-Funktion eines Sprachmonitors öffnet einen Druckeranschluss.

pfnStartDocPort

Die StartDocPort-Funktion eines Druckmonitors führt die Aufgaben aus, die zum Starten eines Druckauftrags am angegebenen Port erforderlich sind.

pfnWritePort

Zeiger auf die WritePort-Funktion des Druckmonitors.

pfnReadPort

Zeiger auf die ReadPort-Funktion des Druckmonitors.

pfnEndDocPort

Die EndDocPort-Funktion eines Druckmonitors führt die Aufgaben aus, die zum Beenden eines Druckauftrags am angegebenen Port erforderlich sind.

pfnClosePort

Zeiger auf die ClosePort-Funktion des Druckmonitors.

pfnAddPort

Achtung

Die AddPort-Funktion ist veraltet und sollte nicht verwendet werden.

AddPort erstellt einen Port und fügt ihn der Liste der Ports hinzu, die derzeit vom angegebenen Monitor in der Spooler-Umgebung unterstützt werden.

pfnAddPortEx

(Veraltet. Muss NULL sein.) Zeiger auf die AddPortEx-Funktion des Druckmonitors. (Nur Portmonitore.)

pfnConfigurePort

Achtung

Die ConfigurePort-Funktion ist veraltet und sollte nicht verwendet werden. Verwenden Sie stattdessen ConfigurePortUI .

ConfigurePort ist eine Portverwaltungsfunktion, die den angegebenen Port konfiguriert.

pfnDeletePort

Achtung

Die DeletePort-Funktion ist veraltet und sollte nicht verwendet werden.

DeletePort löscht einen Port aus der Umgebung des Monitors.

pfnGetPrinterDataFromPort

Zeiger auf die GetPrinterDataFromPort-Funktion des Druckmonitors.

pfnSetPortTimeOuts

Die SetPortTimeOuts-Funktion einer Portmonitorserver-DLL legt Porttimeoutwerte für einen offenen Port fest.

pfnXcvOpenPort

Zeiger auf die XcvOpenPort-Funktion des Druckmonitors. (Nur Portmonitore.)

pfnXcvDataPort

Zeiger auf die XcvDataPort-Funktion des Druckmonitors. (Nur Portmonitore.)

pfnXcvClosePort

Zeiger auf die XcvClosePort-Funktion des Druckmonitors. (Nur Portmonitore.)

pfnShutdown

Zeiger auf die Shutdown-Funktion des Druckmonitors.

pfnSendRecvBidiDataFromPort

Zeiger auf die SendRecvBidiDataFromPort-Funktion des Druckmonitors.

pfnNotifyUsedPorts

Zeiger auf die NotifyUsedPorts-Funktion des Druckmonitors .

pfnNotifyUnusedPorts

Zeiger auf die NotifyUnusedPorts-Funktion des Druckmonitors .

pfnPowerEvent

Zeiger auf die PowerEvent-Funktion des Druckmonitors.

Hinweise

Jeder Sprachmonitor und jede Portmonitorserver-DLL muss eine MONITOR2 Struktur bereitstellen. Der Monitor muss Werte für alle Strukturmember bereitstellen und die Adresse der Struktur als Rückgabewert für die InitializePrintMonitor2-Funktion angeben.

Wenn eine Funktion nicht definiert ist, muss ihr Zeiger NULL sein.

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

  • Führen Sie eine Laufzeitüberprüfung durch, um zu ermitteln, 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 festlegen (definiert in Winsplp.h), die Größe, 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
Header winsplp.h (einschließlich Winsplp.h)

Weitere Informationen

InitializePrintMonitor2

MONITORUI