IRP_MJ_QUERY_VOLUME_INFORMATION (FS 和篩選驅動程式)

傳送時

I/O 管理員會傳送 IRP_MJ_QUERY_VOLUME_INFORMATION 要求。 例如,當使用者模式應用程式呼叫 Win32 函式,例如 GetDiskFreeSpaceGetFileType 時,可以傳送它。

作業:檔案系統驅動程式

文件系統驅動程式應該擷取和譯碼檔案物件,以判斷目標裝置物件是否為文件系統的控制裝置物件。 如果是,而且要求已在磁碟區開啟 (的句柄上發出,或磁碟區上的對象開啟) ,檔系統驅動程式應該處理要求並完成 IRP。

否則,檔案系統驅動程式應該會失敗查詢並完成 IRP。

可查詢的磁碟區資訊類型與文件系統相依,但通常包含下列值:

  • FileFsAttributeInformation
  • FileFsDeviceInformation
  • FileFsSizeInformation
  • FileFsVolumeInformation

如需所有可能資訊類型的清單,請參閱 IrpSp-Parameters.QueryVolume.FsInformationClass>

作業:網路重新導向驅動程式

接收 FileFsDeviceInformation 要求的網路重新導向器,必須包含 FILE_REMOTE_DEVICE 做為傳回之 FILE_FS_DEVICE_INFORMATION 結構之 DeviceCharacteristics 成員的其中一個選項。

作業:舊版文件系統篩選驅動程式

篩選驅動程式應該會將此 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->IoStatus 指向 IO_STATUS_BLOCK結構, 該結構會接收最終完成狀態和所要求作業的相關信息。

  • Irp->UserBuffer 是呼叫端提供的輸出緩衝區選擇性指標,I/O 管理員會在 I/O 完成期間複製 Irp-AssociatedIrp.SystemBuffer> 的內容。 驅動程式不會使用此緩衝區傳回要求的任何數據。

  • IrpSp->FileObject 指向與 DeviceObject 相關聯的檔案物件。

    IrpSp-FileObject> 參數包含 RelatedFileObject 字段的指標,這也是FILE_OBJECT結構。 FILE_OBJECT 結構的 RelatedFileObject 字段在處理 IRP_MJ_QUERY_VOLUME_INFORMATION 期間無效,不應使用。

  • IrpSp->MajorFunction 設定為 IRP_MJ_QUERY_VOLUME_INFORMATION

  • IrpSp->Parameters.QueryVolume.FsInformationClass 是文件系統所要傳回的磁碟區資訊類型。 這個成員可以是下列其中一個值。

意義
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要求的起始者必須將驅動程式的名稱儲存到FILE_FS_DRIVER_PATH_INFORMATION結構中,才能將 IRP 傳送至文件系統磁碟區裝置堆疊。
FileFsFullSizeInformation 傳回 FILE_FS_FULL_SIZE_INFORMATION 結構,其中包含磁碟區可用空間總數的相關信息。
FileFsObjectIdInformation 傳回 包含 磁碟區檔系統特定物件標識碼資訊的FILE_FS_OBJECTID_INFORMATION結構。 此物件識別碼資訊與操作系統指派的唯一磁碟區名稱 (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.LengthIrp-UserBuffer> 所指向之緩衝區的長度,以位元組為單位。 傳回時,此變數會接收寫入緩衝區的位元元組數目。

另請參閱

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_SECTOR_SIZE_INFORMATION

FILE_FS_SIZE_INFORMATION

FILE_FS_VOLUME_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile