структура 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) |