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.
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
RxResumeBlockedOperations_Serially