次の方法で共有


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

印刷モニターの Shutdown 関数へのポインター。

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 で実行されている場合は、この構造体の Windows 2000 バージョンに適したサイズをMONITOR2_SIZE_WIN2K (Winsplp.h で定義) MONITOR2構造体の cbSize メンバーを設定する必要があります。

次の関数は、現在のオペレーティング システムのバージョンが 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;

要件

要件
Header winsplp.h (Winsplp.h を含む)

こちらもご覧ください

InitializePrintMonitor2

MONITORUI