Набор правил использования памяти (NDIS)

Используйте эти правила, чтобы убедиться, что драйвер правильно вызывает функции NDIS для выделения и освобождения памяти.

В этом разделе

Тема Описание

NdisAllocateGenericObject

Правило NdisAllocateGenericObject указывает, что NdisAllocateGenericObject и NdisFreeGenericObject вызываются в альтернативном порядке. Конечная цель заключается в том, чтобы убедиться, что все универсальные объекты освобождаются, когда MiniportHaltEx заканчивается.

NdisAllocateMdl

Правило NdisAllocateMdl указывает, что NdisAllocateMdl и NdisFreeMdl вызываются в альтернативном порядке. Конечная цель заключается в том, чтобы убедиться, что все MDLs освобождены, когда MiniportHaltEx заканчивается.

NdisAllocateMemoryWithTagPriority

Правило NdisAllocateMemoryWithTagPriority указывает, что драйвер не должен вызывать NdisAllocateMemoryWithTagPriority без предоставления тега.

Каждое выделение памяти должно использовать уникальный тег пула, чтобы убедиться, что отладчики ядра и средство проверки драйверов могут определить отдельный выделенный блок памяти.

NdisAllocateNetBuffer

Правило NdisAllocateNetBuffer указывает, что NdisAllocateNetBuffer и NdisFreeNetBuffer вызываются в альтернативном порядке. Конечная цель заключается в том, чтобы убедиться, что все экземпляры NET_BUFFER освобождены, когда MiniportHaltEx заканчивается.

NdisMFreeSharedMemory

NdisMFreeSharedMemory нельзя вызвать из функции MiniportShutdownEx .

NdisMIndicateStatusEx

Драйверу строго запрещено вызывать NdisMIndicateStatusEx после завершения выполнения функции MiniportHaltEx.

NdisMMapIoSpace

Функция NdisMMapIoSpace должна вызываться только в контексте MiniportInitializeEx.

NdisMRegisterIoPortRange

Драйвер минипорта вызывает NdisMRegisterIoPortRange из функций MiniportInitializeEx или MINIPORT_ADD_DEVICE. MiniportInitializeEx или MINIPORT_ADD_DEVICE должен вызывать NdisMSetMiniportAttributes перед вызовом NdisMRegisterIoPortRange.

Выбор набора правил использования памяти

  1. Выберите проект драйвера (.vcxProj) в Microsoft Visual Studio. В меню драйвера щелкните Запустить средство проверки статических драйверов....

  2. Перейдите на вкладку "Правила ". В разделе "Наборы правил" выберите MemoryUsage.

    Чтобы выбрать набор правил по умолчанию в окне командной строки разработчика Visual Studio, укажите MemoryUsage.sdv с параметром /check . Рассмотрим пример.

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

    Дополнительные сведения см. в статье Использование средства проверки статических драйверов для поиска дефектов в драйверах и команды средства проверки статических драйверов (MSBuild).