IOCTL_STORAGE_QUERY_PROPERTY IOCTL (ntddstor.h)
ドライバーは、IOCTL_STORAGE_QUERY_PROPERTY を使用して、ストレージ デバイスまたはアダプターのプロパティを返すことができます。 要求は、取得する情報の種類 (デバイスの照会データ、アダプターの機能、制限など) を示します。 IOCTL_STORAGE_QUERY_PROPERTY を使用して、ポート ドライバーが特定のプロパティをサポートしているかどうか、または後続の change-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に設定されます。
必要条件
要件 | 価値 |
---|---|
ヘッダー | ntddstor.h (Ntddstor.h を含む) |