estrutura MONITOR2 (winsplp.h)
A estrutura MONITOR2 contém ponteiros para as funções definidas pelos monitores de impressão.
Sintaxe
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;
Membros
cbSize
Especifica o tamanho, em bytes, da estrutura MONITOR2.
pfnEnumPorts
Uma função EnumPorts do servidor de monitor de porta enumera as portas compatíveis com o monitor de porta.
pfnOpenPort
Ponteiro para a função OpenPort do monitor de impressão.
pfnOpenPortEx
A função OpenPortEx de um monitor de idioma abre uma porta de impressora.
pfnStartDocPort
A função StartDocPort de um monitor de impressão executa as tarefas necessárias para iniciar um trabalho de impressão na porta especificada.
pfnWritePort
Ponteiro para a função WritePort do monitor de impressão.
pfnReadPort
Ponteiro para a função ReadPort do monitor de impressão.
pfnEndDocPort
A função EndDocPort de um monitor de impressão executa as tarefas necessárias para encerrar um trabalho de impressão na porta especificada.
pfnClosePort
Ponteiro para a função ClosePort do monitor de impressão.
pfnAddPort
Cuidado
A função AddPort é obsoleta e não deve ser usada.
AddPort cria uma porta e a adiciona à lista de portas atualmente compatíveis com o monitor especificado no ambiente do spooler.
pfnAddPortEx
(Obsoleto. Deve ser NULL.) Ponteiro para a função AddPortEx do monitor de impressão. (Somente monitores de porta.)
pfnConfigurePort
Cuidado
A função ConfigurePort é obsoleta e não deve ser usada. Em vez disso, use ConfigurePortUI .
ConfigurePort é uma função de gerenciamento de porta que configura a porta especificada.
pfnDeletePort
Cuidado
A função DeletePort é obsoleta e não deve ser usada.
DeletePort exclui uma porta do ambiente do monitor.
pfnGetPrinterDataFromPort
Ponteiro para a função GetPrinterDataFromPort do monitor de impressão.
pfnSetPortTimeOuts
Uma função SetPortTimeOuts do servidor de monitor de porta define valores de tempo limite de porta para uma porta aberta.
pfnXcvOpenPort
Ponteiro para a função XcvOpenPort do monitor de impressão. (Somente monitores de porta.)
pfnXcvDataPort
Ponteiro para a função XcvDataPort do monitor de impressão. (Somente monitores de porta.)
pfnXcvClosePort
Ponteiro para a função XcvClosePort do monitor de impressão. (Somente monitores de porta.)
pfnShutdown
Ponteiro para a função Desligamento do monitor de impressão.
pfnSendRecvBidiDataFromPort
Ponteiro para a função SendRecvBidiDataFromPort do monitor de impressão.
pfnNotifyUsedPorts
Ponteiro para a função NotifyUsedPorts do monitor de impressão.
pfnNotifyUnusedPorts
Ponteiro para a função NotifyUnusedPorts do monitor de impressão.
pfnPowerEvent
Ponteiro para a função PowerEvent do monitor de impressão.
Comentários
Cada monitor de idioma e cada DLL do servidor de monitor de porta devem fornecer uma estrutura MONITOR2. O monitor deve fornecer valores para todos os membros da estrutura e especificar o endereço da estrutura como o valor retornado para sua função InitializePrintMonitor2 .
Se uma função não estiver definida, seu ponteiro deverá ser NULL.
A estrutura MONITOR2 é maior no Windows XP do que no Windows 2000. Para garantir que um monitor desenvolvido com o DDK (Kit de Desenvolvimento de Driver) do Windows XP seja instalado no Windows XP e no Windows 2000, o monitor deve fazer o seguinte:
- Execute uma marcar em tempo de execução para determinar em qual versão do sistema operacional o monitor está sendo executado.
- Se o monitor estiver em execução no Windows 2000, ele deverá definir o membro cbSize da estrutura MONITOR2 como MONITOR2_SIZE_WIN2K (definido em Winsplp.h), o tamanho apropriado para a versão do Windows 2000 dessa estrutura.
A função a seguir determina se a versão atual do sistema operacional é o 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 um monitor que está carregando no Windows 2000, o código a seguir define o membro cbSize da estrutura MONITOR2 adequadamente.
if ( Is_Win2000( ) )
Monitor2.cbSize = MONITOR2_SIZE_WIN2K;
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | winsplp.h (inclua Winsplp.h) |