다음을 통해 공유


KeSrcuSynchronize 함수(wdm.h)

KeSrcuSynchronize 루틴은 SRCU(절전 모드 읽기-Copy-Update) 파티션에 대한 현재 활성 읽기 쪽 중요 섹션이 모두 종료될 때까지 대기합니다.

Syntax

VOID KeSrcuSynchronize(
  [in] PKE_SRCU Rcu
);

매개 변수

[in] Rcu

이전에 KeSrcuAllocate에 의해 할당된 SRCU 인스턴스에 대한 포인터입니다.

반환 값

None

비고

KeSrcuSynchronize 는 유예 기간을 시작하고 현재 활성 상태인 모든 판독기가 중요한 섹션을 종료할 때까지 기다리는 SRCU에 대한 "동기화" 작업을 구현합니다. 이 함수는 안전한 메모리 매립 및 데이터 구조 업데이트에 필수적입니다.

유예 기간 의미 체계는 다음과 같습니다.

  • 함수는 호출이 이루어졌을 때 활성 상태였던 판독기만 대기합니다.
  • 통화가 시작된 후 입력하는 새 판독기는 대기에 포함되지 않습니다.
  • 모든 대상 판독기가 KeSrcuReadUnlock을 호출할 때까지 함수가 차단될 수 있습니다.
  • 여러 동기화 작업을 동시에 진행할 수 있습니다.

이 함수는 차단할 수 있으므로 IRQL < DISPATCH_LEVEL만 호출합니다. 이 함수는 절전 모드로 설정하여 페이지 가능 코드에 적합합니다. SRCU 읽기 쪽 중요 섹션 내에서 이 함수를 호출하지 마세요.

일반적인 기록기 패턴은 다음과 같습니다.

  1. 전역 표시 유형에서 데이터 구조를 제거합니다.
  2. KeSrcuSynchronize를 호출하여 기존 판독기를 기다립니다.
  3. 데이터 구조를 안전하게 할당 취소하거나 수정합니다.

이 함수는 반환할 때 판독기에서 데이터에 액세스하지 않도록 하므로 업데이트 또는 메모리 매립을 안전하게 수행할 수 있습니다.

요구 사항

요구 사항 가치
대상 플랫폼 보편적
Header wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <DISPATCH_LEVEL

참고하십시오

KeSrcuAllocate

KeSrcuFree

KeSrcuReadLock

KeSrcuReadUnlock