次の方法で共有


EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO コールバック関数 (sercx.h)

EvtSerCx2PioTransmitCancelDrainFifo イベント コールバック関数は、シリアル フレームワーク拡張機能 (SerCx2) のバージョン 2 によって呼び出され、シリアル コントローラー ハードウェアで送信 FIFO をドレインする以前の要求を取り消します。

構文

EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO EvtSercx2PioTransmitCancelDrainFifo;

BOOLEAN EvtSercx2PioTransmitCancelDrainFifo(
  [in] SERCX2PIOTRANSMIT PioTransmit
)
{...}

パラメーター

[in] PioTransmit

PIO 送信オブジェクトへの SERCX2PIOTRANSMIT ハンドル。 シリアル コントローラー ドライバーは、以前にこのオブジェクトを作成するために、SerCx2PioTransmitCreate メソッドを呼び出しました。

戻り値

EvtSerCx2PioTransmitCancelDrainFifo 関数は、保留中のドレイン要求を正常に取り消した場合、TRUE を返します。シリアル コントローラー ドライバーは、SerCx2PioTransmitDrainFifoComplete メソッドを呼び出して、FIFO がドレインされたことを SerCx2 に通知しないことを保証できます。 それ以外の場合、この関数は、ドライバーが既 に呼び出されているか、SerCx2PioTransmitDrainFifoComplete呼び出ししようとしていることを示す FALSE を返します。

備考

シリアル コントローラー ドライバーは、オプションとしてこの関数を実装できます。 実装されている場合、ドライバーは、PIO 送信オブジェクトを作成する SerCx2PioTransmitCreate 呼び出しで関数を登録します。

シリアル コントローラーに送信データを保持するハードウェア FIFO (または同様のバッファリング メカニズム) がある場合、ドライバーは EvtSerCx2PioTransmitCancelDrainFifo 関数を実装する必要があります。 ドライバーがこの関数を実装する場合は、EvtSerCx2PioTransmitDrainFifo を実装し、EvtSerCx2PioTransmitPurgeFifo イベント コールバック関数を する必要もあります。

SerCx2 は、EvtSerCx2PioTransmitDrainFifo イベント コールバック関数を呼び出して、シリアル コントローラー ドライバーに送信 FIFO のドレインを要求した後、シリアル コントローラー ドライバーが SerCx2PioTransmitDrainFifoComplete呼び出すのを待ちます。 ドレイン操作の完了には、無期限の時間がかかる場合があります。 したがって、書き込み要求がタイムアウトになった場合、またはドレイン操作の進行中に取り消された場合、SerCx2 は EvtSerCx2PioTransmitCancelDrainFifo 関数を呼び出して、完了前に保留中のドレイン操作を取り消します。

詳細については、「SerCx2 PIO-Transmit Transactions」を参照してください。

EvtSerCx2PioTransmitCancelDrainFifo コールバック関数 を定義するには、まず、定義するコールバック関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーのコールバック関数の種類のセットが用意されています。 コールバック関数の種類を使用して関数を宣言すると、ドライバーのコード分析、静的ドライバー検証ツール (SDV)、およびその他の検証ツールを すると、エラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。

たとえば、という名前の MyPioTransmitCancelDrainFifo コールバック関数を定義するには、次のコード例に示すように、EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO 関数型を使用します。

EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO  MyPioTransmitCancelDrainFifo;

次に、次のようにコールバック関数を実装します。

_Use_decl_annotations_
BOOLEAN
  MyPioTransmitCancelDrainFifo(
    SERCX2PIOTRANSMIT  PioTransmit
    )
  {...}

EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO 関数の種類は、Sercx.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations 注釈により、ヘッダー ファイル内の EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO 関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「KMDF ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。 Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。

必要条件

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

関連項目

EvtSerCx2PioTransmitDrainFifo の

EvtSerCx2PioTransmitPurgeFifo の

IOCTL_SERIAL_PURGE

IRP_MJ_WRITE

SERCX2PIOTRANSMIT

SerCx2PioTransmitCreate を する

SerCx2PioTransmitDrainFifoComplete を する