функция 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 .
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | rxcontx.h (включая Rxprocs.h rxcontx.h) |
IRQL | <= APC_LEVEL |
См. также раздел
RxResumeBlockedOperations_Serially