Routine MRxQueryVolumeInfo
La routine MRxQueryVolumeInfo viene chiamata da RDBSS per richiedere che un mini-reindirizzamento di rete esegua le informazioni sul volume di query.
Sintassi
PMRX_CALLDOWN MRxQueryVolumeInfo;
NTSTATUS MRxQueryVolumeInfo(
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
Parametri
RxContext [in, out]
Puntatore alla struttura RX_CONTEXT. Questo parametro contiene l'IRP che richiede l'operazione.
Valore restituito
MRxQueryVolumeInfo restituisce STATUS_SUCCESS in caso di esito positivo o di un valore NTSTATUS appropriato, ad esempio uno dei seguenti:
Codice restituito | Descrizione |
---|---|
STATUS_ACCESS_DENIED | Il chiamante non ha la sicurezza appropriata per questa operazione. |
STATUS_BUFFER_OVERFLOW | Il buffer per ricevere le informazioni sul volume era troppo piccolo. Questo valore restituito deve essere considerato riuscito e deve essere restituito il maggior numero possibile di dati validi nel membro Info.Buffer della struttura RX_CONTEXT a cui punta il parametro RxContext . |
STATUS_BUFFER_TOO_SMALL | Il buffer è troppo piccolo per ricevere i dati richiesti. Se questo valore viene restituito, il membro InformationToReturn della struttura RX_CONTEXT a cui punta il parametro RxContext deve essere impostato sulla dimensione minima del buffer previsto affinché la chiamata abbia esito positivo. |
STATUS_CONNECTION_DISCONNECTED | La connessione è stata disconnessa. |
STATUS_INSUFFICIENT_RESOURCES | Risorse insufficienti per completare la query. |
STATUS_INVALID_PARAMETER | È stato specificato un parametro non valido. |
STATUS_NETWORK_NAME_DELETED | È stato eliminato un nome di rete. |
STATUS_NOT_IMPLEMENTED | Una funzionalità richiesta non viene implementata. |
Commenti
RDBSS invia una chiamata a MRxQueryVolumeInfo in uno dei casi seguenti:
RDBSS riceve una richiesta di IRP_MJ_QUERY_VOLUME_INFORMATION .
RDBSS riceve una richiesta di IRP_MJ_FILE_SYSTEM_CONTROL per un codice di controllo FSCTL_LMR_GET_LINK_TRACKING_INFORMATION.
Prima di chiamare MRxQueryVolumeInfo nel caso di una richiesta di IRP_MJ_QUERY_VOLUME_INFORMATION, RDBSS modifica i membri seguenti nella struttura RX_CONTEXT a cui punta il parametro RxContext :
Il membro Info.FsInformationClass è impostato su IrpSp-Parameters.QueryVolume.FsInformationClass>.
Il membro Info.Buffer è impostato su Irp-AssociatedIrp.SystemBuffer>.
Il membro Info.LengthRemaining è impostato su IrpSp-Parameters.QueryVolume.Length>.
Per una richiesta di IRP_MJ_QUERY_VOLUME_INFORMATION, se il membro PostRequest della struttura RX_CONTEXT è TRUE al ritorno da MRxQueryVolumeInfo, RDBSS chiamerà RxFsdPostRequest per inviare la richiesta. In questo caso, la richiesta di IRP_MJ_QUERY_VOLUME_INFORMATION passerà la struttura RX_CONTEXT alla coda RX_CONTEXT a una coda di lavoro per l'elaborazione da parte del processo di file system (FSP).
Se il membro PostRequest della struttura RX_CONTEXT è FALSE quando viene restituito da MRxQueryVolumeInfo, il mini-redirector di rete deve impostare il membro Info.LengthRemaining della struttura RX_CONTEXT sulla lunghezza delle informazioni sul volume restituite. RDBSS imposta il membro IoStatus.Information di IRP su IrpSp-Parameters.QueryVolume.Length> meno il membro Info.LengthRemaining della struttura RX_CONTEXT.
Se la chiamata a MRxQueryVolumeInfo ha esito positivo, il mini-redirector di rete deve impostare il membro Info.LengthRemaining della struttura RX_CONTEXT sul membro Info.Length meno la lunghezza delle informazioni sul volume restituite. Se la chiamata a MRxQueryVolumeInfo ha avuto esito positivo, RDBSS imposta il membro IoStatus.Information di IRP su IrpSp-Parameters.QueryVolume.Length> meno il membro Info.LengthRemaining della struttura RX_CONTEXT.
Per una richiesta di IRP_MJ_QUERY_VOLUME_INFORMATION con il membro Info.FsInformationClass impostato su FileFsDeviceInformation, il mini-redirector di rete restituisce le informazioni seguenti nella struttura RX_CONTEXT a cui punta il parametro RxContext :
Il membro Info.Buffer contiene una struttura FILE_FS_DEVICE_INFORMATION
Il membro Info.Buffer.Characteristics è impostato sulle caratteristiche del volume, che deve includere FILE_REMOTE_DEVICE come una delle opzioni.
Il membro Info.Buffer.DeviceType è impostato sul membro DeviceType della struttura di NET_ROOT associata. Se il membro Type dell'NET_ROOT associato è NET_ROOT_PIPE, il membro Info.Buffer.DeviceType viene impostato su FILE_DEVICE_NAMED_PIPE.
Per una richiesta di IRP_MJ_QUERY_VOLUME_INFORMATION con il membro Info.FsInformationClass impostato su FileFsVolumeInformation, il mini-redirector di rete restituisce le informazioni seguenti nella struttura RX_CONTEXT a cui punta il parametro RxContext :
Il membro Info.Buffer contiene una struttura FILE_FS_VOLUME_INFORMATION.
Il membro Info.Buffer è impostato sul membro VolumeInfo della struttura di NET_ROOT associata.
Il membro Info.LengthRemaining è impostato sul membro VolumeInfoLength della struttura di NET_ROOT associata.
Una chiamata MRxQueryVolumeInfo da RDBSS per IRP_MJ_FILE_SYSTEM_CONTROL è una richiesta per le informazioni di rilevamento dei collegamenti. Prima di chiamare MRxQueryVolumeInfo per IRP_MJ_FILE_SYSTEM_CONTROL, RDBSS modifica i membri seguenti nella struttura RX_CONTEXT a cui punta il parametro RxContext :
Il membro Info.FsInformationClass è impostato su FileFsObjectIdInformation.
Il membro Info.Buffer è impostato su una struttura FILE_FS_OBJECTID_INFORMATION.
Il membro Info.LengthRemaining è impostato su sizeof(FILE_FS_OBJECTID_INFORMATION).
Per questo caso di una richiesta di IRP_MJ_FILE_SYSTEM_CONTROL, il membro AssociatedIrp.SystemBuffer dell'IRP punta a una struttura LINK_TRACKING_INFORMATION.
Se una richiesta viene avviata come IRP_MJ_FILE_SYSTEM_CONTROL a MRxQueryVolumeInfo con un valore restituito di STATUS_SUCCESS o STATUS_BUFFER_OVERFLOW, RDBSS copia il membro ObjectId della struttura FILE_FS_OBJECTID_INFORMATION passato nel membro Info.Buffer della struttura RX_CONTEXT al membro NetRoot-DiskParameters.VolumeId> della struttura FCB e al membro AssociatedIrp.SystemBuffer.VolumeId dell'IRP. Se la chiamata a MRxQueryVolumeInfo ha avuto esito positivo, RDBSS imposta il membro Type della struttura LINK_TRACKING_INFORMATION. Se il membro NetRoot-Flags> della struttura FCB ha il NETROOT_FLAG_DFS_AWARE_NETROOT bit impostato, il membro Type viene impostato da RDBSS su DfsLinkTrackingInformation. Se il membro NetRoot-Flags> della struttura FCB non ha il bit NETROOT_FLAG_DFS_AWARE_NETROOT impostato, il membro Type viene impostato da RDBSS su NtfsLinkTrackingInformation. In caso di esito positivo, RDBSS imposta il membro IoStatus.Information dell'IRP sulle dimensioni di una struttura LINK_TRACKING_INFORMATION.
Requisiti
Piattaforma di destinazione |
Desktop |
Intestazione |
Mrx.h (include Mrx.h) |