次の方法で共有


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
    );

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

EVT_SERCX_PURGE MyEvtSerCxPurge;

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

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

関数宣言の SDV 要件の詳細については、「 KMDF ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。

要件

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

こちらもご覧ください

EvtDriverDeviceAdd

IOCTL_SERIAL_PURGE

SerCxInitialize