다음을 통해 공유


기타 규칙 집합(NDIS)

이러한 규칙을 사용하여 드라이버가 타이머, 일시 중지 작업, 키, 문자열 및 바인딩의 적절한 처리에 대한 일반적인 요구 사항 집합을 올바르게 따르는지 확인합니다.

이 부분에서는

주제 설명

CancelTimerObject

CancelTimerObject 규칙은 NdisSetTimerObjectNdisCancelTimerObject가 대체 순서로 호출되도록 지정합니다. 궁극적인 목표는 MiniportHaltEx 가 종료될 때 모든 타이머가 취소되도록 하는 것입니다.

MiniportPause_Return

MiniportPause_Return 규칙은 MiniportPause 콜백 함수가 일시 중지 작업이 완료된 경우에만 NDIS_STATUS_SUCCESS 반환하거나 미니포트 드라이버가 일시 중지 상태인 경우 NDIS_STATUS_PENDING 지정합니다. 다른 모든 반환된 상태는 유효하지 않습니다.

NdisOpenConfigurationEx

이 규칙은 NdisOpenConfigurationExNdisCloseConfiguration 이 대체 순서로 호출되는지 확인합니다. 궁극적인 목표는 MiniportHaltEx 가 종료되면 구성 핸들이 닫혀 있는지 확인하는 것입니다.

NdisQueryBindInstanceName

NdisQueryBindInstanceName은 친숙한 이름을 지정하는 문자열에 대해 메모리를 할당합니다. 호출자가 이 메모리 사용을 완료한 후 호출자는 NdisFreeMemory 함수를 호출하여 메모리를 해제해야 합니다.

NdisReEnumerateProtocolBindings

프로토콜 드라이버는 ProtocolBindAdapterEx 또는 ProtocolUnbindAdapterEx 함수의 컨텍스트 내에서 NdisReEnumerateProtocolBindings 호출할 수 없습니다. 또한 ProtocolNetPnPEventProtocolBindingContext 매개 변수가 NULL이 아닌 경우 프로토콜 드라이버는 ProtocolNetPnPEvent 함수의 컨텍스트 내에서 NdisReEnumerateProtocolBindings를 호출할 수 없습니다. 그러나 ProtocolBindingContext가 NULL인 경우 프로토콜 드라이버는 ProtocolNetPnPEvent의 컨텍스트 내에서 NdisReEnumerateProtocolBindings를 호출할 수 있습니다. NULL ProtocolBindingContext 값은 이벤트가 모든 바인딩에 적용됨을 나타냅니다.

PeriodicTimer

PeriodicTimer 규칙은 NdisSetTimerObject 함수의 MillisecondsPeriod 매개 변수에 0이 아닌 값이 지정된 경우 NdisCancelTimerObject의 호출자가 IRQL = PASSIVE_LEVEL 실행되도록 지정합니다. NdisSetTimerObject 함수의 MillisecondsPeriod 매개 변수가 0이면 NdisCancelTimerObject의 호출자가 IRQL <= DISPATCH_LEVEL 실행될 수 있습니다.

WriteErrorLog

WriteErrorLog 규칙은 NdisMAllocateSharedMemory 함수가 MiniportInitializeEx 함수에서 호출되는 경우 할당이 실패할 경우 드라이버도 NdisWriteErrorLogEntry 를 호출하도록 지정합니다.

기타 규칙 집합을 선택하려면

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

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

    Visual Studio 개발자 명령 프롬프트 창에서 기본 규칙 집합을 선택하려면 /check 옵션을 사용하여 Miscellaneous.sdv를 지정합니다. 다음은 그 예입니다.

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

    자세한 내용은 "정적 드라이버 검증 도구를 사용하여 드라이버의 결함을 찾는 방법""MSBuild의 정적 드라이버 검증 도구 명령"을 참조하세요.