Поделиться через


структура MONITOR2 (winsplp.h)

Структура MONITOR2 содержит указатели на функции, определенные мониторами печати.

Синтаксис

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;

Члены

cbSize

Задает размер структуры MONITOR2 в байтах.

pfnEnumPorts

Функция EnumPorts сервера мониторинга портов в библиотеке DLL перечисляет порты, поддерживаемые монитором портов.

pfnOpenPort

Указатель на функцию OpenPort монитора печати.

pfnOpenPortEx

Функция OpenPortEx языкового монитора открывает порт принтера.

pfnStartDocPort

Функция StartDocPort монитора печати выполняет задачи, необходимые для запуска задания печати на указанном порту.

pfnWritePort

Указатель на функцию WritePort монитора печати.

pfnReadPort

Указатель на функцию ReadPort монитора печати.

pfnEndDocPort

Функция EndDocPort монитора печати выполняет задачи, необходимые для завершения задания печати на указанном порту.

pfnClosePort

Указатель на функцию ClosePort монитора печати.

pfnAddPort

Внимание!

Функция AddPort устарела и не должна использоваться.

AddPort создает порт и добавляет его в список портов, поддерживаемых в настоящее время указанным монитором в среде очереди очереди.

pfnAddPortEx

(Устарело. Должно иметь значение NULL.) Указатель на функцию AddPortEx монитора печати. (Только мониторы портов.)

pfnConfigurePort

Внимание!

Функция ConfigurePort устарела и не должна использоваться. Вместо этого используйте ConfigurePortUI .

ConfigurePort — это функция управления портами, которая настраивает указанный порт.

pfnDeletePort

Внимание!

Функция DeletePort устарела и не должна использоваться.

DeletePort удаляет порт из среды монитора.

pfnGetPrinterDataFromPort

Указатель на функцию GetPrinterDataFromPort монитора печати.

pfnSetPortTimeOuts

Функция SetPortTimeOuts сервера мониторинга портов dll задает значения времени ожидания порта для открытого порта.

pfnXcvOpenPort

Указатель на функцию XcvOpenPort монитора печати. (Только мониторы портов.)

pfnXcvDataPort

Указатель на функцию XcvDataPort монитора печати. (Только мониторы портов.)

pfnXcvClosePort

Указатель на функцию XcvClosePort монитора печати. (Только мониторы портов.)

pfnShutdown

Указатель на функцию завершения работы монитора печати.

pfnSendRecvBidiDataFromPort

Указатель на функцию SendRecvBidiDataFromPort монитора печати.

pfnNotifyUsedPorts

Указатель на функцию NotifyUsedPorts монитора печати.

pfnNotifyUnusedPorts

Указатель на функцию NotifyUnusedPorts монитора печати.

pfnPowerEvent

Указатель на функцию PowerEvent монитора печати.

Комментарии

Каждый языковой монитор и библиотека DLL сервера мониторинга портов должны предоставлять MONITOR2 структуру. Монитор должен предоставить значения для всех элементов структуры и указать адрес структуры в качестве возвращаемого значения для функции InitializePrintMonitor2 .

Если функция не определена, ее указатель должен иметь значение NULL.

Структура MONITOR2 больше в Windows XP, чем в Windows 2000. Чтобы гарантировать, что монитор, разработанный с помощью пакета средств разработки драйверов Windows XP (DDK), будет установлен в Windows XP и Windows 2000, монитор должен выполнять следующие действия:

  • Выполните проверка во время выполнения, чтобы определить версию операционной системы, в которой работает монитор.
  • Если монитор работает в Windows 2000, он должен задать для элемента cbSize структуры MONITOR2 значение MONITOR2_SIZE_WIN2K (определяется в Winsplp.h), размер, соответствующий версии Windows 2000 этой структуры.

Следующая функция определяет, является ли текущая версия операционной системы 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);
}

Для монитора, загружаемого в Windows 2000, следующий код задает член cbSize структуры MONITOR2 соответствующим образом.

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

Требования

Требование Значение
Заголовок winsplp.h (включая Winsplp.h)

См. также раздел

InitializePrintMonitor2

MONITORUI