MONITOR2 estructura (winsplp.h)

La estructura MONITOR2 contiene punteros a las funciones definidas por los monitores de impresión.

Sintaxis

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;

Miembros

cbSize

Especifica el tamaño, en bytes, de la estructura MONITOR2.

pfnEnumPorts

Una función EnumPorts del archivo DLL del servidor de supervisión de puertos enumera los puertos que admite el monitor de puertos.

pfnOpenPort

Puntero a la función OpenPort del monitor de impresión.

pfnOpenPortEx

La función OpenPortEx de un monitor de lenguaje abre un puerto de impresora.

pfnStartDocPort

La función StartDocPort de un monitor de impresión realiza las tareas necesarias para iniciar un trabajo de impresión en el puerto especificado.

pfnWritePort

Puntero a la función WritePort del monitor de impresión.

pfnReadPort

Puntero a la función ReadPort del monitor de impresión.

pfnEndDocPort

La función EndDocPort de un monitor de impresión realiza las tareas necesarias para finalizar un trabajo de impresión en el puerto especificado.

pfnClosePort

Puntero a la función ClosePort del monitor de impresión.

pfnAddPort

Precaución

La función AddPort está obsoleta y no debe usarse.

AddPort crea un puerto y lo agrega a la lista de puertos admitidos actualmente por el monitor especificado en el entorno de cola.

pfnAddPortEx

(Obsoleto. Debe ser NULL). Puntero a la función AddPortEx del monitor de impresión. (Solo monitores de puerto).

pfnConfigurePort

Precaución

La función ConfigurePort está obsoleta y no debe usarse. Use ConfigurePortUI en su lugar.

ConfigurePort es una función de administración de puertos que configura el puerto especificado.

pfnDeletePort

Precaución

La función DeletePort está obsoleta y no debe usarse.

DeletePort elimina un puerto del entorno del monitor.

pfnGetPrinterDataFromPort

Puntero a la función GetPrinterDataFromPort del monitor de impresión.

pfnSetPortTimeOuts

Una función SetPortTimeOuts del archivo DLL del servidor de supervisión de puertos establece valores de tiempo de espera de puerto para un puerto abierto.

pfnXcvOpenPort

Puntero a la función XcvOpenPort del monitor de impresión. (Solo monitores de puerto).

pfnXcvDataPort

Puntero a la función XcvDataPort del monitor de impresión. (Solo monitores de puerto).

pfnXcvClosePort

Puntero a la función XcvClosePort del monitor de impresión. (Solo monitores de puerto).

pfnShutdown

Puntero a la función Shutdown del monitor de impresión.

pfnSendRecvBidiDataFromPort

Puntero a la función SendRecvBidiDataFromPort del monitor de impresión.

pfnNotifyUsedPorts

Puntero a la función NotifyUsedPorts del monitor de impresión.

pfnNotifyUnusedPorts

Puntero a la función NotifyUnusedPorts del monitor de impresión.

pfnPowerEvent

Puntero a la función PowerEvent del monitor de impresión.

Comentarios

Cada monitor de idioma y cada DLL del servidor de supervisión de puertos debe proporcionar una estructura de MONITOR2. El monitor debe proporcionar valores para todos los miembros de la estructura y especificar la dirección de la estructura como valor devuelto para su función InitializePrintMonitor2 .

Si no se define una función, su puntero debe ser NULL.

La estructura MONITOR2 es mayor en Windows XP que en Windows 2000. Para asegurarse de que un monitor desarrollado con el Kit de desarrollo de controladores de Windows XP (DDK) se instalará en Windows XP y Windows 2000, el monitor debe hacer lo siguiente:

  • Realice una comprobación en tiempo de ejecución para determinar en qué versión del sistema operativo se ejecuta el monitor.
  • Si el monitor se ejecuta en Windows 2000, debe establecer el miembro cbSize de la estructura de MONITOR2 en MONITOR2_SIZE_WIN2K (definido en Winsplp.h), el tamaño adecuado para la versión de Windows 2000 de esta estructura.

La siguiente función determina si la versión actual del sistema operativo es 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);
}

Para un monitor que se carga en Windows 2000, el código siguiente establece el miembro cbSize de la estructura MONITOR2 apropiadamente.

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

Requisitos

Requisito Valor
Header winsplp.h (incluya Winsplp.h)

Consulte también

InitializePrintMonitor2

MONITORUI