Condividi tramite


MONITOR2 struttura (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;

Members

cbSize

Specifica le dimensioni, in byte, della struttura MONITOR2.

pfnEnumPorts

Una funzione EnumPorts del server di monitoraggio porta enumporta le porte supportate dal monitoraggio delle porte.

pfnOpenPort

Puntatore alla funzione OpenPort del monitor di stampa.

pfnOpenPortEx

La funzione OpenPortEx di un monitoraggio 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

Attenzione

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 AddPortEx del monitor di stampa. (Solo monitoraggi porta).

pfnConfigurePort

Attenzione

La funzione ConfigurePort è obsoleta e non deve essere usata. Usare invece ConfigurePortUI .

ConfigurePort è una funzione di gestione delle porte che configura la porta specificata.

pfnDeletePort

Attenzione

La funzione DeletePort è obsoleta e non deve essere usata.

DeletePort elimina una porta dall'ambiente del monitoraggio.

pfnGetPrinterDataFromPort

Puntatore alla funzione GetPrinterDataFromPort del monitor di stampa.

pfnSetPortTimeOuts

La funzione SetPortTimeOuts di un server di monitoraggio porta imposta i valori di timeout della porta per una porta aperta.

pfnXcvOpenPort

Puntatore alla funzione XcvOpenPort del monitor di stampa. (Solo monitoraggi porta).

pfnXcvDataPort

Puntatore alla funzione XcvDataPort del monitor di stampa. (Solo monitoraggi porta).

pfnXcvClosePort

Puntatore alla funzione XcvClosePort del monitor di stampa. (Solo monitoraggi porta).

pfnShutdown

Puntatore alla funzione Di arresto del monitor di stampa.

pfnSendRecvBidiDataFromPort

Puntatore alla funzione SendRecvBidiDataFromPort del monitor di stampa.

pfnNotifyUsedPorts

Puntatore alla funzione NotifyUsedPorts del monitor di stampa.

pfnNotifyUnusedPorts

Puntatore alla funzione NotifyUnusedPorts del monitor di stampa.

pfnPowerEvent

Puntatore alla funzione PowerEvent del monitor di stampa.

Commenti

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 funzione InitializePrintMonitor2 .

Se una funzione non è definita, il puntatore deve essere NULL.

La struttura MONITOR2 è più grande in Windows XP rispetto a quella di Windows 2000. Per garantire che un monitoraggio sviluppato con Windows XP Driver Development Kit (DDK) installerà in Windows XP e Windows 2000, il monitoraggio deve eseguire le operazioni seguenti:

  • Eseguire un controllo di runtime 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 monitoraggio che viene caricato in Windows 2000, il codice seguente imposta in modo appropriato il membro cbSize della struttura di MONITOR2.

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

Requisiti

Requisito Valore
Intestazione winsplp.h (include Winsplp.h)

Vedi anche

InitializePrintMonitor2

MONITORUI