SrbProcessing 规则集 (Storport)

使用这些规则验证驱动程序是否正确处理 SRB 请求。

本节内容

主题 说明

SpDuplex

此规则验证此微型端口是否处于 全双工 模式。 根据 StorPort 微型端口模型生成的任何驱动程序都必须处于 全双工 模式。 仅当将现有 SCSI 驱动程序移植到 StorPort 时,才应使用半双工

SpNoWait

此规则验证是否未在 StartIo执行等待或数据分配。

SpReturnValue

此规则验证驱动程序的 HwStorFindAdapterVirtualHwStorFindAdapter 的实现是否返回有效状态。 有效状态为下列状态之一: SP_RETURN_FOUNDSP_RETURN_ERRORSP_RETURN_BAD_CONFIGSP_RETURN_NOT_FOUND

StorPortAllocatePool

此规则验证微型端口不能尝试在解除分配的缓冲区上调用 StorPortFreePool

StorPortAllocatePool2

此规则验证微型端口不得尝试在分配的缓冲区上调用 StorPortAllocatePool ,而无需先解除分配它。

StorPortBuildIo

此规则验证 StorPort 微型端口的 StorPortBuildIo 例程是否返回 FAL标准版,则有关 SRB 不会传递给 StartIo (在这种情况下,微型端口驱动程序必须通过调用完成 SRB使用 StorPortBuildIo 或其他位置的 RequestComplete通知类型的 StorPortNotification

StorPortCompleteRequest

此规则验证微型端口未调用 StorPortCompleteRequest不建议使用 StorPortCompleteRequest;微型端口应改为使用 notificationType = RequestComplete 调用 StorPortNotification

StorPortEnablePassive

此规则验证 StorPortEnablePassiveInitialization 是否未从除 HwInitialize 以外的任何 StorPort 微型端口驱动程序例程调用。

StorPortFindAdapter

HwStorFindAdapter 例程必须在PORT_CONFIGURATION_INFORMATION结构中设置 MaximumTransferLengthNumberOfPhysicalBreaks 字段。 默认情况下,这两个字段的值SP_UNINITIALIZED_VALUE。 如果其中任一字段在从 FindAdapter 退出时仍设置为SP_UNINITIALIZED_VALUE,驱动程序将失败规则。

StorPortNotification2

此规则验证对 StorPortNotification 的调用仅使用允许的通知类型(即记录的)。

StorPortPassiveFromHwInit

如果可以直接从 HW 适配器控制入口点调用 HW 初始化入口点,则不应在 Storport 驱动程序的 HW 初始化入口点内调用 StorPortEnablePassiveInitialization

StorPortPerfOpts

此规则验证传递给 StorPortInitializePerfOpts 的 PerfConfigData 参数是否为 NULL。

StorPortStartIo

等待或数据分配绝不能在微型端口的 StartIo 例程中执行。 如果驱动程序调用 StorPortStallExecution 或其他涉及耗时操作的函数,驱动程序将失败规则。 由于 StartIo 已同步,因此这些调用应在 BuildIo完成。

StorPortTimer

如果调用 StorPortNotification(RequestTimerCall),则必须定义HW_TIMER例程。

选择 SrbProcessing 规则集

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

  2. 单击“规则”选项卡。在“规则集”,选择“SrbProcessing”。

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

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

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