다음을 통해 공유


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로 설정됩니다.
  • RxContext->RxDeviceObject를 가리키는 연결된 RDBSS_DEVICE_OBJECT 구조체의 NumberOfActiveContexts 멤버가 역참조(감소)된 후 0이 아니고 연결된 RDBSS_DEVICE_OBJECT 구조체의 StartStopContext.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