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 :
RDBSS reçoit une demande de IRP_MJ_QUERY_VOLUME_INFORMATION .
RDBSS reçoit une demande de IRP_MJ_FILE_SYSTEM_CONTROL pour un code de contrôle FSCTL_LMR_GET_LINK_TRACKING_INFORMATION.
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) |