RxFsdDispatch, fonction (mrx.h)
RxFsdDispatch implémente la distribution 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 le RxDriverEntry routine 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 requête d’E/S en cours de traitement.
Valeur de retour
RxFsdDispatch retourne l’une des valeurs suivantes :
Retourner le code | 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 d’état indique l’échec. |
STATUS_OBJECT_NAME_INVALID | Une demande non valide a été faite pour créer un canal nommé ou un maillot (le membre MajorFunction du Irp était IRP_MJ_CREATE_MAILSLOT ou IRP_MJ_CREATE_NAMED_PIPE). Cette valeur d’état indique l’échec. |
STATUS_PENDING | Une demande asynchrone a été effectuée et l’état de la demande est en attente. |
STATUS_SUCCESS | L’appel de routine RxFsdDispatch a réussi. |
Remarques
RxFsdDispatch est appelée par RDBSS pour traiter un paquet de demandes d’E/S (IRP). Ces IRPS sont normalement reçues 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 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 distribution 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 vérifie si un vecteur de distribution privé doit être utilisé. Sinon, un vecteur de répartition courant sera utilisé pour traiter l’IRP.
RxFsdDispatch appelle des routines internes pour traiter les irPs standard dont la plupart entraînent un appel à l’une des routines de rappel implémentées par le pilote de mini-redirecteur réseau.
Quelques IRPs 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 de STATUS_OBJECT_NAME_INVALID est retournée).
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Bureau |
d’en-tête | mrx.h (include Mrx.h, Rxstruc.h, Struchdr.h) |
IRQL | <= APC_LEVEL |