DDI 用法规则集 (NDIS)
使用这些规则验证驱动程序是否正确使用 NDIS DDI。
在本节中
主题 | 说明 |
---|---|
Init_DeRegisterInterrupt规则指定,如果在 MPInitilize 期间至少调用一次 NdisMRegisterInterruptEx,则应在 MPHaltEx 中至少调用一次 NdisMDeregisterInterruptEx。 |
|
Init_NdisAllocateIoWorkItem规则指定,如果在 MiniportInitializeEx 期间至少调用 NdisAllocateIoWorkItem 一次,则 NdisFreeIoWorkItem 函数应:
|
|
Init_RegisterInterrupt 规则指定,如果初始化过程中或微型端口驱动程序停止期间出现问题,则必须撤消通常在初始化期间发生的中断注册。 如果在 MiniportInitializeEx 期间至少调用一次 NdisMRegisterInterruptEx,则必须在 MiniportHaltEx 中至少调用一次 NdisMDeregisterInterruptEx 函数。 |
|
Init_RegisterSG 规则指定,如果初始化过程中或微型端口驱动程序停止期间出现问题,则必须撤消通常在初始化期间发生的分散收集列表 (SG) 注册。 如果在 MiniportInitializeEx 期间至少调用 NdisMRegisterScatterGatherDma 一次,则应在 MiniportHaltEx 中至少调用一次 NdisMDeregisterScatterGatherDma 函数。 |
|
筛选器驱动程序必须从其 FilterDriverUnload 例程调用 NdisFDeregisterFilterDriver。 |
|
在 NdisMDeregisterInterruptEx 返回控件后,微型端口驱动程序无法调用 NdisMSynchronizeWithInterruptEx 函数。 |
|
NullCheck 规则验证驱动程序代码中的 NULL 值稍后不会在驱动程序中取消引用。 如果满足以下任一条件,则此规则将报告缺陷:
如果存在 NullCheck 规则冲突,则跟踪树窗格中突出显示了最相关的代码语句。 有关使用报表输出的详细信息,请参阅 静态驱动程序验证程序报表 和 了解跟踪查看器。 |
选择 DDI 使用规则集
在 Microsoft Visual Studio 中选择驱动程序项目 (.vcxProj) 。 在“ 驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”。
单击“ 规则 ”选项卡。在“ 规则集”下,选择“ DDIUsage”。
若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /检查 选项指定 DDIUsage.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷 和 静态驱动程序验证程序命令 (MSBuild) 。