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.
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
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially