Поделиться через


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

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

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

Раздел Описание

NdisAllocateGenericObject

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

NdisAllocateMdl

Правило NdisAllocateMdl указывает, что NdisAllocateMdl и NdisFreeMdl вызываются в альтернативном порядке. Конечная цель — убедиться, что все многомерные библиотеки освобождаются по окончании 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 с параметром /проверка. Пример:

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

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