ExInterlockedAddUlong 함수(wdm.h)

ExInterlockedAddUlong 루틴은 부호 없는 긴 값을 지정된 부호 없는 정수에 원자성 연산으로 추가합니다.

구문

ULONG ExInterlockedAddUlong(
  [in, out] PULONG      Addend,
  [in]      ULONG       Increment,
  [in, out] PKSPIN_LOCK Lock
);

매개 변수

[in, out] Addend

증분 값으로 값을 조정할 부호 없는 long 정수에 대한 포인터입니다.

[in] Increment

추가할 부호 없는 긴 정수 를 지정합니다.

[in, out] Lock

추가 기능에 대한 액세스를 동기화하는 데 사용할 스핀 잠금에 대한 포인터입니다.

반환 값

ExInterlockedAddUlong Addend의 원래(unsummed) 값을 반환합니다.

설명

이 루틴 대신 InterlockedExchangeAdd 를 사용하는 것이 좋습니다. InterlockedExchangeAdd 는 스핀 잠금을 사용하지 않고 컴파일러에 의해 인라인되기 때문에 더 효율적일 수 있습니다.

연동 작업을 수행하는 지원 루틴은 페이지 오류를 일으킬 수 없는 것으로 간주됩니다. 즉, 코드나 터치하는 데이터 중 어느 것도 시스템을 중단하지 않고 페이지 오류를 일으킬 수 없습니다. 스핀 잠금을 사용하여 대칭 다중 프로세서 머신에서 원자성을 달성합니다. 호출자는 Lock에 대한 상주 스토리지를 제공해야 합니다. 이 스토리지는 ExInterlockedXxx에 대한 초기 호출 전에 KeInitializeSpinLock으로 초기화해야 합니다.

ExInterlockedAddULong에 전달된 잠금은 이 동일한 스핀 잠금과 동기화되는 동일한 값의 다른 작업과 관련하여 Addend의 추가 작업이 원자성임을 보장하는 데 사용됩니다.

ExInterlockedAddUlong 마스크가 인터럽트됩니다. 따라서 IRQL = DISPATCH_LEVEL 실행되는 루틴에 대한 호출에서 동일한 Lock 을 다시 사용하지 않는 경우 ISR과 다른 드라이버 코드 간의 동기화에 사용할 수 있습니다.

InterlockedXxx에 대한 호출은 호출자가 제공하는 스핀 잠금 없이 다른 InterlockedXxx 호출과 관련하여 원자성을 보장합니다.

ExInterlockedAddUlong의 호출자는 모든 IRQL에서 실행됩니다. Addend 매개 변수의 스토리지는 모든 IRQL에 상주해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 모든 수준(설명 섹션 참조)

추가 정보

ExInterlockedAddLargeInteger

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock