RxDereferenceAndDeleteRxContext_Real関数 (rxcontx.h)
RxDereferenceAndDeleteRxContext_Real RX_CONTEXTデータ構造を逆参照し、 ReferenceCount メンバーが 0 になった場合、RDBSS のメモリ内データ構造から指定したRX_CONTEXT構造体の割り当てを解除して削除します。
構文
void RxDereferenceAndDeleteRxContext_Real(
[in] IN PRX_CONTEXT RxContext
);
パラメーター
[in] RxContext
削除するRX_CONTEXT構造体へのポインター。
戻り値
なし
解説
RxDereferenceAndDeleteRxContext_Realは、開始スレッドまたは他のスレッドのいずれかで RxContext パラメーターに触れる非同期要求中に、RxCompleteRequest 以外のルーチンによって呼び出されます。 したがって、RX_CONTEXTデータ構造は、最後の逆参照で参照カウントされ、最終処理されます。
RxContext パラメーターが指すRX_CONTEXT構造体の ReferenceCount メンバーが、RxDereferenceAndDeleteRxContext_Real ルーチンによって逆参照 (デクリメント) された後に 0 でない場合、RxDereferenceAndDeleteRxContext_Realはチェックされたビルドでシステムを ASSERT します。
RxDereferenceAndDeleteRxContext_Real ルーチンは、RX_CONTEXTを削除する前に、いくつかの特定のチェックを行います。 これらのチェックには、次のものが含まれます。
- AcquireReleaseFcbTrackerX メンバーが 0 の場合、RxDereferenceAndDeleteRxContext_Realはチェックされたビルドでシステムを ASSERT します。
- 関連付けられたRDBSS_DEVICE_OBJECT構造体の NumberOfActiveContexts メンバーが RxContext->RxDeviceObject を指している場合、逆参照 (デクリメント) された後に 0 ではなく、関連付けられているRDBSS_DEVICE_OBJECT構造体の StartStopContext.pStopContext メンバーが NULL でない場合、 RxDereferenceAndDeleteRxContext_Real は StartStopContext.pStopContext メンバー内の RX_CONTEXT 構造体の SyncEvent を通知します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | rxcontx.h (Rxprocs.h rxcontx.h を含む) |
IRQL | <= APC_LEVEL |
こちらもご覧ください
RxResumeBlockedOperations_Serially