次の方法で共有


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

EvtSerCxPurge イベント コールバック関数は、シリアル コントローラーのハードウェア バッファーを消去するためにシリアル フレームワーク拡張機能 (SerCx) によって呼び出されます。

構文

EVT_SERCX_PURGE EvtSercxPurge;

NTSTATUS EvtSercxPurge(
  [in] WDFDEVICE Device,
  [in] ULONG PurgeMask
)
{...}

パラメーター

[in] Device

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

[in] PurgeMask

消去するハードウェア バッファーを記述するフラグのセット。 現在、シリアル コントローラーによって実行される消去操作にフラグは定義されていません。 詳細については、「解説」を参照してください。

戻り値

EvtSerCxPurge 関数は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合は、適切なエラー状態コードが返されます。

備考

シリアル コントローラー ドライバーは、このコールバック関数を実装します。 SerCx は、クライアント (アプリケーションまたは周辺機器ドライバー) がシリアル コントローラーによって管理されているハードウェア バッファーを消去する必要がある IOCTL_SERIAL_PURGE コントロール要求を送信するときに、この関数を呼び出します。

SerCx は、次の表に示すフラグによって指定される消去操作を実行します。

フラグ ビット 意味
SERIAL_PURGE_RXABORT すべての読み取り要求を消去します。
SERIAL_PURGE_RXCLEAR 入力バッファーが存在する場合は消去します。 このバッファー内のすべての受信データは破棄されます。
SERIAL_PURGE_TXABORT すべての書き込み要求を消去します。
SERIAL_PURGE_TXCLEAR 出力バッファーが存在する場合は、そのバッファーを消去します。 このバッファー内のすべての送信データは破棄されます。
 

EvtSerCxPurge 関数は、このテーブルのフラグを含む消去要求を受け取ることはありません。 SERIAL_PURGE_XXX フラグは、Ntddser.h ヘッダー ファイルで定義されています。

現在、シリアル コントローラー ドライバーによって実行される消去操作を指定するSERIAL_PURGE_XXX フラグは定義されていません。シリアル コントローラー ドライバーは、EvtSerCxPurge 呼び出しに応答して消去操作を実行する必要はありません。

IOCTL_SERIAL_PURGE 制御要求で保留中の読み取りまたは書き込み要求を取り消す必要がある場合、SerCx は、EvtSerCxPurge 関数を呼び出す前に、これらの要求を取り消します。

EvtSerCxPurge コールバック関数を登録するために、コントローラー ドライバーは、EvtDriverDeviceAdd コールバック中に SerCxInitialize メソッドを呼び出します。

このコールバックの関数型は、次のように Sercx.h で宣言されています。

typedef NTSTATUS
  EVT_SERCX_PURGE(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    );

という名前の EvtSerCxPurge コールバック関数を定義するには、まず、静的ドライバー検証ツール (SDV) およびその他の検証ツール 必要な関数宣言を次のように指定する必要があります。

EVT_SERCX_PURGE MyEvtSerCxPurge;

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

NTSTATUS
  MyEvtSerCxPurge(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    )
{ ... }

関数宣言の SDV 要件の詳細については、「宣言する関数を宣言する KMDF ドライバーのの関数の役割の種類を参照してください。

必要条件

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

関連項目

EvtDriverDeviceAdd の

IOCTL_SERIAL_PURGE

SerCxInitialize