FltAcquireResourceExclusive 루틴
FltAcquireResourceExclusive 루틴은 호출 스레드에서 단독 액세스를 위해 지정된 리소스를 획득합니다.
구문
VOID FltAcquireResourceExclusive(
_Inout_ PERESOURCE Resource
);
매개 변수
리소스 [in, out]
불투명 ERESOURCE 구조체에 대한 포인터입니다. 이 구조는 호출자가 비페이지 풀에서 할당하고 ExInitializeResourceLite 또는 ExReinitializeResourceLite를 호출하여 초기화해야 합니다.
반환 값
None
설명
이 루틴은 SP2(서비스 팩 2), Windows Server 2003 SP1(서비스 팩 1) 및 이후 버전의 Windows Windows XP에서 사용할 수 있습니다.
FltAcquireResourceExclusive 는 호출 스레드에서 단독 액세스를 위해 지정된 리소스를 획득합니다.
다음 상황에서는 호출자에게 지정된 리소스에 대한 단독 액세스 권한이 부여되는지 여부 또는 시기를 결정합니다.
리소스가 현재 소유되지 않은 경우 현재 스레드에 대한 단독 액세스 권한이 즉시 부여됩니다.
호출자가 배타적 액세스를 위해 리소스를 이미 획득한 경우 현재 스레드에 동일한 유형의 액세스가 재귀적으로 부여됩니다.
리소스에 대한 공유 액세스 권한이 있는 호출자는 잠금을 해제한 다음 독점적으로 다시 요청해야 합니다.
리소스가 현재 다른 스레드에서 배타적으로 소유되거나 호출자가 리소스에 대한 공유 액세스 권한만 있는 경우 현재 스레드는 리소스를 획득할 때까지 대기 상태로 전환됩니다.
참고
두 스레드가 각각 동일한 리소스에 공유 잠금을 보유하고 있고 둘 다 공유 잠금을 해제하지 않고 잠금을 단독으로 획득하려고 하면 교착 상태가 됩니다. 즉, 각 스레드는 다른 스레드가 잠금에서 공유 보류를 해제할 때까지 기다리며, 다른 스레드가 공유 보류를 해제할 때까지 둘 다 해제하지 않습니다.
FltAcquireResourceExclusive 는 일반 커널 APC 배달을 사용하지 않도록 설정하는 ExAcquireResourceExclusiveLite 에 대한 래퍼입니다.
FltAcquireResourceExclusive는 일반 커널 APC 배달을 사용하지 않도록 설정하므로 FltAcquireResourceExclusive를 호출하기 전에 KeEnterCriticalRegion 또는 FsRtlEnterFileSystem을 호출할 필요가 없습니다.
리소스를 획득한 후 해제하려면 FltReleaseResource를 호출합니다. FltAcquireResourceExclusive에 대한 모든 성공적인 호출은 FltReleaseResource에 대한 후속 호출과 일치해야 합니다.
공유 액세스에 대한 리소스를 얻으려면 FltAcquireResourceShared를 호출합니다.
시스템의 리소스 목록에서 리소스를 삭제하려면 ExDeleteResourceLite를 호출합니다.
다시 사용할 리소스를 초기화하려면 ExReinitializeResourceLite를 호출합니다.
ERESOURCE 구조에 대한 자세한 내용은 커널 아키텍처 디자인 가이드의 ERESOURCE 루틴 소개 를 참조하세요.
요구 사항
대상 플랫폼 |
유니버설 |
버전 |
모든 Windows 운영 체제의 Windows XP SP2, Windows Server 2003 SP1 이상 버전에서 사용할 수 있습니다. |
헤더 |
Fltkernel.h(Fltkernel.h 포함) |
Library |
FltMgr.lib |
IRQL |
<= APC_LEVEL |