Partager via


Fonction RxInitializeContext (rxcontx.h)

RxInitializeContext initialise une structure de données RX_CONTEXT existante.

Syntaxe

void RxInitializeContext(
  [in, optional] IN PIRP                 Irp,
  [in]           IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
  [in]           IN ULONG                InitialContextFlags,
  [in, out]      IN OUT PRX_CONTEXT      RxContext
);

Paramètres

[in, optional] Irp

Pointeur vers l’IRP à encapsuler par cette structure RX_CONTEXT.

[in] RxDeviceObject

Pointeur vers l’objet d’appareil auquel s’appliquent cette RX_CONTEXT et IRP.

[in] InitialContextFlags

Ensemble de valeurs initiales pour le membre Flags du RX_CONTEXT structure de données à stocker dans la structure RX_CONTEXT. Ces valeurs initiales peuvent être n’importe quelle combinaison des énumérations suivantes :

RX_CONTEXT_FLAG_WAIT

Lorsque cette valeur est définie, l’IRP ne doit pas être publié pour une exécution ultérieure par le processus du système de fichiers, mais doit être attendu pour se terminer.

RX_CONTEXT_FLAG_MUST_SUCCEED

Lorsque cette valeur est définie, l’opération doit réussir. Cette valeur n’est actuellement pas utilisée par RDBSS, mais elle peut être utilisée par les pilotes de mini-redirecteur réseau.

RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING

Lorsque cette valeur est définie, l’opération doit réussir pour les opérations non bloquantes. Cette valeur n’est actuellement pas utilisée par RDBSS, mais elle peut être utilisée par les pilotes de mini-redirecteur réseau.

[in, out] RxContext

Pointeur vers le RX_CONTEXT à initialiser.

Valeur de retour

None

Remarques

RxInitializeContext est appelé en interne par la routine RxCreateRxContext . Par conséquent, la routine RxInitializeContext est normalement utilisée uniquement par les pilotes min-redirecteur réseau qui allouent directement RX_CONTEXT structures au lieu d’appeler la routine RxCreateRxContext pour allouer et initialiser une structure RX_CONTEXT.

Si le paramètre Irp est configuré pour une opération asynchrone, le membre Flags de la structure RX_CONTEXT pointée par RxContext a également la valeur suivante :

RX_CONTEXT_FLAG_ASYNC_OPERATION est également défini pour les conditions suivantes :

  • Le membre MajorFunction de l’Irp est IRP_MJ_READ, IRP_MJ_WRITE ou IRP_MJ_DEVICE_CONTROL.
  • Le membre MajorFunction de l’Irp est un IRP_MJ_DIRECTORY_CONTROL et le membre MinorFunction de l’IRP est un IRP_MN_NOTIFY_CHANGE_DIRECTORY.
  • Le membre MajorFunction de l’Irp est un IRP_MJ_FILE_SYSTEM_CONTROL et le membre NetRoot du fcb associé n’est pas NULL et le membre Type du NET_ROOT est NET_ROOT_PIPE.
S’il s’agit d’un appel de système de fichiers récursif (le membre TopLevelIrp dans le stockage local du thread est l’Irp actuel), le membre Flags de RxContext a également la valeur suivante définie :

Si le paramètre RxDeviceObject indique qu’il s’agit de l’objet d’appareil RDBSS de niveau supérieur, le membre Flags de la structure RX_CONTEXT a également la valeur suivante définie :

Si le membre Irp FileObject Flags a l’option FO_WRITE_THROUGH définie, le membre Flags de la structure RX_CONTEXT a également la valeur suivante :

RxInitializeContext définit un certain nombre d’autres membres dans la structure RX_CONTEXT, notamment les éléments suivants :

  • Définit le NodeTypeCode approprié, NodeByteSize, SerialNumber, RxDeviceObject et initialise referenceCount sur 1.
  • Initialise l’événement SyncEvent
  • Initialiser le ScavengerEntry associé
  • Initialise l’entrée de liste de BlockedOperations
  • Définit les membres RX_CONTEXT en fonction de l’Irp. Il s’agit notamment des membres CurrentIrp, OriginalThread, MajorFunction, MinorFunction, CurrentIrpSp, pFcb, NonPagedFcb, pFobx, pRelevantSrvOpen et FobxSerialNumber .

Configuration requise

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

Voir aussi

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock