функция RxDereferenceAndDeleteRxContext_Real (rxcontx.h)

RxDereferenceAndDeleteRxContext_Real разыменовывает структуру данных RX_CONTEXT, и если элемент ReferenceCount переходит к нулю, он освобождается и удаляет указанную структуру RX_CONTEXT из структур данных RDBSS в памяти.

Синтаксис

void RxDereferenceAndDeleteRxContext_Real(
  [in] IN PRX_CONTEXT RxContext
);

Параметры

[in] RxContext

Указатель на удаляемую структуру RX_CONTEXT.

Возвращаемое значение

None

Remarks

RxDereferenceAndDeleteRxContext_Real вызывается подпрограммами, отличными от RxCompleteRequest , во время асинхронных запросов, которые касаются параметра RxContext либо в инициируемом потоке, либо в каком-либо другом потоке. Таким образом, структура данных RX_CONTEXT учитывается и завершается при последнем разыменовании.

Если элемент ReferenceCount структуры RX_CONTEXT, на который указывает параметр RxContext , не равен нулю после разыменования (уменьшения) подпрограммой RxDereferenceAndDeleteRxContext_Real , то RxDereferenceAndDeleteRxContext_Real приводит к тому, что система будет использовать ASSERT в проверенных сборках.

Подпрограмма RxDereferenceAndDeleteRxContext_Real выполняет ряд конкретных проверок перед удалением RX_CONTEXT. Эти проверки включают следующее:

  • Если элемент AcquireReleaseFcbTrackerX равен 0, то RxDereferenceAndDeleteRxContext_Real приводит к тому, что система будет использовать ASSERT в проверенных сборках.
  • Если элемент NumberOfActiveContexts связанной структуры RDBSS_DEVICE_OBJECT, указывающий на RxContext->RxDeviceObject , не равен нулю после разыменования (уменьшения), а элемент StartStopContext.pStopContext связанной структуры RDBSS_DEVICE_OBJECT не равен NULL, то RxDereferenceAndDeleteRxContext_Real сообщит SyncEvent о структуре RX_CONTEXT в элементе StartStopContext.pStopContext .
Если структура RX_CONTEXT была выделена из памяти нестраничного пула (элемент Flags структуры RX_CONTEXT имеет RX_CONTEXT_FLAG_FROM_POOL параметр), то структура RX_CONTEXT, на которую указывает параметр RxContext , будет возвращена во внутренний список lookaside RDBSS или в память нестраничного пула.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть rxcontx.h (включая Rxprocs.h rxcontx.h)
IRQL <= APC_LEVEL

См. также раздел

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock