Partager via


fonction RxDereferenceAndDeleteRxContext_Real (rxcontx.h)

RxDereferenceAndDeleteRxContext_Real déréférence une structure de données RX_CONTEXT et si le membre ReferenceCount passe à zéro, il libère et supprime la structure de RX_CONTEXT spécifiée des structures de données en mémoire RDBSS.

Syntaxe

void RxDereferenceAndDeleteRxContext_Real(
  [in] IN PRX_CONTEXT RxContext
);

Paramètres

[in] RxContext

Pointeur vers la structure RX_CONTEXT à supprimer.

Valeur de retour

None

Remarques

RxDereferenceAndDeleteRxContext_Real est appelé par des routines autres que RxCompleteRequest lors des requêtes asynchrones qui touchent le paramètre RxContext dans le thread de lancement ou dans un autre thread. Ainsi, la structure de données RX_CONTEXT est comptabilisée et finalisée lors de la dernière déréférence.

Si le membre ReferenceCount de la structure RX_CONTEXT pointée par le paramètre RxContext n’est pas égal à zéro après avoir été déréférencementé (décrémenté) par la routine RxDereferenceAndDeleteRxContext_Real , RxDereferenceAndDeleteRxContext_Real oblige le système à ASSERT sur les builds vérifiées.

La routine RxDereferenceAndDeleteRxContext_Real effectue un certain nombre de vérifications spécifiques avant de supprimer un RX_CONTEXT. Ces vérifications incluent les éléments suivants :

  • Si le membre AcquireReleaseFcbTrackerX est 0, RxDereferenceAndDeleteRxContext_Real provoque l’assertion du système sur les builds vérifiées.
  • Si le membre NumberOfActiveContexts de la structure de RDBSS_DEVICE_OBJECT associée pointait vers RxContext->RxDeviceObject n’est pas zéro après avoir été déréférencé (décrémenté) et que le membre StartStopContext.pStopContext de la structure de RDBSS_DEVICE_OBJECT associée n’est pas NULL, RxDereferenceAndDeleteRxContext_Real signalera l’événement SyncEvent sur la structure RX_CONTEXT dans le membre StartStopContext.pStopContext .
Si la structure de RX_CONTEXT a été allouée à partir de la mémoire du pool non-page (le membre Flags de la structure RX_CONTEXT a l’option RX_CONTEXT_FLAG_FROM_POOL), la structure RX_CONTEXT pointée par le paramètre RxContext est retournée à une liste de recherche RDBSS interne ou à la mémoire du pool non paginée.

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

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock