WDM(DDI 사용 규칙 집합)
이러한 규칙을 사용하여 드라이버가 WDM DDI를 올바르게 사용하는지 확인합니다.
섹션 내용
항목 | Description |
---|---|
DebugBreakUsage 규칙은 드라이버가 DbgBreakPoint 또는 DbgBreakPointWithStatus를 호출하지 않도록 지정합니다. 이 규칙은 비 디버그 버전의 드라이버를 빌드하는 경우에만 적용됩니다. |
|
DoubleFetch 규칙은 사용자 모드 메모리 포인터에서 이중 인출을 확인합니다. 사용자 모드 메모리의 이중 커널 모드 액세스로 인해 경합 상태 보안 문제가 발생할 수 있습니다. 사용자 모드 데이터에 액세스할 때 커널 모드 코드는 사용자 모드 데이터의 복사본을 로컬로 만들고 사용자 모드 데이터에 여러 번 액세스하지 않도록 해야 합니다. 이렇게 하지 않으면 데이터가 처음 액세스된 후 변경될 수 있는 "이중 인출"이라는 유형의 문제가 발생합니다. |
|
NullCheck 규칙은 드라이버 코드 내의 NULL 값이 드라이버의 뒷부분에서 역참조되지 않는지 확인합니다. 이 규칙은 다음 조건 중 하나가 참인 경우 결함을 보고합니다.
NullCheck 규칙 위반을 사용하면 추적 트리 창에서 가장 관련성이 큰 코드 문이 강조 표시됩니다. 보고서 출력 작업에 대한 자세한 내용은 정적 드라이버 검증 도구 보고서 및 추적 뷰어 이해를 참조하세요. |
|
SafeStrings 규칙은 드라이버가 의도하지 않거나 악의적인 침입으로부터 시스템을 보호하는 문자열 조작 함수만 호출하도록 지정합니다. 드라이버에 대한 이러한 안전 문자열 함수는 Ntstrsafe.h에 정의되어 있습니다. |
|
ObsoleteDDIs 규칙은 드라이버가 FsRtlPrivateLock을 호출하지 않도록 지정합니다. 이 함수는 사용되지 않습니다. 대신 FsRtlFastLock 을 사용합니다. |
DDI 사용 규칙 집합을 선택하려면
Microsoft Visual Studio에서 드라이버 프로젝트(.vcxProj)를 선택합니다. 드라이버 메뉴에서 정적 드라이버 검증 도구 시작...을 클릭합니다.
규칙 탭을 클릭합니다. 규칙 집합에서 DDIUsage를 선택합니다.
Visual Studio 개발자 명령 프롬프트 창에서 기본 규칙 집합을 선택하려면 /검사 옵션을 사용하여 DDIUsage.sdv를 지정합니다. 예를 들면 다음과 같습니다.
msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
자세한 내용은 정적 드라이버 검증 도구로 드라이버의 결함 찾기 및 MSBuild(정적 드라이버 검증 도구 명령)를 참조하세요.