Compartilhar via


função RxDereferenceAndDeleteRxContext_Real (rxcontx.h)

RxDereferenceAndDeleteRxContext_Real desreferencia uma estrutura de dados RX_CONTEXT e, se o membro ReferenceCount for para zero, ele desaloca e remove a estrutura de RX_CONTEXT especificada das estruturas de dados na memória do RDBSS.

Sintaxe

void RxDereferenceAndDeleteRxContext_Real(
  [in] IN PRX_CONTEXT RxContext
);

Parâmetros

[in] RxContext

Um ponteiro para a estrutura RX_CONTEXT a ser removida.

Retornar valor

Nenhum

Comentários

RxDereferenceAndDeleteRxContext_Real é chamado por rotinas diferentes de RxCompleteRequest durante solicitações assíncronas que tocam o parâmetro RxContext no thread inicial ou em algum outro thread. Assim, a estrutura de dados RX_CONTEXT é contada e finalizada na última desreferência.

Se o membro ReferenceCount da estrutura de RX_CONTEXT apontado pelo parâmetro RxContext não for zero após ser desrefensado (decremente) pela rotina de RxDereferenceAndDeleteRxContext_Real , RxDereferenceAndDeleteRxContext_Real fará com que o sistema asserte em builds verificados.

A rotina de RxDereferenceAndDeleteRxContext_Real faz várias verificações específicas antes de remover um RX_CONTEXT. Essas verificações incluem o seguinte:

  • Se o membro AcquireReleaseFcbTrackerX for 0, RxDereferenceAndDeleteRxContext_Real fará com que o sistema asserte em builds verificados.
  • Se o membro NumberOfActiveContexts da estrutura RDBSS_DEVICE_OBJECT associada apontada para RxContext->RxDeviceObject não for zero depois de ser desreferenciado (decremented) e o membro StartStopContext.pStopContext da estrutura de RDBSS_DEVICE_OBJECT associada não for NULL, em seguida, RxDereferenceAndDeleteRxContext_Real sinalizará o SyncEvent na estrutura RX_CONTEXT no membro StartStopContext.pStopContext .
Se a estrutura RX_CONTEXT tiver sido alocada da memória do pool que não seja de página (o membro Flags da estrutura RX_CONTEXT tiver a opção RX_CONTEXT_FLAG_FROM_POOL definida), a estrutura RX_CONTEXT apontada pelo parâmetro RxContext será retornada para uma lista de lookaside interna do RDBSS ou para memória de pool não paginada.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho rxcontx.h (inclua Rxprocs.h rxcontx.h)
IRQL <= APC_LEVEL

Confira também

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock