次の方法で共有


IOCTL_SERIAL_WAIT_ON_MASK IOCTL (ntddser.h)

IOCTL_SERIAL_WAIT_ON_MASK 要求は、IOCTL_SERIAL_SET_WAIT_MASK 要求を使用して指定された待機イベントの発生を待機するために使用されます。

マスク待機要求は、次のいずれかのイベントが発生した後に完了します。

  • 最新の set-wait-mask 要求によって指定された待機イベントが発生します。
  • マスク待機要求が保留中の間、IOCTL_SERIAL_SET_WAIT_MASK 要求が受信されます。 ドライバーは、STATUS_SUCCESSの状態で保留中の待機マスク要求を完了し、出力待機マスクが 0 に設定されます。
クライアントは、SERIAL_EV_EVENT2を介して SERIAL_EV_RXCHAR フラグ ビットによって表される待機イベントを待機できます。 これらのイベント フラグの詳細については、SERIAL_EV_XXXを参照してください。

クライアントは、IOCTL_SERIAL_WAIT_ON_MASK 要求を送信して、最新の IOCTL_SERIAL_SET_WAIT_MASK 要求によって提供された待機マスクで指定されたイベントが発生するのを待機します。 IOCTL_SERIAL_WAIT_ON_MASK 要求が送信される前に、現在の待機マスク内の 1 つ以上のイベントが発生した場合、この要求は、STATUS_SUCCESSの状態とイベントを識別する出力マスク値を使用して直ちに完了します。 IOCTL_SERIAL_WAIT_ON_MASK 要求が送信される前に待機マスク内のイベントが発生しなかった場合、この要求は保留中としてマークされ、現在の待機マスク内のイベントが次に発生するまでシリアル コントローラー キューで待機します。

クライアントの IOCTL_SERIAL_WAIT_ON_MASK 要求が完了し、状態が STATUS_SUCCESS で、出力マスク値が 0 以外の場合、クライアントは新しい IOCTL_SERIAL_WAIT_ON_MASK 要求を送信して、現在の待機マスク内の別のイベントを待機できます。 前の IOCTL_SERIAL_WAIT_ON_MASK 要求が完了した後に発生した新しいイベントのみが、STATUS_SUCCESSの状態と 0 以外の出力マスク値で新しい IOCTL_SERIAL_WAIT_ON_MASK 要求が完了します。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

何一つ。

入力バッファーの長さ

何一つ。

出力バッファー

AssociatedIrp.System バッファーは、イベント待機マスクを保持する ULONG バッファーを指します。 イベント待機マスクは、発生した待機イベントを示します。 イベント待機マスクは、0 または 1 つ以上の SERIAL_EV_XXX フラグ ビットのビットごとの OR に設定されます。

出力バッファーの長さ

Parameters.DeviceIoControl.OutputBufferLength メンバーは、ULONG のサイズ (バイト単位) に設定されます。

状態ブロック

Information メンバーは、ULONG のサイズ (バイト単位) に設定されます。

Status メンバーは、シリアル デバイス制御要求 汎用ステータス値のいずれかに設定されます。 STATUS_INVALID_PARAMETERの状態は、待機イベントが設定されていないこと、または待機オンマスク要求が既に保留中であることを示します。

必要条件

要件 価値
ヘッダー ntddser.h (Ntddser.h を含む)

関連項目

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX