다음을 통해 공유


DDI 사용 규칙 집합(NDIS)

이러한 규칙을 사용하여 드라이버가 NDIS DDI를 올바르게 사용하는지 확인합니다.

섹션 내용

항목 Description

Init_DeRegisterInterrupt

Init_DeRegisterInterrupt 규칙은 MPInitilize 중에 NdisMRegisterInterruptEx가 한 번 이상 호출되는 경우 MPHaltEx에서 NdisMDeregisterInterruptEx를 한 번 이상 호출하도록 지정합니다.

Init_NdisAllocateIoWorkItem

Init_NdisAllocateIoWorkItem 규칙은 MiniportInitializeEx 중에 NdisAllocateIoWorkItem이 한 번 이상 호출되는 경우 NdisFreeIoWorkItem 함수는 다음을 수행해야 한다고 지정합니다.

Init_RegisterInterrupt

Init_RegisterInterrupt 규칙은 초기화 프로세스에서 문제가 발생하거나 미니포트 드라이버를 중지하는 동안 일반적으로 발생하는 인터럽트 등록을 취소해야 한다고 지정합니다.

MiniportInitializeEx 중에 NdisMRegisterInterruptEx가 한 번 이상 호출되는 경우 MiniportHaltEx에서 NdisMDeregisterInterruptEx 함수를 한 번 이상 호출해야 합니다.

Init_RegisterSG

Init_RegisterSG 규칙은 초기화 프로세스에서 문제가 발생하거나 미니포트 드라이버를 중지하는 동안 일반적으로 발생하는 SG(분산-수집) 목록의 등록을 취소해야 한다고 지정합니다.

MiniportInitializeEx 중에 NdisMRegisterScatterGatherDma가 한 번 이상 호출되면 MiniportHaltEx에서 NdisMDeregisterScatterGatherDma 함수를 한 번 이상 호출해야 합니다.

NdisFDeregisterFilterDriver

필터 드라이버는 FilterDriverUnload 루틴에서 NdisFDeregisterFilterDriver를 호출해야 합니다.

NdisMDeregisterInterruptEx

NdisMDeregisterInterruptEx가 컨트롤을 반환하면 미니포트 드라이버는 NdisMSynchronizeWithInterruptEx 함수를 호출할 수 없습니다.

NullCheck

NullCheck 규칙은 드라이버 코드 내의 NULL 값이 드라이버의 뒷부분에서 역참조되지 않는지 확인합니다. 이 규칙은 다음 조건 중 하나가 참인 경우 결함을 보고합니다.

  • 나중에 역참조되는 NULL 할당이 있습니다.
  • 나중에 역참조되는 NULL일 수 있는 드라이버의 프로시저에 전역/매개 변수가 있으며, 드라이버에는 포인터의 초기 값이 NULL일 수 있음을 시사하는 명시적 검사 있습니다.

NullCheck 규칙 위반을 사용하면 추적 트리 창에서 가장 관련성이 큰 코드 문이 강조 표시됩니다. 보고서 출력 작업에 대한 자세한 내용은 정적 드라이버 검증 도구 보고서추적 뷰어 이해를 참조하세요.

DDI 사용 규칙 집합을 선택하려면

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

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

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

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

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