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
);
という名前MyEvtSerCxWaitmask
の EvtSerCxWaitmask コールバック関数を定義するには、まず、静的ドライバー検証ツール (SDV) やその他の検証ツールで必要な関数宣言を次のように指定する必要があります。
EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;
次に、次のようにコールバック関数を実装します。
NTSTATUS
MyEvtSerCxWaitmask(
__in WDFDEVICE Device
)
{ ... }
関数宣言の SDV 要件の詳細については、「 KMDF ドライバーの関数ロール型を使用した関数の宣言」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 以降で使用できます。 |
対象プラットフォーム | デスクトップ |
Header | sercx.h |
IRQL | IRQL <= DISPATCH_LEVEL で呼び出されます |