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)

Confira também

InitializePrintMonitor2

MONITORUI