RxFsdPostRequest, fonction (rxprocs.h)

RxFsdPostRequest met en file d’attente le paquet de requête d’E/S (IRP) spécifié par une structure de RX_CONTEXT à la file d’attente worker pour traitement par le processus de système de fichiers (FSP).

Syntaxe

NTSTATUS RxFsdPostRequest(
  [in] IN PRX_CONTEXT RxContext
);

Paramètres

[in] RxContext

Pointeur vers le RX_CONTEXT contenant l’IRP à mettre en file d’attente vers un thread de travail.

Valeur retournée

RxFsdPostRequest retourne les valeurs suivantes :

Code de retour Description
STATUS_PENDING
Une requête asynchrone a été effectuée et a été mise en file d’attente vers un thread de travail pour un traitement ultérieur. La status de la demande est en attente.

Remarques

RxFsdPostRequest est normalement appelé par RDBSS pour traiter un paquet de requête d’E/S asynchrone (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.

Si le membre Flags de la structure RX_CONTEXT pointée par le paramètre RxContext n’a pas le bit RX_CONTEXT_FLAG_NO_PREPOSTING_NEEDED défini, RxFsdPostRequest tente de verrouiller tout espace d’adressage utilisateur requis pour certains types de demandes. Les demandes qui entraînent ce comportement sont basées sur le membre MajorFunction de RX_CONTEXT structure pointée par RxContext et incluent les éléments suivants :

  • IRP_MJ_DIRECTORY CONTROL lorsque RxContext->MinorFunction est IRP_MN_QUERY_DIRECTORY.
  • IRP_MJ_QUERY_EA
  • IRP_MJ_READ
  • IRP_MJ_SET_EA
  • IRP_MJ_WRITE
Le membre MajorFunction de RxContext détermine dans quelle file d’attente de travail cette demande sera publiée. Une requête IRP_MJ_DEVICE_CONTROL où le membre Parameters.DeviceIoControl.IoControlCode est IOCTL_REDIR_QUERY_PATH est publiée dans la file d’attente de travail retardée. Dans ce cas, le membre Flags du paramètre RxContext a la RX_CONTEXT_FLAG_FSP_DELAYED_OVERFLOW_QUEUE bit définie. Toutes les autres demandes sont publiées dans la file d’attente de travail critique et le membre Flags du paramètre RxContext a le RX_CONTEXT_FLAG_FSP_CRITICAL_OVERFLOW_QUEUE bit défini.

Si le membre FileObject de l’IRP n’est pas NULL et que la demande peut être publiée immédiatement pour traitement (le seuil de la file d’attente de l’appareil est vide), cela se produit. Sinon, la demande est publiée dans une file d’attente de dépassement de capacité sur le volume.

Tous les appels à RxFsdPostRequest sont mis en file d’attente vers un thread de travail pour appeler la routine RxFsdDispatch en passant dans le paramètre RxContext .

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête rxprocs.h (inclure Rxprocs.h, Rxcontx.h)
IRQL <= APC_LEVEL

Voir aussi

RxFsdDispatch