Condividi tramite


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)

Vedere anche

InitializePrintMonitor2

MONITORUI