内存用法规则集 (NDIS)

使用这些规则验证驱动程序是否正确调用 NDIS 函数来分配和释放内存。

在本节中

主题 说明

NdisAllocateGenericObject

NdisAllocateGenericObject 规则指定按交替顺序调用 NdisAllocateGenericObjectNdisFreeGenericObject。 最终目标是确保在 MiniportHaltEx 结束时释放所有泛型对象。

NdisAllocateMdl

NdisAllocateMdl 规则指定按备用顺序调用 NdisAllocateMdlNdisFreeMdl。 最终目标是确保在 MiniportHaltEx 结束时释放所有 MDL。

NdisAllocateMemoryWithTagPriority

NdisAllocateMemoryWithTagPriority 规则指定驱动程序在不提供 Tag 的情况下不得调用 NdisAllocateMemoryWithTagPriority

每个内存分配都应使用唯一的池标记,以确保内核调试程序和驱动程序验证程序能够识别不同的已分配内存块。

NdisAllocateNetBuffer

NdisAllocateNetBuffer 规则指定按备用顺序调用 NdisAllocateNetBufferNdisFreeNetBuffer。 最终目标是确保在 MiniportHaltEx 结束时释放NET_BUFFER的所有实例。

NdisMFreeSharedMemory

无法从 MiniportShutdownEx 函数调用 NdisMFreeSharedMemory

NdisMIndicateStatusEx

驱动程序在从 MiniportHaltEx 函数返回后,不得调用 NdisMIndicateStatusEx

NdisMMapIoSpace

仅应在 MiniportInitializeEx 的上下文中调用 NdisMMapIoSpace 函数。

NdisMRegisterIoPortRange

微型端口驱动程序从其 MiniportInitializeEx 或 MINIPORT_ADD_DEVICE 函数调用 NdisMRegisterIoPortRangeMiniportInitializeEx 或 MINIPORT_ADD_DEVICE在调用 NdisMRegisterIoPortRange 之前,必须调用 NdisMSetMiniportAttributes

选择内存使用情况规则集

  1. 在 Microsoft Visual Studio 中选择驱动程序项目 (.vcxProj) 。 在“ 驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”

  2. 单击“ 规则 ”选项卡。在“ 规则集”下,选择“ 内存”“使用”。

    若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /检查 选项指定 MemoryUsage.sdv。 例如:

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

    有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷静态驱动程序验证程序命令 (MSBuild)