ExAcquireResourceSharedLite 함수(wdm.h)

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

구문

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

매개 변수

[in, out] Resource

획득할 리소스에 대한 포인터입니다.

[in] Wait

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

반환 값

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

ExAcquireResourceSharedLite 는 리소스를 획득하는 경우(또는 언제) TRUE 를 반환합니다. 입력 WaitFALSE이고 공유 액세스 권한을 즉시 부여할 수 없는 경우 이 루틴은 FALSE를 반환합니다.

설명

호출자에게 지정된 리소스에 대한 공유 액세스 권한이 부여되는지 여부는 다음 사항에 따라 달라집니다.

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

  • 호출자가 이미 리소스를 획득한 경우(공유 또는 단독 액세스용) 현재 스레드에 동일한 유형의 액세스가 재귀적으로 부여됩니다. 이 호출을 수행해도 지정된 리소스에 대한 호출자의 단독 액세스는 공유 액세스로 변환되지 않습니다.

  • 리소스가 현재 다른 스레드에서 공유된 것으로 소유하고 있고 리소스에 대한 단독 액세스를 기다리는 스레드가 없는 경우 호출자에게 공유 액세스 권한이 즉시 부여됩니다. 전용 웨이터가 있는 경우 호출자가 대기 상태로 전환됩니다.

  • 리소스가 현재 다른 스레드에서 배타적으로 소유되어 있거나 단독 액세스를 기다리는 다른 스레드가 있고 호출자에게 리소스에 대한 공유 액세스 권한이 아직 없는 경우 현재 스레드는 대기 상태(대기가 TRUE로 설정됨)로 설정되거나 ExAcquireResourceSharedLiteFALSE를 반환합니다.

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

추가 정보

ExAcquireResourceExclusiveLite

ExAcquireSharedStarveExclusive

ExAcquireSharedWaitForExclusive

ExConvertExclusiveToSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredSharedLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite