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 を含む) |