IRP_MJ_QUERY_VOLUME_INFORMATION (FS およびフィルター ドライバー)
送信時
I/O マネージャーは、IRP_MJ_QUERY_VOLUME_INFORMATION リクエスト。 たとえば、ユーザーモード アプリケーションがGetDiskFreeSpace または GetFileType などの Win32 関数を呼び出したときに送信できます。
操作: ファイル システム ドライバー
ファイル システム ドライバーは、ファイル オブジェクトを抽出およびデコードして、ターゲット デバイス オブジェクトがファイル システムの制御デバイス オブジェクトであるかどうかを判断する必要があります。 そうであり、ボリューム オープン (またはボリューム上のオブジェクトのオープン) であるハンドルに対して要求が発行された場合、ファイル システム ドライバーは要求を処理し、IRP を完了する必要があります。
それ以外の場合、ファイル システム ドライバーはクエリに失敗し、IRP を完了する必要があります。
クエリできるボリューム情報の種類はファイル システムによって異なりますが、通常は次の値が含まれます。
- FileFsAttributeInformation
- FileFsDeviceInformation
- FileFsSizeInformation
- FileFsVolumeInformation
考えられるすべての情報タイプのリストについては、「IrpSp->Parameters.QueryVolume.FsInformationClass」を参照してください。
操作: ネットワーク リダイレクト ドライバー
FileFsDeviceInformation の要求を受信するネットワーク リダイレクターには、オプションの 1 つとして FILE_REMOTE_DEVICE を含める必要があります。DeviceCharacteristics の数FILE_FS_DEVICE_INFORMATION 構造体が返されました。
操作: レガシー ファイル システム フィルター ドライバー
フィルター ドライバーは、この IRP をスタック上の次に下位のドライバーに渡す必要があります。
パラメーター
ファイル システムまたはフィルター ドライバーは、指定された IRP で IoGetCurrentIrpStackLocation を呼び出して、IRP 内の独自のスタックの場所へのポインターを取得します。 次のパラメーターでは、Irp は IRP を指し、IrpSp は IO_STACK_LOCATION を指します。 ドライバーは、IRP の次のメンバーと IRP スタックの場所に設定されている情報を使用して、クエリ ボリューム情報要求を処理できます。
DeviceObject ターゲット デバイス オブジェクトへのポインターです。
Irp->AssociatedIrp.SystemBuffer ボリューム情報が返されるシステム提供の出力バッファーを指します。 この情報は、次のいずれかの構造に保存されます。
- FILE_FS_ATTRIBUTE_INFORMATION
- FILE_FS_CONTROL_INFORMATION
- FILE_FS_DEVICE_INFORMATION
- FILE_FS_DRIVER_PATH_INFORMATION
- FILE_FS_FULL_SIZE_INFORMATION
- FILE_FS_OBJECTID_INFORMATION
- FILE_FS_SIZE_INFORMATION
- FILE_FS_VOLUME_FLAGS_INFORMATION
- FILE_FS_VOLUME_INFORMATION
- FILE_FS_SECTOR_SIZE_INFORMATION
FileFsVolumeFlagsInformation クラスと関連する FILE_FS_VOLUME_INFORMATION 構造は Windows Vista 以降のバージョンで利用できます。
Irp->Ioステータス は、最終的な完了ステータスと要求された操作に関する情報を受け取る IO_STATUS_BLOCK構造体を指します。
Irp->UserBuffer は、I/O マネージャーによる I/O 完了時に Irp->AssociatedIrp.SystemBuffer の内容がコピーされる、呼び出し元が指定した出力バッファーへの省略可能なポインターです。 ドライバーは、リクエストのデータを返すためにこのバッファーを使用しません。
IrpSp->FileObject は、DeviceObject に関連付けられているファイル オブジェクトを指します。
IrpSp->FileObject パラメータには、RelatedFileObject フィールド。これも FILE_OBJECT 構造体です。 RelatedFileObjectFILE_OBJECT 構造体のフィールドは、処理中は無効です。IRP_MJ_QUERY_VOLUME_INFORMATION そして使用すべきではありません。
IrpSp->MajorFunction に設定されていますIRP_MJ_QUERY_VOLUME_INFORMATION.
IrpSp->Parameters.QueryVolume.FsInformationClass ファイルシステムによって返されるボリューム情報のタイプです。 このメンバーは、次の値の 1 つを指定できます。
Value | 意味 |
---|---|
FileFsAttributeInformation | ボリュームを担当するファイルシステムに関する属性情報を含む FILE_FS_ATTRIBUTE_INFORMATION 構造体を返します。 |
FileFsControlInformation | 戻る FILE_FS_CONTROL_INFORMATION ボリュームに関するファイル システム制御情報を含む構造。 |
FileFsDeviceInformation | 戻る FILE_FS_DEVICE_INFORMATION ボリュームのデバイス情報を含む構造。 |
FileFsDriverPathInformation | 戻るFILE_FS_DRIVER_PATH_INFORMATION 指定されたドライバーがボリュームの I/O パスにあるかどうかに関する情報を含む構造体。 IRP_MJ_QUERY_VOLUME_INFORMATION 要求の発信元は、ファイル システム ボリューム デバイス スタックに IRP を送信する前に、ドライバーの名前を FILE_FS_DRIVER_PATH_INFORMATION 構造体に格納する必要があります。 |
FileFsFullSizeInformation | 戻る FILE_FS_FULL_SIZE_INFORMATION ボリューム上で利用可能なスペースの合計量に関する情報を含む構造体。 |
FileFsObjectIdInformation | 戻る FILE_FS_OBJECTID_INFORMATION ボリュームのファイルシステム固有のオブジェクト ID 情報を含む構造。 このオブジェクト ID 情報は、オペレーティング システムが割り当てた (GUID ベースの) 一意のボリューム名と同じではありません。 |
FileFsSizeInformation | 戻る FILE_FS_SIZE_INFORMATION 実行元のスレッドに関連付けられたユーザーが使用できるボリューム上のスペースの量に関する情報を含む構造体。IRP_MJ_QUERY_VOLUME_INFORMATION リクエスト。 |
FileFsVolumeInformation | 戻る FILE_FS_VOLUME_INFORMATION これには、ボリューム ラベル、シリアル番号、作成時刻などのボリュームに関する情報が含まれます。 |
FileFsSectorSizeInformation | 戻るFILE_FS_SECTOR_SIZE_INFORMATIONボリュームの物理セクター サイズと論理セクター サイズに関する情報を含む構造。 |
- IrpSp->Parameters.QueryVolume.Length が指すバッファの長さ (バイト単位) です。Irp->UserBuffer 戻り時に、この変数はバッファに書き込まれたバイト数を受け取ります。
関連項目
FILE_FS_DRIVER_PATH_INFORMATION
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示