RxDereferenceAndDeleteRxContext_Real 函数 (rxcontx.h)
RxDereferenceAndDeleteRxContext_Real 取消引用RX_CONTEXT数据结构,如果 ReferenceCount 成员转到零,则会从 RDBSS 内存中数据结构中解除分配并删除指定的RX_CONTEXT结构。
语法
void RxDereferenceAndDeleteRxContext_Real(
[in] IN PRX_CONTEXT RxContext
);
参数
[in] RxContext
指向要删除的RX_CONTEXT结构的指针。
返回值
无
备注
RxDereferenceAndDeleteRxContext_Real 由 RxCompleteRequest 以外的例程在异步请求期间调用,这些例程在启动线程或其他线程中触摸 RxContext 参数。 因此,RX_CONTEXT数据结构在上次取消引用时进行引用计数和最终确定。
如果 RxContext 参数指向的 RX_CONTEXT 结构的 ReferenceCount 成员在RxDereferenceAndDeleteRxContext_Real例程取消引用 (递减) 后不为零,则RxDereferenceAndDeleteRxContext_Real会导致系统在检查的生成上出现 ASSERT。
删除RX_CONTEXT之前,RxDereferenceAndDeleteRxContext_Real例程会进行一些特定的检查。 这些检查包括以下内容:
- 如果 AcquireReleaseFcbTrackerX 成员为 0,则 RxDereferenceAndDeleteRxContext_Real 会导致系统在已检查的生成上 ASSERT。
- 如果指向 RxContext->RxDeviceObject 的关联RDBSS_DEVICE_OBJECT结构的 NumberOfActiveContexts 成员在取消引用 (递减) 且关联RDBSS_DEVICE_OBJECT结构的 StartStopContext.pStopContext 成员不为 NULL, 然后,RxDereferenceAndDeleteRxContext_Real将在 StartStopContext.pStopContext 成员的 RX_CONTEXT 结构上向 SyncEvent 发出信号。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | rxcontx.h (包括 Rxprocs.h rxcontx.h) |
IRQL | <= APC_LEVEL |
另请参阅
RxResumeBlockedOperations_Serially