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.

Valor de retorno

Nenhum

Observações

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

Se o ReferenceCount membro da estrutura RX_CONTEXT apontado pelo parâmetro RxContext não for zero após ser desreferenciado (decremented) pela rotina RxDereferenceAndDeleteRxContext_Real, RxDereferenceAndDeleteRxContext_Real fará com que o sistema afirme 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 AcquireReleaseFcbTrackerX membro for 0, RxDereferenceAndDeleteRxContext_Real fará com que o sistema asserte em builds verificados.
  • Se o NumberOfActiveContexts membro da estrutura RDBSS_DEVICE_OBJECT associada apontou para RxContext ->RxDeviceObject não será zero após ser desreferenciado (decremented) e o Start StopContext.pStopContext membro da estrutura de RDBSS_DEVICE_OBJECT associada não é NULL, então RxDereferenceAndDeleteRxContext_Real sinalizará o SyncEvent na estrutura RX_CONTEXT no membro StartStopContext.pStopContext.
Se a estrutura de RX_CONTEXT foi alocada da memória do pool de páginas (o Flags membro da estrutura RX_CONTEXT tem a opção RX_CONTEXT_FLAG_FROM_POOL definida), a estrutura de RX_CONTEXT apontada pelo parâmetro RxContext será retornada para uma lista lookaside interna do RDBSS ou para memória de pool não paged.

Requisitos

Requisito Valor
da Plataforma de Destino Área de trabalho
cabeçalho rxcontx.h (include Rxprocs.h rxcontx.h)
IRQL <= APC_LEVEL

Consulte também

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock