다음을 통해 공유


IRQL 규칙 집합(Storport)

이러한 규칙을 사용하여 드라이버가 필요한 IRQL에서 DDI 호출을 만드는지 확인합니다.

IRQL 규칙을 따르지 않는 드라이버는 작업 중에 심각한 문제를 일으킬 수 있으며 이로 인해 교착 상태 또는 컴퓨터 충돌이 발생할 수 있습니다.

섹션 내용

항목 Description

IrqlDispatch

이 규칙은 다음 루틴이 IRQL = DISPATCH_LEVEL 호출되는지 확인합니다.

IrqlKeReleaseSpinLock

이 규칙은 KEReleaseSpinLockIRQL = DISPATCH_LEVEL 에서만 호출되는지 확인합니다. 또한 IRQL을 이전 IRQL 수준으로 설정해야 합니다. 일반적으로 이 호출에는 KeAcquireSpinLock 호출이 선행됩니다.

SpChangeIrql

이 규칙은 StorPort 콜백 루틴이 호출되는 수준과 동일한 IRQL 수준에서 반환되는지 확인합니다.

SpIrql

이 규칙은 TdiRegisterPnPHandlersTdiDeregisterPnPHandlers 루틴이 DISPATCH_LEVEL 미만의 IRQL에서만 호출되는지 확인합니다. 그러나 ExFreeToNPagedLookasideList 가 호출되면 규칙이 전달됩니다.

StorPortIrql

StorPortIrql 규칙은 StorPort 루틴이 올바른 IRQL 수준에서 호출되는지 확인합니다.

Irql 규칙 집합을 선택하려면

  1. Microsoft Visual Studio에서 드라이버 프로젝트(.vcxProj)를 선택합니다. 드라이버 메뉴에서 정적 드라이버 검증 도구 시작...을 클릭합니다.

  2. 규칙 탭을 클릭합니다. 규칙 집합에서 Irql을 선택합니다.

    Visual Studio 개발자 명령 프롬프트 창에서 기본 규칙 집합을 선택하려면 /검사 옵션을 사용하여 Irql.sdv를 지정합니다. 예를 들면 다음과 같습니다.

    msbuild /t:sdv /p:Inputs="/check:Irql.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    자세한 내용은 정적 드라이버 검증 도구로 드라이버의 결함 찾기MSBuild(정적 드라이버 검증 도구 명령)를 참조하세요.