WritePort 関数 (winsplp.h)

ポート モニターの WritePort 関数は、プリンター ポートにデータを書き込みます。

構文

BOOL WritePort(
  _In_  HANDLE  hPort,
  _In_  LPBYTE  pBuffer,
        DWORD   cbBuf,
  _Out_ LPDWORD pcbWritten
);

パラメーター

[in] hPort

呼び出し元が指定したポート ハンドル。

[in] pBuffer

ポートに書き込まれるデータを含むバッファーへの呼び出し元指定ポインター。

cbBuf

pBuffer の呼び出し元が指定したサイズ (バイト単位)。

[out] pcbWritten

ポートに正常に書き込まれたバイト数を受信する場所への呼び出し元指定ポインター。

戻り値

操作が成功した場合、関数は TRUE を返す必要があります。 それ以外の場合は FALSE を返す必要があります。

注釈

言語モニター とポート モニター サーバー DLL は、関数を定義 WritePort し、関数のアドレスを MONITOR2 構造に含めるために必要です。

関数の hPort 引数として受け取るハンドルは、モニターの OpenPort 関数または OpenPortEx 関数が指定したポート ハンドルです。

通常、言語モニターの WritePort 関数は、 pBuffer が指すバッファーに含まれるデータ ストリームに言語固有のコマンドを追加し、変更されたデータ ストリームをポート モニターの WritePort 関数に渡します。

ポート モニター サーバー DLL のWritePort関数は、通常、WriteFile を呼び出して (Microsoft Windows SDKのドキュメントに記載されています)、カーネル モードのポート ドライバーにデータ ストリームを送信します。

一般的な印刷ジョブは、 への WritePort複数の呼び出しで構成されます。 各呼び出しには、異なる cbBuf 値を指定できます。

関数は 、pcbWritten が指す位置に数値を配置することで、正常に書き込まれたバイト数を返す必要があります。 言語モニターの場合、この数値には、データ ストリームに追加された言語固有の余分なバイト数を含めてはなりません。

スプーラーは、返されたバイト数ではなく、 の戻り値をチェック WritePortして、書き込み操作の成功または失敗を判断します。 したがって、返されるバイト数が 0 の場合、関数が FALSE を返さない限り、失敗した書き込みを表すわけではありません。

ある種のシステム実装またはモニター実装のタイムアウト メカニズムでは、スプーラーの停止を回避するために、関数が妥当な時間内に返されるように WritePort する必要があります。

言語モニターは、StartDocPort/EndDocPort ペアの外部でポート モニターのWritePortルーチンを呼び出すことができます。 ただし、一部のポート モニターではこのような呼び出しが失敗する可能性があるため、このエラーを処理するには言語モニターを記述する必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header winsplp.h (Winsplp.h を含む)
Library NtosKrnl.exe

こちらもご覧ください

StartDocPort

OpenPortEx

OpenPort

MONITOR2

EndDocPort