Fonction RxFsdDispatch (mrx.h)

RxFsdDispatch implémente la répartition du pilote de système de fichiers (FSD) pour RDBSS afin de traiter un paquet de demandes d’E/S (IRP). Un pointeur vers cette routine est copié sur la table de répartition du pilote de périphérique pour le pilote de mini-redirecteur réseau par la routine RxDriverEntry lorsque RDBSS est initialisé.

Syntaxe

NTSTATUS RxFsdDispatch(
  [in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
  [in] IN PIRP                 Irp
);

Paramètres

[in] RxDeviceObject

Pointeur vers l’objet d’appareil RDBSS pour ce mini-redirecteur réseau.

[in] Irp

Pointeur vers le paquet de demande d’E/S en cours de traitement.

Valeur retournée

RxFsdDispatch retourne l’une des valeurs suivantes :

Code de retour Description
STATUS_INVALID_DEVICE_REQUEST Une requête a été effectuée sur un objet d’appareil non valide. Par exemple, cette erreur est retournée si un objet de système de fichiers est passé en tant que paramètre RxDeviceObject . Cette valeur status indique un échec.
STATUS_OBJECT_NAME_INVALID Une demande non valide a été effectuée pour créer un canal nommé ou un maillot (le membre MajorFunction de l’Irp a été IRP_MJ_CREATE_MAILSLOT ou IRP_MJ_CREATE_NAMED_PIPE). Cette valeur status indique un échec.
STATUS_PENDING Une requête asynchrone a été effectuée et la status de la demande est en attente.
STATUS_SUCCESS L’appel de routine RxFsdDispatch a réussi.

Remarques

RxFsdDispatch est appelé par RDBSS pour traiter un paquet de demande d’E/S (IRP). Ces IRP sont normalement reçus par RDBSS en réponse à une application en mode utilisateur demandant des opérations sur un fichier. Il est également possible pour un autre pilote de noyau d’émettre un tel IRP.

Un pointeur vers la routine RxFsdDispatch est copié sur la table de répartition des pilotes pour un pilote de mini-redirecteur réseau lorsque la routine RxDriverEntry est appelée pour initialiser RDBSS.

En interne, RDBSS gère deux vecteurs de répartition :

  • Vecteur de répartition courant pour la plupart des opérations.

  • Vecteur de répartition privé pour les opérations FCB de périphérique de fichiers.

Si l’IRP est une requête IRP_MJ_CREATE, RxFsdDispatch utilise un vecteur de répartition commun. Si l’IRP est destiné à une opération sur un fcb d’un objet de fichier, RxFsdDispatch case activée si un vecteur de répartition privé doit être utilisé. Sinon, un vecteur de répartition commun sera utilisé pour traiter l’IRP.

RxFsdDispatch appelle des routines internes pour traiter les IRP standard, dont la plupart aboutissent à un appel à l’une des routines de rappel implémentées par le pilote de mini-redirecteur réseau.

Quelques IRP sont traités comme spéciaux et gérés en interne par RDBSS. Par exemple, le IRP_MJ_SYSTEM_CONTROL est utilisé en interne si WMI est activé. IRP_MJ_CREATE_MAILSLOT ou IRP_MJ_CREATE_NAMED_PIPE demandes sont traitées spécialement et rejetées (une erreur STATUS_OBJECT_NAME_INVALID est retournée).

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête mrx.h (inclure Mrx.h, Rxstruc.h, Struchdr.h)
IRQL <= APC_LEVEL

Voir aussi

RxDriverEntry