structure MONITOR2 (winsplp.h)

La structure MONITOR2 contient des pointeurs vers les fonctions définies par les moniteurs d’impression.

Syntaxe

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;

Membres

cbSize

Spécifie la taille, en octets, de la structure MONITOR2.

pfnEnumPorts

La fonction EnumPorts d’une DLL de serveur de surveillance de port énumère les ports pris en charge par le moniteur de port.

pfnOpenPort

Pointeur vers la fonction OpenPort du moniteur d’impression.

pfnOpenPortEx

La fonction OpenPortEx d’un moniteur de langue ouvre un port d’imprimante.

pfnStartDocPort

La fonction StartDocPort d’un moniteur d’impression effectue les tâches requises pour démarrer un travail d’impression sur le port spécifié.

pfnWritePort

Pointeur vers la fonction WritePort du moniteur d’impression.

pfnReadPort

Pointeur vers la fonction ReadPort du moniteur d’impression.

pfnEndDocPort

La fonction EndDocPort d’un moniteur d’impression effectue les tâches nécessaires pour mettre fin à un travail d’impression sur le port spécifié.

pfnClosePort

Pointeur vers la fonction ClosePort du moniteur d’impression.

pfnAddPort

Attention

La fonction AddPort est obsolète et ne doit pas être utilisée.

AddPort crée un port et l’ajoute à la liste des ports actuellement pris en charge par le moniteur spécifié dans l’environnement de spouleur.

pfnAddPortEx

(Obsolète. Doit avoir la valeur NULL.) Pointeur vers la fonction AddPortEx du moniteur d’impression. (Moniteurs de port uniquement.)

pfnConfigurePort

Attention

La fonction ConfigurePort est obsolète et ne doit pas être utilisée. Utilisez ConfigurePortUI à la place.

ConfigurePort est une fonction de gestion des ports qui configure le port spécifié.

pfnDeletePort

Attention

La fonction DeletePort est obsolète et ne doit pas être utilisée.

DeletePort supprime un port de l’environnement du moniteur.

pfnGetPrinterDataFromPort

Pointeur vers la fonction GetPrinterDataFromPort du moniteur d’impression.

pfnSetPortTimeOuts

La fonction SetPortTimeOuts d’une DLL de serveur de surveillance de port définit les valeurs de délai d’attente de port pour un port ouvert.

pfnXcvOpenPort

Pointeur vers la fonction XcvOpenPort du moniteur d’impression. (Moniteurs de port uniquement.)

pfnXcvDataPort

Pointeur vers la fonction XcvDataPort du moniteur d’impression. (Moniteurs de port uniquement.)

pfnXcvClosePort

Pointeur vers la fonction XcvClosePort du moniteur d’impression. (Moniteurs de port uniquement.)

pfnShutdown

Pointeur vers la fonction d’arrêt du moniteur d’impression.

pfnSendRecvBidiDataFromPort

Pointeur vers la fonction SendRecvBidiDataFromPort du moniteur d’impression .

pfnNotifyUsedPorts

Pointeur vers la fonction NotifyUsedPorts du moniteur d’impression.

pfnNotifyUnusedPorts

Pointeur vers la fonction NotifyUnusedPorts du moniteur d’impression.

pfnPowerEvent

Pointeur vers la fonction PowerEvent du moniteur d’impression.

Remarques

Chaque moniteur de langue et chaque DLL de serveur de surveillance de port doivent fournir une structure MONITOR2. Le moniteur doit fournir des valeurs pour tous les membres de la structure et spécifier l’adresse de la structure comme valeur de retour pour sa fonction InitializePrintMonitor2 .

Si une fonction n’est pas définie, son pointeur doit avoir la valeur NULL.

La structure MONITOR2 est plus grande dans Windows XP que dans Windows 2000. Pour s’assurer qu’un moniteur développé avec le Kit de développement de pilotes Windows XP (DDK) sera installé sur Windows XP et Windows 2000, le moniteur doit effectuer les opérations suivantes :

  • Effectuez une case activée d’exécution pour déterminer la version du système d’exploitation sur laquelle le moniteur s’exécute.
  • Si le moniteur s’exécute sur Windows 2000, il doit définir le membre cbSize de la structure MONITOR2 sur MONITOR2_SIZE_WIN2K (défini dans Winsplp.h), la taille appropriée pour la version Windows 2000 de cette structure.

La fonction suivante détermine si la version actuelle du système d’exploitation est 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);
}

Pour un moniteur qui se charge sur Windows 2000, le code suivant définit correctement le membre cbSize de la structure MONITOR2.

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

Configuration requise

Condition requise Valeur
En-tête winsplp.h (inclure Winsplp.h)

Voir aussi

InitializePrintMonitor2

MONITORUI