次の方法で共有


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

EvtSerCxWaitmask イベント コールバック関数は、待機マスク内のイベントを監視するようにシリアル コントローラーを構成します。これは、ハードウェア イベントのセットを指定するビットマスク値です。

構文

EVT_SERCX_WAITMASK EvtSercxWaitmask;

NTSTATUS EvtSercxWaitmask(
  [in] WDFDEVICE Device
)
{...}

パラメーター

[in] Device

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

戻り値

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

注釈

シリアル コントローラー ドライバーは、このコールバック関数を実装します。 シリアル フレームワーク拡張機能 (SerCx) は、待機マスクが変更されたときにドライバーに通知するには、この関数を呼び出します。 この呼び出し中に、 EvtSerCxWaitmask 関数は SerCxGetWaitMask メソッドを呼び出して新しい待機マスクを取得します。 ドライバーは、新しい待機マスク内のイベントの監視をすぐに開始し、以前 の EvtSerCxWaitmask 呼び出しで指定された可能性がある古い待機マスクを破棄します。 新しい待機マスクが 0 の場合、ドライバーは単に古い待機マスクを破棄し、待機マスク イベントの監視を停止します。

SerCx がクライアントから IOCTL_SERIAL_SET_WAIT_MASK 要求を受信すると、SerCx の要求ハンドラーは EvtSerCxWaitmask 関数を呼び出して新しい待機マスクを設定します。 待機マスクで指定できるイベントの種類の詳細については、「 SERIAL_EV_XXX」を参照してください。

EvtSerCxWaitmask 関数は、新しい待機マスク内のイベントを監視するようにシリアル コントローラー ハードウェアを構成します。 通常、 関数は、これらのイベントの割り込みを有効にします。 ハードウェアを構成した後、待機マスク内のイベントが発生するのを待たずに、関数は直ちに戻る必要があります。

その後、待機マスク内のイベントによって割り込みが発生すると、シリアル コントローラー ドライバーの ISR によって DPC 関数の実行がスケジュールされます。 この DPC 関数は 、SerCxCompleteWait メソッドを呼び出して、SerCx にイベントを通知します。

最初に、クライアントがシリアル ポートへの接続を開いた後、最初 の EvtSerCxWaitmask 呼び出しの前に待機マスクは実質的にゼロになり、シリアル コントローラー ドライバーは SERIAL_EV_XXX イベントを監視していません。

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

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

typedef NTSTATUS
  EVT_SERCX_WAITMASK(
    __in WDFDEVICE Device
    );

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

EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;

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

NTSTATUS
  MyEvtSerCxWaitmask(
    __in WDFDEVICE Device
    )
{ ... }

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

要件

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

こちらもご覧ください

EvtDriverDeviceAdd

IOCTL_SERIAL_SET_WAIT_MASK

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_EV_XXX

SerCxGetWaitMask

SerCxInitialize