Partager via


Routine MRxQueryVolumeInfo

La routine MRxQueryVolumeInfo est appelée par RDBSS pour demander qu’un mini-redirecteur réseau interroge des informations sur le volume.

Syntaxe

PMRX_CALLDOWN MRxQueryVolumeInfo;

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

Paramètres

RxContext [in, out]
Pointeur vers la structure RX_CONTEXT. Ce paramètre contient l’IRP qui demande l’opération.

Valeur retournée

MRxQueryVolumeInfo retourne STATUS_SUCCESS sur la réussite ou une valeur NTSTATUS appropriée, par exemple :

Code de retour Description
STATUS_ACCESS_DENIED

L’appelant ne dispose pas de la sécurité appropriée pour cette opération.

STATUS_BUFFER_OVERFLOW

La mémoire tampon pour recevoir les informations de volume était trop petite.

Cette valeur de retour doit être considérée comme une réussite et autant de données valides que possible doivent être retournées dans le membre Info.Buffer de la structure RX_CONTEXT pointée vers le paramètre RxContext .

STATUS_BUFFER_TOO_SMALL

La mémoire tampon est trop petite pour recevoir les données demandées.

Si cette valeur est retournée, le membre InformationToReturn de la structure RX_CONTEXT pointée par le paramètre RxContext doit être défini sur la taille minimale de la mémoire tampon attendue pour que l’appel réussisse.

STATUS_CONNECTION_DISCONNECTED

La connexion a été déconnectée.

STATUS_INSUFFICIENT_RESOURCES

Les ressources étaient insuffisantes pour terminer la requête.

STATUS_INVALID_PARAMETER

Un paramètre non valide a été spécifié.

STATUS_NETWORK_NAME_DELETED

Un nom de réseau a été supprimé.

STATUS_NOT_IMPLEMENTED

Une fonctionnalité demandée n’est pas implémentée.

Remarques

RDBSS émet un appel à MRxQueryVolumeInfo dans l’un des cas suivants :

Avant d’appeler MRxQueryVolumeInfo dans le cas d’une demande de IRP_MJ_QUERY_VOLUME_INFORMATION, RDBSS modifie les membres suivants dans la structure RX_CONTEXT pointée vers le paramètre RxContext :

Le membre Info.FsInformationClass est défini sur IrpSp-Parameters.QueryVolume.FsInformationClass>.

Le membre Info.Buffer est défini sur Irp-AssociatedIrp.SystemBuffer>.

Le membre Info.LengthRemaining est défini sur IrpSp-Parameters.QueryVolume.Length>.

Pour une demande de IRP_MJ_QUERY_VOLUME_INFORMATION, si le membre PostRequest de la structure RX_CONTEXT a la valeur TRUE au retour de MRxQueryVolumeInfo, RDBSS appelle RxFsdPostRequest pour publier la demande. Dans ce cas, la demande de IRP_MJ_QUERY_VOLUME_INFORMATION transmet la structure RX_CONTEXT à la file d’attente RX_CONTEXT à une file d’attente worker pour traitement par le processus de système de fichiers (FSP).

Si le membre PostRequest de la structure RX_CONTEXT a la valeur FALSE lors du retour de MRxQueryVolumeInfo, le mini-redirecteur réseau doit définir le membre Info.LengthRemaining de la structure RX_CONTEXT sur la longueur des informations de volume retournées. RDBSS définit le membre IoStatus.Information de l’IRP sur IrpSp-Parameters.QueryVolume.Length> moins le membre Info.LengthRemaining de la structure RX_CONTEXT.

Si l’appel à MRxQueryVolumeInfo réussit, le mini-redirecteur réseau doit définir le membre Info.LengthRemaining de la structure RX_CONTEXT sur le membre Info.Length moins la longueur des informations de volume retournées. Si l’appel à MRxQueryVolumeInfo a réussi, RDBSS définit le membre IoStatus.Information de l’IRP sur IrpSp-Parameters.QueryVolume.Length> moins le membre Info.LengthRemaining de la structure RX_CONTEXT.

