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) |