struttura MONITOR2 (winsplp.h)
La struttura MONITOR2 contiene puntatori alle funzioni definite dai monitor di stampa.
Sintassi
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;
Membri
cbSize
Specifica le dimensioni, in byte, della struttura MONITOR2.
pfnEnumPorts
Una DLL del server di monitoraggio delle porte EnumPorts funzione enumera le porte supportate dal monitoraggio delle porte.
pfnOpenPort
Puntatore alla funzione OpenPort del monitor di stampa.
pfnOpenPortEx
La funzione OpenPortEx di un monitor del linguaggio apre una porta della stampante.
pfnStartDocPort
La funzione StartDocPort di un monitor di stampa esegue le attività necessarie per avviare un processo di stampa sulla porta specificata.
pfnWritePort
Puntatore alla funzione writePort del monitor di stampa.
pfnReadPort
Puntatore alla funzione ReadPort del monitor di stampa.
pfnEndDocPort
La funzione EndDocPort di un monitor di stampa esegue le attività necessarie per terminare un processo di stampa sulla porta specificata.
pfnClosePort
Puntatore alla funzione ClosePort del monitor di stampa.
pfnAddPort
Cautela
La funzione addPort è obsoleta e non deve essere usata.
AddPort crea una porta e la aggiunge all'elenco di porte attualmente supportate dal monitoraggio specificato nell'ambiente spooler.
pfnAddPortEx
(Obsoleto. Deve essere NULL. Puntatore alla funzione di addPortEx del monitor di stampa. (Solo monitoraggi porta).
pfnConfigurePort
Cautela
La funzione ConfigurePort è obsoleta e non deve essere usata. In alternativa, usare ConfigurePortUI.
ConfigurePort è una funzione di gestione delle porte che configura la porta specificata.
pfnDeletePort
Cautela
La funzione DeletePort è obsoleta e non deve essere usata.
DeletePort elimina una porta dall'ambiente del monitoraggio.
pfnGetPrinterDataFromPort
Puntatore alla funzione di GetPrinterDataFromPort del monitor di stampa.
pfnSetPortTimeOuts
Una DLL del server di monitoraggio delle porte SetPortTimeOuts funzione imposta i valori di timeout della porta per una porta aperta.
pfnXcvOpenPort
Puntatore alla funzione di XcvOpenPort del monitor di stampa. (Solo monitoraggi porta).
pfnXcvDataPort
Puntatore alla funzione di XcvDataPort del monitor di stampa. (Solo monitoraggi porta).
pfnXcvClosePort
Puntatore alla funzione di XcvClosePort del monitor di stampa. (Solo monitoraggi porta).
pfnShutdown
Puntatore alla funzione Shutdown del monitor di stampa.
pfnSendRecvBidiDataFromPort
Puntatore alla funzione SendRecvBidiDataFromPort del monitor di stampa.
pfnNotifyUsedPorts
Puntatore alla funzione di del monitor di stampa NotifyUsedPorts.
pfnNotifyUnusedPorts
Puntatore alla funzione di del monitor di stampa NotifyUnusedPorts.
pfnPowerEvent
Puntatore alla funzione di powerEvent del monitor di stampa.
Osservazioni
Ogni monitoraggio del linguaggio e ogni DLL del server di monitoraggio delle porte deve fornire una struttura MONITOR2. Il monitoraggio deve fornire valori per tutti i membri della struttura e specificare l'indirizzo della struttura come valore restituito per la relativa funzione InitializePrintMonitor2.
Se una funzione non è definita, il puntatore deve essere NULL.
La struttura MONITOR2 è più grande in Windows XP rispetto a windows 2000. Per garantire che un monitor sviluppato con Windows XP Driver Development Kit (DDK) venga installato in Windows XP e Windows 2000, il monitor deve eseguire le operazioni seguenti:
- Eseguire un controllo in fase di esecuzione per determinare la versione del sistema operativo in cui è in esecuzione il monitoraggio.
- Se il monitoraggio è in esecuzione in Windows 2000, deve impostare il membro cbSize della struttura MONITOR2 su MONITOR2_SIZE_WIN2K (definito in Winsplp.h), le dimensioni appropriate per la versione di Windows 2000 di questa struttura.
La funzione seguente determina se la versione corrente del sistema operativo è 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);
}
Per un monitor che viene caricato in Windows 2000, il codice seguente imposta in modo appropriato il membro cb Size della struttura MONITOR2.
if ( Is_Win2000( ) )
Monitor2.cbSize = MONITOR2_SIZE_WIN2K;
Fabbisogno
Requisito | Valore |
---|---|
intestazione | winsplp.h (includere Winsplp.h) |