Pour une requête de IRP_MJ_QUERY_VOLUME_INFORMATION avec le membre Info.FsInformationClass défini sur FileFsDeviceInformation, le mini-redirecteur réseau retourne les informations suivantes dans la structure RX_CONTEXT pointée par le paramètre RxContext :

Le membre Info.Buffer contient une structure FILE_FS_DEVICE_INFORMATION

Le membre Info.Buffer.Characteristics est défini sur les caractéristiques du volume, qui doivent inclure FILE_REMOTE_DEVICE comme l’une des options.

Le membre Info.Buffer.DeviceType est défini sur le membre DeviceType de la structure NET_ROOT associée. Si le membre Type du NET_ROOT associé est NET_ROOT_PIPE, le membre Info.Buffer.DeviceType a la valeur FILE_DEVICE_NAMED_PIPE.

Pour une requête de IRP_MJ_QUERY_VOLUME_INFORMATION avec le membre Info.FsInformationClass défini sur FileFsVolumeInformation, le mini-redirecteur réseau retourne les informations suivantes dans la structure RX_CONTEXT pointée par le paramètre RxContext :

Le membre Info.Buffer contient une structure FILE_FS_VOLUME_INFORMATION.

Le membre Info.Buffer est défini sur le membre VolumeInfo de la structure NET_ROOT associée.

Le membre Info.LengthRemaining est défini sur le membre VolumeInfoLength de la structure NET_ROOT associée.

Un appel MRxQueryVolumeInfo de RDBSS pour IRP_MJ_FILE_SYSTEM_CONTROL est une demande d’informations de suivi des liens. Avant d’appeler MRxQueryVolumeInfo pour IRP_MJ_FILE_SYSTEM_CONTROL, RDBSS modifie les membres suivants dans la structure RX_CONTEXT pointée vers le paramètre RxContext :

Le membre Info.FsInformationClass est défini sur FileFsObjectIdInformation.

Le membre Info.Buffer est défini sur une structure FILE_FS_OBJECTID_INFORMATION.

Le membre Info.LengthRemaining a la valeur sizeof(FILE_FS_OBJECTID_INFORMATION).

Dans ce cas d’une demande de IRP_MJ_FILE_SYSTEM_CONTROL, le membre AssociatedIrp.SystemBuffer de l’IRP pointe vers une structure LINK_TRACKING_INFORMATION.

Si une requête est lancée en tant que IRP_MJ_FILE_SYSTEM_CONTROL à MRxQueryVolumeInfo avec une valeur de retour STATUS_SUCCESS ou STATUS_BUFFER_OVERFLOW, RDBSS copie le membre ObjectId de la structure FILE_FS_OBJECTID_INFORMATION passé dans le membre Info.Buffer de RX_CONTEXT structure au membre NetRoot-DiskParameters.VolumeId> de la structure FCB et au membre AssociatedIrp.SystemBuffer.VolumeId de l’IRP. Si l’appel à MRxQueryVolumeInfo a réussi, RDBSS définit le membre Type de la structure LINK_TRACKING_INFORMATION. Si le membre NetRoot-Flags> de la structure FCB a le NETROOT_FLAG_DFS_AWARE_NETROOT bit défini, le membre Type est défini par RDBSS sur DfsLinkTrackingInformation. Si le membre NetRoot-Flags> de la structure FCB n’a pas le NETROOT_FLAG_DFS_AWARE_NETROOT bit défini, le membre Type est défini par RDBSS sur NtfsLinkTrackingInformation. En cas de réussite, RDBSS définit le membre IoStatus.Information de l’IRP sur la taille d’une structure LINK_TRACKING_INFORMATION.

Configuration requise

Plateforme cible

Desktop (Expérience utilisateur)

En-tête

Mrx.h (inclure Mrx.h)

Voir aussi

MRxIsValidDirectory

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxSetEaInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetQuotaInfo

MRxSetSdInfo

MRxSetVolumeInfo

RxFsdPostRequest