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 .
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | rxcontx.h (inclua Rxprocs.h rxcontx.h) |
IRQL | <= APC_LEVEL |
Confira também
RxResumeBlockedOperations_Serially