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::OnRead에서 IWDFInterrupt::TryToAcquireInterruptLock을 호출합니다.
이렇게 하면 다음 시나리오에 설명된 대로 교착 상태가 발생할 가능성이 방지됩니다.
- 디바이스가 중단되었는지 확인하기 위해 UMDF는 인터럽트 잠금이 유지된 상태에서 ISR 내에서 버스로 I/O를 보냅니다.
- 버스 드라이버는 위의 요청을 받은 동일한 스레드에서 두 번째 요청을 완료합니다.
- 두 번째 요청의 완료 루틴은 UMDF 드라이버에 요청을 보냅니다.
- UMDF 드라이버의 I/O 디스패치 루틴은 IWDFInterrupt::AcquireInterruptLock을 호출한 다음, 인터럽트 잠금을 획득하려고 시도하는 교착 상태를 호출합니다.
수동 인터럽트 잠금에 대한 자세한 내용은 인터럽트 코드 동기화를 참조하세요.
UMDF 드라이버에서 인터럽트 처리에 대한 자세한 내용은 하드웨어 액세스 및 인터럽트 처리를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원 종료 | UMDF 2.0 이상에서는 사용할 수 없습니다. |
대상 플랫폼 | 데스크톱 |
최소 UMDF 버전 | 1.11 |
머리글 | wudfddi.h |
DLL | WUDFx.dll |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기