Partager via


Fonction RxPrepareContextForReuse (rxcontx.h)

RxPrepareContextForReuse prépare une structure de données RX_CONTEXT pour la réutilisation en réinitialisant toutes les allocations et acquisitions spécifiques à l’opération qui ont été effectuées (le membre ReferenceCount de la structure RX_CONTEXT est défini sur zéro). Les paramètres obtenus à partir de l’IRP ne sont pas modifiés.

Syntaxe

void RxPrepareContextForReuse(
  [in, out] IN OUT PRX_CONTEXT RxContext
);

Paramètres

[in, out] RxContext

Pointeur vers la structure RX_CONTEXT.

Valeur de retour

None

Remarques

La routine RxPrepareContextForReuse vérifie que plusieurs membres spécifiques à l’opération dans la structure RX_CONTEXT ont la valeur NULL avant de définir le membre ReferenceCount sur zéro. Ces tests spécifiques à l’opération qui doivent être remplis incluent les éléments suivants :

  • Si le membre MajorFunction de l’IRP associé est IRP_MJ_CREATE, le membre Create.CanonicalNameBuffer doit avoir la valeur NULL.
  • Si le membre MajorFunction de l’IRP associé est IRP_MJ_READ ou IRP_MJ_WRITE, les membres RxContextSerializationQLinks.Flink et RxContextSerializationQLinks.Blink doivent avoir la valeur NULL.
Si l’une des conditions ci-dessus n’est pas remplie, RxPrepareContextForReuse oblige le système à ASSERT sur les builds vérifiées.

La routine RxPrepareContextForReuse ne serait normalement utilisée que par les pilotes de mini-redirecteurs réseau qui réinitialisent directement RX_CONTEXT structures.

Configuration requise

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

Voir aussi

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock