ExAcquireResourceExclusiveLite 함수(wdm.h)

ExAcquireResourceExclusiveLite 루틴은 호출 스레드에서 단독 액세스를 위해 지정된 리소스를 획득합니다.

구문

BOOLEAN ExAcquireResourceExclusiveLite(
  [in, out] PERESOURCE Resource,
  [in]      BOOLEAN    Wait
);

매개 변수

[in, out] Resource

가져올 리소스에 대한 포인터입니다.

[in] Wait

리소스를 즉시 가져올 수 없을 때마다 루틴의 동작을 지정합니다. TRUE이면 리소스를 가져올 수 있을 때까지 호출자가 대기 상태로 전환됩니다. FALSE이면 리소스를 가져올 수 있는지 여부에 관계없이 루틴이 즉시 반환됩니다.

반환 값

ExAcquireResourceExclusiveLite 는 리소스를 획득하면 TRUE 를 반환합니다. 이 루틴은 입력 WaitFALSE이고 배타적 액세스를 즉시 부여할 수 없는 경우 FALSE를 반환합니다.

설명

다음 목록에서는 호출자에게 지정된 리소스에 대한 단독 액세스 권한이 부여되는지 여부와 시기를 설명합니다.

  • 리소스가 현재 소유되지 않은 경우 현재 스레드에 즉시 단독 액세스 권한이 부여됩니다.

  • 호출자가 배타적 액세스를 위해 리소스를 이미 획득한 경우 현재 스레드에 동일한 유형의 액세스 권한이 재귀적으로 부여됩니다.-

  • 호출자가 리소스에 대한 공유 액세스 권한을 가지고 있는 경우 호출자는 잠금을 해제한 후 독점적으로 다시 요청해야 합니다.

  • 리소스가 현재 다른 스레드에서 배타적으로 소유되어 있거나 호출자가 리소스에 대한 공유 액세스 권한만 있는 경우 현재 스레드는 리소스를 획득할 때까지 대기 상태로 전환됩니다.

두 스레드가 각각 동일한 리소스에 공유 잠금을 유지하고 둘 다 공유 잠금을 해제하지 않고 잠금을 독점적으로 획득하려고 하면 교착 상태가 됩니다. 즉, 각 스레드는 다른 스레드가 잠금에서 공유 보류를 해제할 때까지 기다리며, 둘 다 공유 보류를 해제하지 않습니다.

호출자는 ExReleaseResourceLite 또는 ExReleaseResourceForThreadLite를 호출하여 리소스를 해제할 수 있습니다.

이 루틴을 호출하기 전에 일반 커널 APC 배달을 사용하지 않도록 설정해야 합니다. KeEnterCriticalRegion을 호출하여 일반 커널 APC 배달을 사용하지 않도록 설정합니다. 리소스가 해제될 때까지 배달을 사용하지 않도록 설정해야 하며, 이때 KeLeaveCriticalRegion을 호출하여 다시 사용할 수 있습니다. 자세한 내용은 APC 사용 안 을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL
DDI 규정 준수 규칙 ExclusiveResourceAccess(wdm), HwStorPortProhibitedDDDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

추가 정보

ExAcquireResourceSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredExclusiveLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite

ExReleaseResourceLite

KeEnterCriticalRegion

KeLeaveCriticalRegion