IWDFInterrupt::AcquireInterruptLock 메서드(wudfddi.h)
[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.
AcquireInterruptLock 메서드는 인터럽트 개체의 잠금을 유지하면서 실행되는 코드 시퀀스를 시작합니다.
통사론
void AcquireInterruptLock();
반환 값
없음
발언
드라이버가 acquireInterruptLock 호출하면 시스템은 프레임워크의 인터럽트 잠금을 획득합니다.
드라이버가 releaseInterruptLock 호출하면 시스템에서 인터럽트 잠금을 해제합니다.
드라이버가 선점되지 않고 인터럽트 서비스를 사용하지 않도록 설정하지 않고 몇 줄의 코드를 실행해야 하는 경우 AcquireInterruptLock 및 ReleaseInterruptLock 사용할 수 있습니다.
프레임워크가 드라이버의 OnInterruptEnable 콜백 함수를 호출하거나 프레임워크가 드라이버의 OnInterruptDisable 콜백 함수를 호출한 후에는 AcquireInterruptLock 호출할 수 없습니다.
드라이버가 AcquireInterruptLock호출한 후에는 ReleaseInterruptLock호출하기 전에 동일한 인터럽트 개체에 대해 메서드를 다시 호출해서는 안 됩니다.
I/O 큐 콜백 메서드와 같은 임의 스레드에서 실행하는 경우 드라이버는 IWDFInterrupt::AcquireInterruptLock 대신 IWDFInterrupt::TryToAcquireInterruptLock 호출해야 합니다. 예를 들어 드라이버는 IQueueCallbackRead::OnReadIWDFInterrupt::TryToAcquireInterruptLock 호출합니다.
이렇게 하면 다음 시나리오에 설명된 대로 교착 상태가 발생할 가능성을 방지할 수 있습니다.
- 디바이스가 중단되었는지 확인하기 위해 UMDF는 인터럽트 잠금이 유지된 상태에서 ISR 내에서 해당 버스로 I/O를 보냅니다.
- 버스 드라이버는 위의 요청을 받은 동일한 스레드에서 두 번째 요청을 완료합니다.
- 두 번째 요청의 완료 루틴은 UMDF 드라이버에 요청을 보냅니다.
- UMDF 드라이버의 I/O 디스패치 루틴은 IWDFInterrupt::AcquireInterruptLock 호출합니다. 그러면 인터럽트 잠금을 획득하려고 시도하는 교착 상태가 발생합니다.
수동 인터럽트 잠금에 대한 자세한 내용은 인터럽트 코드 동기화 참조하세요.
UMDF 드라이버에서 인터럽트 처리에 대한 자세한 내용은 하드웨어 액세스 및 인터럽트 처리 참조하세요.
요구 사항
요구 | 값 |
---|---|
지원 종료 | UMDF 2.0 이상에서는 사용할 수 없습니다. |
대상 플랫폼 | 바탕 화면 |
최소 UMDF 버전 | 1.11 |
헤더 | wudfddi.h |
DLL | WUDFx.dll |