IRP_MJ_QUERY_VOLUME_INFORMATION (FS 和篩選驅動程式)
傳送時
I/O 管理員會傳送 IRP_MJ_QUERY_VOLUME_INFORMATION 要求。 例如,當使用者模式應用程式呼叫 Win32 函式,例如 GetDiskFreeSpace 或 GetFileType 時,可以傳送它。
作業:檔案系統驅動程式
文件系統驅動程式應該擷取和譯碼檔案物件,以判斷目標裝置物件是否為文件系統的控制裝置物件。 如果是,而且要求已在磁碟區開啟 (的句柄上發出,或磁碟區上的對象開啟) ,檔系統驅動程式應該處理要求並完成 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.Length 是 Irp-UserBuffer> 所指向之緩衝區的長度,以位元組為單位。 傳回時,此變數會接收寫入緩衝區的位元元組數目。
另請參閱
FILE_FS_DRIVER_PATH_INFORMATION