SerCxGetRingBufferUtilization 関数 (sercx.h)

SerCxGetRingBufferUtilization メソッドを使用すると、シリアル コントローラー ドライバーは、シリアル ポートから受信したデータによって現在、先行入力リング バッファーの量を確認できます。

構文

VOID SerCxGetRingBufferUtilization(
  [in]            WDFDEVICE Device,
  [out, optional] PULONG    BytesUsed,
  [out, optional] PULONG    BufferSize
);

パラメーター

[in] Device

シリアル コントローラーを表すフレームワーク デバイス オブジェクトへの WDFDEVICE ハンドル。

[out, optional] BytesUsed

受信したデータの格納に使用される先行型リング バッファーに現在含まれている未読データのバイト数。

[out, optional] BufferSize

受信したデータの格納に使用される先行型リング バッファーのサイズ (バイト単位)。

戻り値

何一つ

備考

シリアル コントローラー ドライバーは、この関数を呼び出して、先行入力リング バッファーで使用可能な記憶域領域の量を決定します。 シリアル コントローラー拡張機能 (SerCx) は、クライアントからの読み取り要求が現在処理されていないときにシリアル コント ローラー ドライバーがシリアル ポートから受信するデータを格納するこのバッファーを保持します。 この関数は、ドライバーがソフトウェア フロー制御 (XON/XOFF) を正確に実行するために必要な情報を提供します。

ソフトウェア フロー制御を実装するために、シリアル コントローラー ドライバーは、先行入力リング バッファーで使用可能な領域の量を監視します。 使用可能な領域 (バイト単位) は、BufferSizeBytesUsedと同じです。 使用可能な領域がクライアント指定のしきい値を下回ると、XoffLimit、シリアル コントローラー ドライバーは XOFF 文字を送信して送信ポートに送信を一時停止するように指示します。 その後、使用可能な領域がクライアント指定のしきい値を超えると、XonLimit、ドライバーは XON 文字を送信して送信ポートに送信を再開するように指示します。 通常、クライアントは、前の IOCTL_SERIAL_SET_HANDFLOW I/O 制御要求でこれら 2 つのしきい値を指定しました。

SerCx は、現在のフロー制御とハンドシェイク設定のコンテキストで、先行入力リング バッファー内の使用可能な領域を評価します。 先行入力リング バッファーが完全に空になると、SerCx はドライバーの EvtSerCxReceive コールバック関数を呼び出して、ドライバーが XON を送信してデータの受信を再開できるようにします。 EvtSerCxReceive 関数は、SerCxGetRingBufferUtilization を呼び出して、XON を送信するかどうかを判断できます。

必要条件

要件 価値
サポートされる最小クライアント Windows 8 以降で使用できます。
ターゲット プラットフォーム の 万国
ヘッダー sercx.h
IRQL <= DISPATCH_LEVEL

関連項目

EvtSerCxReceive の

IOCTL_SERIAL_SET_HANDFLOW