티스토리 뷰

호출 KeAcquireSpinLock을 하거나 KeAcquireInStackQueuedSpinLock는 에 대응하는 통화까지 DISPATCH_LEVEL 현재 프로세서의 IRQL 설정 KeReleaseSpinLock 또는 KeReleaseInStackQueuedSpinLock 것은 이전 IRQL을 복원한다. 따라서 드라이버는 KeAcquireSpinLock 또는 KeAcquireInStackQueuedSpinLock 을 호출 할 때 IRQL <= DISPATCH_LEVEL에서 실행 중이어야합니다 .
KeAcquireSpinLockAtDpcLevel , KeAcquireInStackQueuedSpinLockAtDpcLevel , KeReleaseInStackQueuedSpinLockFromDpcLevel 및 KeReleaseSpinLockFromDpcLevel의 호출자 는 이미 IRQL = DISPATCH_LEVEL에서 실행 중이기 때문에 더 빨리 실행되므로 이러한 지원 루틴은 현재 프로세서에서 IRQL을 재설정 할 필요가 없습니다. 따라서 대부분의 Windows 플랫폼 에서는 DISPATCH_LEVEL 미만의 IRQL에서 실행하는 동안 KeAcquireSpinLockAtDpcLevel 또는 KeAcquireInStackQueuedSpinLockAtDpcLevel 을 호출하는 것은 치명적인 오류입니다 . KeReleaseSpinLockFromDpcLevel 을 호출 하여 KeAcquireSpinLock 으로 획득 한 스핀 잠금을 해제하면 오류가 발생합니다. 발신자의 원래 IRQL이 복원되지 않기 때문입니다.
ExInterlocked Xxx 와 같은 이그제큐티브 스핀 잠금을 유지하는 루틴은 일반적으로 스핀 잠금을 해제하고 호출자에게 제어를 반환 할 때까지 IRQL = DISPATCH_LEVEL에서 실행됩니다. 그러나 운전자에게는 가능합니다인터럽트 서비스 일상적인 SynchCritSection루틴에 전달 된 스핀 잠금이 ISR 및 SynchCritSection 루틴에의해 독점적으로 사용되는한 ExInterlocked Xxx List 루틴과 같은 특정 ExInterlocked Xxx 루틴 을 호출하는 루틴 (DIRQL에서 실행) .
인터럽트 스핀 잠금을 보유한 각 루틴은 연관된 인터럽트 오브젝트 세트의 DIRQL에서 실행됩니다. 따라서 드라이버는 KeAcquireSpinLock 및 KeReleaseSpinLock 또는 ISR 또는 SynchCritSection 루틴 에서 Executive 스핀 잠금을 사용하는 다른 루틴을 호출해서는 안됩니다 . 이러한 호출은 시스템 교착 상태를 유발하여 사용자가 시스템을 재부팅해야하는 오류입니다. 드라이버의 ISR 또는 SynchCritSection 루틴이 ExInterlocked Xxx List 루틴을 호출 하면 드라이버는 Ke Xxx SpinLock 을 호출 할 때 ExInterlocked Xxx List 루틴에 전달 된 스핀 잠금을 재사용 할 수 없습니다.또는 Ke Xxx SpinLock Xxx DpcLevel 지원 루틴.
드라이버에 다중 벡터 ISR 또는 둘 이상의 ISR이있는 경우 해당 루틴은 IRQL 에서 연결된 인터럽트 객체가 연결될 때 지정된 SynchronizeIrql 값 까지 실행하는 동안 KeSynchronizeExecution 을 호출 할 수 있습니다 .
'프로그래밍' 카테고리의 다른 글
| winapi 쓰레드 생성하기 (0) | 2022.01.27 |
|---|---|
| winapi 프로세스 생성, exit code 확인하기 (0) | 2022.01.27 |
| 스핀 락 초기화 (0) | 2020.03.02 |
| 스핀 락 및 보호 된 데이터를위한 스토리지 제공 (0) | 2020.03.02 |
| 커널모드 동기화 기법 - 스핀 락 (0) | 2020.03.02 |
- Total
- Today
- Yesterday
- 부동산
- ChatGPT
- openai
- 프로그래밍
- go
- reactjs
- Python
- MacOS
- CSS
- Frontend
- 오리역
- 재테크
- 주식투자
- 생각
- Backend
- JavaScript
- react
- ios
- Linux
- 부동산분석
- 카톡업데이트
- 카카오톡
- Java
- Spring
- AI
- SWiFT
- golang
- 내집마련
- HTML
- 개발자
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |