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