内存用法规则集 (NDIS)
使用这些规则验证驱动程序是否正确调用 NDIS 函数来分配和释放内存。
在本节中
主题 | 说明 |
---|---|
NdisAllocateGenericObject 规则指定按交替顺序调用 NdisAllocateGenericObject 和 NdisFreeGenericObject。 最终目标是确保在 MiniportHaltEx 结束时释放所有泛型对象。 |
|
NdisAllocateMdl 规则指定按备用顺序调用 NdisAllocateMdl 和 NdisFreeMdl。 最终目标是确保在 MiniportHaltEx 结束时释放所有 MDL。 |
|
NdisAllocateMemoryWithTagPriority 规则指定驱动程序在不提供 Tag 的情况下不得调用 NdisAllocateMemoryWithTagPriority。 每个内存分配都应使用唯一的池标记,以确保内核调试程序和驱动程序验证程序能够识别不同的已分配内存块。 |
|
NdisAllocateNetBuffer 规则指定按备用顺序调用 NdisAllocateNetBuffer 和 NdisFreeNetBuffer。 最终目标是确保在 MiniportHaltEx 结束时释放NET_BUFFER的所有实例。 |
|
无法从 MiniportShutdownEx 函数调用 NdisMFreeSharedMemory。 |
|
驱动程序在从 MiniportHaltEx 函数返回后,不得调用 NdisMIndicateStatusEx。 |
|
仅应在 MiniportInitializeEx 的上下文中调用 NdisMMapIoSpace 函数。 |
|
微型端口驱动程序从其 MiniportInitializeEx 或 MINIPORT_ADD_DEVICE 函数调用 NdisMRegisterIoPortRange。 MiniportInitializeEx 或 MINIPORT_ADD_DEVICE在调用 NdisMRegisterIoPortRange 之前,必须调用 NdisMSetMiniportAttributes。 |
选择内存使用情况规则集
在 Microsoft Visual Studio 中选择驱动程序项目 (.vcxProj) 。 在“ 驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”。
单击“ 规则 ”选项卡。在“ 规则集”下,选择“ 内存”“使用”。
若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /检查 选项指定 MemoryUsage.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:MemoryUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷 和 静态驱动程序验证程序命令 (MSBuild) 。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