다음을 통해 공유


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를 발생합니다.
  • NumberOfActiveContexts 연결된 RDBSS_DEVICE_OBJECT 구조체의 멤버가 RxContext가리키는 경우>RxDeviceObject 역참조(감소) 및 시작 후 0이 아닙니다. 연결된 RDBSS_DEVICE_OBJECT 구조체의 StopContext.pStopContext 멤버가 NULL 않은 경우 RxDereferenceAndDeleteRxContext_RealStartStopContext.pStopContext 멤버의 RX_CONTEXT 구조에서 SyncEvent에 신호를 표시합니다.
RX_CONTEXT 구조체가 페이지가 아닌 풀 메모리에서 할당된 경우(RX_CONTEXT 구조체의 Flags 멤버에 RX_CONTEXT_FLAG_FROM_POOL 옵션 집합이 있음) RxContext 매개 변수가 가리키는 RX_CONTEXT 구조는 내부 RDBSS lookaside 목록 또는 페이지가 없는 풀 메모리로 반환됩니다.

요구 사항

요구
대상 플랫폼 바탕 화면
헤더 rxcontx.h(Rxprocs.h rxcontx.h 포함)
IRQL <= APC_LEVEL

참고 항목

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock