共用方式為


MRxQueryVolumeInfo 例程

RDBSS 會呼叫 MRxQueryVolumeInfo 例程,以要求網路迷你重新導向器查詢磁碟區資訊。

語法

PMRX_CALLDOWN MRxQueryVolumeInfo;

NTSTATUS MRxQueryVolumeInfo(
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

參數

RxContext [in, out]
RX_CONTEXT 結構的指標。 此參數包含要求作業的 IRP。

傳回值

MRxQueryVolumeInfo 會在成功或適當的 NTSTATUS 值時傳回STATUS_SUCCESS,例如下列其中一項:

傳回碼 Description
STATUS_ACCESS_DENIED

呼叫端缺少此作業的適當安全性。

STATUS_BUFFER_OVERFLOW

接收磁碟區信息的緩衝區太小。

這個傳回值應該視為成功,而且應該在 RxContext 參數所指向之RX_CONTEXT結構的 Info.Buffer 成員中傳回盡可能有效的數據。

STATUS_BUFFER_TOO_SMALL

緩衝區太小,無法接收要求的數據。

如果傳回這個值,則 RxContext 參數所指向之RX_CONTEXT結構的 InformationToReturn 成員應該設定為預期緩衝區的大小下限,讓呼叫成功。

STATUS_CONNECTION_DISCONNECTED

線上已中斷連線。

STATUS_INSUFFICIENT_RESOURCES

資源不足,無法完成查詢。

STATUS_INVALID_PARAMETER

指定了無效的參數。

STATUS_NETWORK_NAME_DELETED

已刪除網路名稱。

STATUS_NOT_IMPLEMENTED

未實作所要求的功能。

備註

RDBSS 會在下列任一情況下發出 MRxQueryVolumeInfo 的呼叫:

在IRP_MJ_QUERY_VOLUME_INFORMATION要求的情況下呼叫 MRxQueryVolumeInfo 之前,RDBSS 會修改 RxContext 參數所指向RX_CONTEXT結構中的下列成員:

Info.FsInformationClass 成員設定為 IrpSp-Parameters.QueryVolume.FsInformationClass>

Info.Buffer 成員會設定為 Irp-AssociatedIrp.SystemBuffer>

Info.LengthRemaining 成員會設定為 IrpSp-Parameters.QueryVolume.Length>

對於IRP_MJ_QUERY_VOLUME_INFORMATION要求,如果從 MRxQueryVolumeInfo 傳回RX_CONTEXT結構的 PostRequest 成員為 TRUE,RDBSS 會呼叫 RxFsdPostRequest 來張貼要求。 在此情況下,IRP_MJ_QUERY_VOLUME_INFORMATION要求會將RX_CONTEXT結構傳遞至佇列RX_CONTEXT至背景工作佇列,以供文件系統進程 (FSP) 進行處理。

如果從 MRxQueryVolumeInfo 傳回RX_CONTEXT結構的 PostRequest 成員為 FALSE,則網路迷你重新導向器必須將RX_CONTEXT結構的 Info.LengthRemaining 成員設定為傳回的磁碟區資訊長度。 RDBSS 會將 IRP 的 IoStatus.Information 成員設定為 IrpSp-Parameters.QueryVolume.Length> 減去RX_CONTEXT結構的 Info.LengthRemaining 成員。

如果 MRxQueryVolumeInfo 的呼叫成功,網路迷你重新導向器應該將RX_CONTEXT結構的 Info.LengthRemaining 成員設定為 Info.Length 成員減去傳回之磁碟區資訊的長度。 如果呼叫 MRxQueryVolumeInfo 成功,RDBSS 會將 IRP 的 IoStatus.Information 成員設定為 IrpSp-Parameters.QueryVolume.Length> 減去 RX_CONTEXT 結構的 Info.LengthRemaining 成員。

針對設定為 FileFsDeviceInformation之 Info.FsInformationClass 成員的IRP_MJ_QUERY_VOLUME_INFORMATION要求,網路迷你重新導向器會在 RxContext 參數所指向的RX_CONTEXT結構中傳回下列資訊:

Info.Buffer 成員包含FILE_FS_DEVICE_INFORMATION結構

Info.Buffer.Characteristics 成員會設定為磁碟區的特性,其中必須包含FILE_REMOTE_DEVICE做為其中一個選項。

Info.Buffer.DeviceType 成員會設定為相關聯NET_ROOT結構的 DeviceType 成員。 如果相關聯NET_ROOT的 Type 成員 NET_ROOT_PIPE,Info.Buffer.DeviceType 成員會設定為 FILE_DEVICE_NAMED_PIPE。

針對設定為 FileFsVolumeInformation之 Info.FsInformationClass 成員的IRP_MJ_QUERY_VOLUME_INFORMATION要求,網路迷你重新導向器會在 RxContext 參數所指向的RX_CONTEXT結構中傳回下列資訊:

Info.Buffer 成員包含FILE_FS_VOLUME_INFORMATION結構。

Info.Buffer 成員會設定為相關聯NET_ROOT結構的 VolumeInfo 成員。

Info.LengthRemaining 成員會設定為相關聯NET_ROOT結構的 VolumeInfoLength 成員。

來自 RDBSS for IRP_MJ_FILE_SYSTEM_CONTROL的 MRxQueryVolumeInfo 呼叫是連結追蹤資訊的要求。 在呼叫 MRxQueryVolumeInfo 進行IRP_MJ_FILE_SYSTEM_CONTROL之前,RDBSS 會修改 RxContext 參數所指向RX_CONTEXT結構中的下列成員:

Info.FsInformationClass 成員會設定為 FileFsObjectIdInformation

Info.Buffer 成員會設定為FILE_FS_OBJECTID_INFORMATION結構。

Info.LengthRemaining 成員會設定為 sizeof (FILE_FS_OBJECTID_INFORMATION) 。

在此情況下,IRP_MJ_FILE_SYSTEM_CONTROL要求,IRP 的 AssociatedIrp.SystemBuffer 成員會指向LINK_TRACKING_INFORMATION結構。

如果將要求起始為 MRxQueryVolumeInfo 的IRP_MJ_FILE_SYSTEM_CONTROL,且傳回值為 STATUS_SUCCESS 或 STATUS_BUFFER_OVERFLOW,RDBSS 會將RX_CONTEXT 結構 Info.Buffer 成員中傳遞的 ObjectId FILE_FS_OBJECTID_INFORMATION 成員複製到 IRP 的 NetRoot-DiskParameters.VolumeId> 成員,以及 IRP 的 AssociatedIrp.SystemBuffer.VolumeId 成員。 如果 呼叫 MRxQueryVolumeInfo 成功,RDBSS 會設定LINK_TRACKING_INFORMATION結構的 Type 成員。 如果 FCB 結構的 NetRoot-Flags> 成員已設定NETROOT_FLAG_DFS_AWARE_NETROOT位,則 Type 成員是由 RDBSS 設定為 DfsLinkTrackingInformation。 如果 FCB 結構的 NetRoot-Flags> 成員沒有設定NETROOT_FLAG_DFS_AWARE_NETROOT位,則 Type 成員是由 RDBSS 設定為 NtfsLinkTrackingInformation。 成功時,RDBSS 會將 IRP 的 IoStatus.Information 成員設定為LINK_TRACKING_INFORMATION結構的大小。

規格需求

目標平台

桌面

標頭

Mrx.h (包含 Mrx.h)

另請參閱

MRxIsValidDirectory

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxSetEaInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetQuotaInfo

MRxSetSdInfo

MRxSetVolumeInfo

RxFsdPostRequest