EVT_SERCX2_PIO_TRANSMIT_DRAIN_FIFO コールバック関数 (sercx.h)
EvtSerCx2PioTransmitDrainFifo イベント コールバック関数は、シリアル フレームワーク拡張機能 (SerCx2) のバージョン 2 によって呼び出され、シリアル コントローラー ハードウェアの送信 FIFO がドレインされます。
構文
EVT_SERCX2_PIO_TRANSMIT_DRAIN_FIFO EvtSercx2PioTransmitDrainFifo;
void EvtSercx2PioTransmitDrainFifo(
[in] SERCX2PIOTRANSMIT PioTransmit
)
{...}
パラメーター
[in] PioTransmit
PIO 送信オブジェクトへの SERCX2PIOTRANSMIT ハンドル。 シリアル コントローラー ドライバーは、以前にこのオブジェクトを作成するために、SerCx2PioTransmitCreate メソッドを呼び出しました。
戻り値
何一つ
備考
シリアル コントローラー ドライバーは、オプションとしてこの関数を実装できます。 ドライバーがこの関数を実装する場合は、EvtSerCx2PioTransmitCancelDrainFifo
SerCx2 は、EvtSerCx2PioTransmitDrainFifo 関数を呼び出し、実装されている場合は、PIO 送信トランザクションの終了時にシリアル コントローラー ハードウェアで送信 FIFO をドレインします。 この関数により、送信 FIFO に残っているデータ バイトが、シリアル接続された周辺機器に確実に送信されます。 FIFO から最後のバイトが送信された後、
シリアル コントローラー ドライバーが EvtSerCx2PioTransmitDrainFifo 関数
シリアル コントローラーに送信データを保持するハードウェア FIFO (または同様のバッファリング メカニズム) がある場合、ドライバーは EvtSerCx2PioTransmitDrainFifo 関数
たとえば、周辺機器ドライバーは、周辺機器が接続されているシリアル ポートに書き込み要求を送信することがあります。 未処理の書き込み要求がすべて完了するまで、このドライバーは IOCTL の送信を遅らせ、シリアル ポートがデータを送信するボー レートを変更する必要があります。 ただし、EvtSerCx2PioTransmitDrainFifo 関数
同様に、50 データ バイトがまだ送信 FIFO に残っている間に 100 バイトのデータを送信する書き込み要求が完了し、シリアル コントローラーが D0 を終了して、FIFO の残りのバイトを送信する前に低電力デバイスの状態に入った場合、周辺機器ドライバーはこれらのバイトが失われることを認識しません。
詳細については、「SerCx2 PIO-Transmit Transactions」を参照してください。
例
EvtSerCx2PioTransmitDrainFifo コールバック関数
たとえば、MyPioTransmitDrainFifo
という名前の EvtSerCx2PioTransmitDrainFifo コールバック関数を定義するには、次のコード例に示すように、EVT_SERCX2_PIO_TRANSMIT_DRAIN_FIFO 関数型を使用します。
EVT_SERCX2_PIO_TRANSMIT_DRAIN_FIFO MyPioTransmitDrainFifo;
次に、次のようにコールバック関数を実装します。
_Use_decl_annotations_
VOID
MyPioTransmitDrainFifo(
SERCX2PIOTRANSMIT PioTransmit
)
{...}
EVT_SERCX2_PIO_TRANSMIT_DRAIN_FIFO 関数の型は、Sercx.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations 注釈を使用すると、ヘッダー ファイル内の EVT_SERCX2_PIO_TRANSMIT_DRAIN_FIFO 関数型に適用される注釈が使用されます。 関数宣言の要件の詳細については、「KMDF ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。 Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8.1以降で使用できます。 |
ターゲット プラットフォーム の |
デスクトップ |
ヘッダー | sercx.h |
IRQL | IRQL <= DISPATCH_LEVEL で呼び出されます。 |
関連項目
EvtSerCx2PioTransmitCancelDrainFifo を
EvtSerCx2PioTransmitPurgeFifo の
SerCx2PioTransmitCreate を
SerCx2PioTransmitDrainFifoComplete を