다음을 통해 공유


메모리 사용 규칙 집합(NDIS)

이러한 규칙을 사용하여 드라이버가 NDIS 함수를 올바르게 호출하여 메모리를 할당하고 해제했는지 확인합니다.

섹션 내용

항목 Description

NdisAllocateGenericObject

NdisAllocateGenericObject 규칙은 NdisAllocateGenericObjectNdisFreeGenericObject가 대체 순서로 호출되도록 지정합니다. 궁극적인 목표는 MiniportHaltEx 가 종료되면 모든 제네릭 개체가 해제되도록 하는 것입니다.

NdisAllocateMdl

NdisAllocateMdl 규칙은 NdisAllocateMdlNdisFreeMdl이 대체 순서로 호출되도록 지정합니다. 궁극적인 목표는 MiniportHaltEx 가 종료되면 모든 MDL이 해제되도록 하는 것입니다.

NdisAllocateMemoryWithTagPriority

NdisAllocateMemoryWithTagPriority 규칙은 드라이버가 태그를 제공하지 않고 NdisAllocateMemoryWithTagPriority를 호출하지 않도록 지정합니다.

모든 메모리 할당은 커널 디버거와 드라이버 검증 도구가 고유하게 할당된 메모리 블록을 식별할 수 있도록 고유한 풀 태그를 사용해야 합니다.

NdisAllocateNetBuffer

NdisAllocateNetBuffer 규칙은 NdisAllocateNetBufferNdisFreeNetBuffer가 대체 순서로 호출되도록 지정합니다. 궁극적인 목표는 MiniportHaltEx가 종료되면 NET_BUFFER 모든 인스턴스가 해제되도록 하는 것입니다.

NdisMFreeSharedMemory

MiniportShutdownEx 함수에서는 NdisMFreeSharedMemory를 호출할 수 없습니다.

NdisMIndicateStatusEx

MiniportHaltEx 함수에서 반환된 후 드라이버는 NdisMIndicateStatusEx를 호출하지 않아야 합니다.

NdisMMapIoSpace

NdisMMapIoSpace 함수는 MiniportInitializeEx의 컨텍스트에서만 호출되어야 합니다.

NdisMRegisterIoPortRange

미니포트 드라이버는 MiniportInitializeEx 또는 MINIPORT_ADD_DEVICE 함수에서 NdisMRegisterIoPortRange를 호출합니다. MiniportInitializeEx 또는 MINIPORT_ADD_DEVICE NdisMRegisterIoPortRange를 호출하기 전에 NdisMSetMiniportAttributes를 호출해야 합니다.

메모리 사용 규칙 집합을 선택하려면

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

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

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

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

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