티스토리 뷰

반응형

장치 시작의 일부로, 드라이버는 스핀 잠금으로 보호 된 데이터 또는 리소스 및 해당 스핀 잠금에 대해 상주 스토리지를 다음 위치 중 하나에 할당해야합니다.

  • IoCreateDevice 를 호출하여 드라이버가 설정 한 장치 개체의 장치 확장

  • IoCreateController 를 호출하여 드라이버가 설정하는 컨트롤러 객체의 컨트롤러 확장

  • ExAllocatePoolWithTag 를 호출하여 드라이버가 얻는 비 페이징 시스템 공간 메모리

스핀 잠금을 유지 한 상태에서 페이징 가능한 데이터에 액세스하려고하면 해당 페이지가 없으면 치명적인 페이지 오류가 발생합니다. 페이지 잠금 가능한 메모리에 저장되어 있고 현재 페이지 아웃되어 있기 때문에 잘못된 스핀 잠금을 참조하면 치명적인 페이지 오류가 발생합니다.

드라이버는 다음과 같은 종류의 임원 용 스핀 잠금 장치 각각에 스토리지를 제공해야합니다.

  • Ke Xxx 스핀 잠금 루틴을 사용하여 드라이버가 명시 적으로 획득 및 해제하는 스핀 잠금.

  • ExInterlocked Xxx 루틴 의 매개 변수로 사용되는 스핀 잠금 .

드라이버는 ISR 또는 SynchCritSection 루틴에서 ExInterlocked Xxx 루틴을 호출 할 수 있지만 Ke Xxx 루틴을 사용하여 DISPATCH_LEVEL보다 큰 IRQL에서 스핀 잠금을 획득 및 해제 할 수는 없습니다 . 따라서 Ke Xxx SpinLock 호출  ExInterlocked Xxx 루틴 호출 사이에서 스핀 잠금을 재사용하는 드라이버 는 IRQL <= DISPATCH_LEVEL에서 실행하는 동안 모든 호출을 수행해야합니다.

두 루틴이 동일한 IRQL에서 스핀 잠금을 사용하는 한 드라이버는 다른 ExInterlocked Xxx 루틴 과 동일한 스핀 잠금을 ExInterlockedInsertHeadList에 전달할 수 있습니다 . 스핀 잠금 사용이 성능에 미치는 영향에 대한 자세한 내용은 스핀 잠금 사용 : 예를 참조하십시오 .

이그제큐티브 스핀 잠금을위한 스토리지 외에, 장치 드라이버는 멀티 벡터 ISR 또는 둘 이상의 ISR이있는 경우 인터럽트 객체와 연관 될 다른 스핀 잠금을위한 스토리지를 제공해야합니다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
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
글 보관함