次の方法で共有


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 呼び出しの前に待機マスクは実質的に 0 になり、シリアル コントローラー ドライバーは XXX イベント SERIAL_EV_監視していません。

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

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

typedef NTSTATUS
  EVT_SERCX_WAITMASK(
    __in WDFDEVICE Device
    );

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

EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;

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

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

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

必要条件

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

関連項目

EvtDriverDeviceAdd の

IOCTL_SERIAL_SET_WAIT_MASK

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_EV_XXX

SerCxGetWaitMask の

SerCxInitialize