IOCTL_STORAGE_QUERY_PROPERTY IOCTL (ntddstor.h)
ドライバーは、 IOCTL_STORAGE_QUERY_PROPERTY を使用して、ストレージ デバイスまたはアダプターのプロパティを返すことができます。 要求は、デバイスの照会データやアダプターの機能と制限など、取得する情報の種類を示します。 IOCTL_STORAGE_QUERY_PROPERTY を使用して、ポート ドライバーが特定のプロパティをサポートしているか、以降の変更プロパティ要求でプロパティ記述子のどのフィールドを変更できるかを判断することもできます。
メジャー コード
[入力バッファー]
Parameters.DeviceIoControl.InputBufferLength は、Irp-AssociatedIrp.SystemBuffer> のパラメーター バッファーのサイズ (バイト単位) を示します。これは、 = sizeof(STORAGE_PROPERTY_QUERY) である必要があります>。
Irp->AssociatedIrp.SystemBuffer には 、 デバイスとアダプターのどちらに対してクエリを実行するか、実行するクエリの種類、およびクエリに必要な追加パラメーター (特定の SCSI モード 検出ページのページ コードなど) を指定するSTORAGE_PROPERTY_QUERY データが含まれています。 デバイスのプロパティは、デバイスからのみ取得する必要があります。アダプターからデバイス プロパティを取得しようとすると、エラーが発生します。
Parameters.DeviceIoControl.OutputBufferLengthは、Irp-AssociatedIrp.SystemBuffer> に書き込むことができるバイト数を示します。 OutputBufferLength を 0 にして、データを取得せずにプロパティが存在するかどうかを判断できます。
入力バッファーの長さ
Parameters.DeviceIoControl.InputBufferLength は、Irp-AssociatedIrp.SystemBuffer> のパラメーター バッファーのサイズ (バイト単位) を示します。これは、 = sizeof(STORAGE_PROPERTY_QUERY) である必要があります>。
出力バッファー
ドライバーは、Irp-AssociatedIrp.SystemBuffer> のバッファーにクエリ データを返します。 さまざまな量のバス固有のデータを 構造体に追加できます。
出力バッファーの長さ
返された構造体をSTORAGE_DESCRIPTOR_HEADERにキャストし、その Size メンバーをチェックして、構造体が実際に必要とするバイト数を決定します。
ステータス ブロック
[情報] フィールドは、返されるバイト数に設定されます。 [状態] フィールドはSTATUS_SUCCESSに設定され、場合によってはSTATUS_INVALID_DEVICE_REQUEST、STATUS_INVALID_PARAMETER、またはSTATUS_NOT_SUPPORTEDに設定されます。
要件
要件 | 値 |
---|---|
Header | ntddstor.h (Ntddstor.h を含む) |