EVT_SERCX2_SET_WAIT_MASK コールバック関数 (sercx.h)
EvtSerCx2SetWaitMask イベント コールバック関数は、シリアル フレームワーク拡張機能 (SerCx2) のバージョン 2 によって呼び出され、待機マスクで指定されたハードウェア イベントのセットを監視するようにシリアル コントローラーを構成します。
構文
EVT_SERCX2_SET_WAIT_MASK EvtSercx2SetWaitMask;
void EvtSercx2SetWaitMask(
[in] WDFDEVICE Device,
[in] WDFREQUEST Request,
[in] ULONG WaitMask
)
{...}
パラメーター
[in] Device
シリアル コントローラーを表すフレームワーク デバイス オブジェクトへの WDFDEVICE ハンドル。 シリアル コントローラー ドライバーは、EvtDriverDeviceAdd コールバック関数でこのオブジェクトを作成しました。 詳細については、「SerCx2InitializeDevice」を参照してください。
[in] Request
IOCTL_SERIAL_SET_WAIT_MASK 要求を表すフレームワーク要求オブジェクトに対する WDFREQUEST ハンドル。
[in] WaitMask
新しい待機マスク。 詳細については、「解説」を参照してください。
戻り値
何一つ
備考
シリアル コントローラー ドライバーは、オプションとしてこの関数を実装できます。 実装されている場合、ドライバーは、シリアル コントローラーのフレームワーク デバイス オブジェクトの初期化を完了する SerCx2InitializeDevice メソッドの呼び出しで関数を登録します。
SerCx がクライアントから IOCTL_SERIAL_SET_WAIT_MASK 要求を受信すると、SerCx2 の要求ハンドラーは、EvtSerCx2SetWaitMask 関数を呼び出し、実装されている場合は、待機マスクが変更されたことをドライバーに通知します。 待機マスクが 0 以外の場合、ドライバーはすぐに新しい待機マスク内のイベントの監視を開始し、以前の EvtSerCx2SetWaitMask 呼び出しで指定された可能性がある古い待機マスクを破棄します。 新しい待機マスクが 0 の場合、ドライバーは単に古い待機マスクを破棄し、待機マスク イベントの監視を停止します。 待機マスクで指定できるイベントの種類の詳細については、SERIAL_EV_XXXを参照してください。
ドライバーがこの関数を実装していない場合、SerCx2 はエラー状態コードSTATUS_NOT_SUPPORTEDを持つすべての IOCTL_SERIAL_SET_WAIT_MASK 要求に失敗します。
待機マスク内のイベントを監視するために、EvtSerCx2SetWaitMask 関数は通常、これらのイベントの割り込みを有効にします。 その後、待機マスク内のイベントが検出されると、シリアル コントローラー ドライバーは、SerCx2CompleteWait メソッド
EvtSerCx2SetWaitMask 関数は、Request パラメーターによって指される IOCTL_SERIAL_SET_WAIT_MASK 要求を完了します。 シリアル コントローラー ドライバーは、必要な割り込みを有効にした後、WdfRequestComplete メソッドを呼び出し、入力パラメーターとして、Request パラメーター値と、要求が成功したかどうかを示す状態値を指定します。
シリアル コントローラー ドライバーは、要求を完了するために WdfRequestComplete
最初に、クライアントがシリアル ポートへの論理接続を開き、最初の EvtSerCx2SetWaitMask 呼び出しの前に待機マスクは実質的に 0 になり、シリアル コントローラー ドライバーは SERIAL_EV_XXX イベントを監視しません。
SerCx2 は、次の SERIAL_EV_XXX イベント フラグのいずれかを含む待機マスクを持つ IOCTL_SERIAL_SET_WAIT_MASK 要求に失敗します。
- SERIAL_EV_PERR
- SERIAL_EV_RING
- SERIAL_EV_RXFLAG
実装されている場合、EvtSerCx2SetWaitMask 関数は、次のイベント フラグをサポートする必要があります。
- SERIAL_EV_CTS
- SERIAL_EV_BREAK
- SERIAL_EV_ERR
例
EvtSerCx2SetWaitMask コールバック関数
たとえば、という名前の MySetWaitmask
コールバック関数を定義するには、次のコード例に示すように、EVT_SERCX2_SET_WAIT_MASK 関数型を使用します。
EVT_SERCX2_SET_WAIT_MASK MySetWaitmask;
次に、次のようにコールバック関数を実装します。
_Use_decl_annotations_
VOID
MySetWaitmask(
WDFDEVICE Device,
WDFREQUEST Request,
ULONG WaitMask
)
{...}
EVT_SERCX2_SET_WAIT_MASK 関数型は、Sercx.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations 注釈により、ヘッダー ファイル内の EVT_SERCX2_SET_WAIT_MASK 関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「KMDF ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。 Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8.1以降で使用できます。 |
ターゲット プラットフォーム の |
デスクトップ |
ヘッダー | sercx.h |
IRQL | IRQL <= DISPATCH_LEVEL で呼び出されます。 |
関連項目
EvtDriverDeviceAdd の
SerCx2CompleteWait を
SerCx2InitializeDevice の