다음을 통해 공유


페이징할 수 있는 코드 검색

IRQL >= DISPATCH_LEVEL 실행되는 코드를 검색하려면 PAGED_CODE 매크로를 사용합니다. 디버그 모드에서 코드가 IRQL >= DISPATCH_LEVEL 실행되는 경우 이 매크로는 메시지를 생성합니다. 다음 예제와 같이 매크로를 루틴의 첫 번째 문으로 추가하여 전체 루틴을 페이징된 코드로 표시합니다.

NTSTATUS 
MyDriverXxx( 
    IN OUT PVOID ParseContext OPTIONAL, 
    OUT PHANDLE Handle 
    ) 
{ 
    NTSTATUS Status; 
 
    PAGED_CODE(); 
. 
. 
. 
} 

이 작업을 올바르게 수행하려면 IRQL 강제 검사 옵션을 사용하도록 설정하여 완성된 드라이버에 대해 드라이버 검증 도구 를 실행합니다. 이 옵션을 사용하면 드라이버가 IRQL을 DISPATCH_LEVEL 이상으로 올릴 때마다 시스템이 모든 페이저블 코드를 자동으로 페이 아웃합니다. 드라이버 검증 도구는 이 영역에서 드라이버 버그를 빠르게 찾을 수 있습니다. 그렇지 않으면 이러한 버그는 일반적으로 고객만 찾을 수 있으며 재현하기가 매우 어려울 수 있습니다.