共用方式為


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

埠監視器伺服器 DLL 的 EnumPorts 函式會列舉埠監視器支援的埠。

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

埠監視器伺服器 DLL 的 SetPortTimeOuts 函 式會設定開啟埠的埠逾時值。

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 上執行,則必須將 MONITOR2 結構的 cbSize 成員設定為 winsplp.h) 中定義的MONITOR2_SIZE_WIN2K (,此結構適用於 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 上載入的監視器,下列程式代碼會適當地設定MONITOR2結構的 cbSize 成員。

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

規格需求

需求
標頭 winsplp.h (包含 Winsplp.h)

另請參閱

InitializePrintMonitor2

MONITORUI