IOCTL_SERIAL_PURGE IOCTL (ntddser.h)
IOCTL_SERIAL_PURGE要求は、指定した要求を取り消し、指定したバッファーからデータを削除します。 消去要求を使用すると、すべての読み取り要求と書き込み要求を取り消し、受信バッファーと送信バッファーからすべてのデータを削除できます。
消去要求の完了は、消去要求によって取り消された要求が完了したことを示すものではありません。 クライアントは、クライアントが対応する IRP を解放または再利用する前に、消去された要求が完了したことを確認する必要があります。
メジャー コード
[入力バッファー]
AssociatedIrp.SystemBuffer メンバーは、消去マスクの入力に使用されるクライアント割り当て ULONG を指します。 クライアントは、消去マスクを、次の消去フラグの 1 つ以上のビットごとの OR に設定します。
SERIAL_PURGE_RXABORT
-
すべての読み取り (IRP_MJ_READ) 要求を消去します。
SERIAL_PURGE_RXCLEAR
-
受信バッファーが存在する場合は、そのバッファーを消去します。
SERIAL_PURGE_TXABORT
-
すべての書き込み (IRP_MJ_WRITE) 要求を消去します。
SERIAL_PURGE_TXCLEAR
-
送信バッファーが存在する場合は、そのバッファーを消去します。
入力バッファーの長さ
Parameters.DeviceIoControl.InputBufferLength メンバーは、ULONG のサイズ (バイト単位) に設定されます。
出力バッファー
[なし] :
出力バッファーの長さ
[なし] :
ステータス ブロック
要求が成功した場合、 Information メンバーは ULONG のサイズ (バイト単位) に設定されます。 それ以外の場合、 Information メンバーは 0 に設定されます。
Status メンバーは、シリアル デバイス制御要求の汎用状態値のいずれかに設定されます。 STATUS_INVALID_PARAMETERの状態は、消去マスクが無効であることを示します。
注釈
Serial.sys と SerCx を使用すると、 IOCTL_SERIAL_PURGE 要求で 1 つ以上のSERIAL_PURGE_XXX フラグの任意の組み合わせを指定できます。 ただし、SerCx2 の方が制限が厳しくなっています。
SerCx2 では、受信バッファーが消去された場合は、すべての読み取り要求を消去する必要があります。 したがって、SERIAL_PURGE_RXCLEAR フラグが IOCTL_SERIAL_PURGE 要求で設定されている場合は、SerCx2 I/O 要求キューに読み取り要求を含めないようにするか、SERIAL_PURGE_RXABORT フラグを設定する必要があります。 それ以外の場合、 IOCTL_SERIAL_PURGE要求は STATUS_INVALID_DEVICE_STATE状態コードで失敗します。
同様に、SerCx2 では、送信バッファーが消去された場合は、すべての書き込み要求を消去する必要があります。 したがって、SERIAL_PURGE_TXCLEAR フラグが IOCTL_SERIAL_PURGE 要求で設定されている場合は、SerCx2 I/O 要求キューに書き込み要求が含まれていないか、SERIAL_PURGE_TXABORT フラグを設定する必要があります。 それ以外の場合、 IOCTL_SERIAL_PURGE要求は STATUS_INVALID_DEVICE_STATE状態コードで失敗します。
SerCx2、SerCx、および Serial.sys の詳細については、「 シリアル コントローラー ドライバーの概要」を参照してください。
要件
要件 | 値 |
---|---|
Header | ntddser.h (Ntddser.h を含む) |