SrbProcessing 规则集 (Storport)
使用这些规则验证驱动程序是否正确处理 SRB 请求。
本节内容
主题 | 说明 |
---|---|
此规则验证此微型端口是否处于 全双工 模式。 根据 StorPort 微型端口模型生成的任何驱动程序都必须处于 全双工 模式。 仅当将现有 SCSI 驱动程序移植到 StorPort 时,才应使用半双工 。 |
|
此规则验证是否未在 StartIo 内执行等待或数据分配。 |
|
此规则验证驱动程序的 HwStorFindAdapter 和 VirtualHwStorFindAdapter 的实现是否返回有效状态。 有效状态为下列状态之一: SP_RETURN_FOUND、 SP_RETURN_ERROR、 SP_RETURN_BAD_CONFIG或 SP_RETURN_NOT_FOUND。 |
|
此规则验证微型端口不能尝试在解除分配的缓冲区上调用 StorPortFreePool。 |
|
此规则验证微型端口不得尝试在分配的缓冲区上调用 StorPortAllocatePool ,而无需先解除分配它。 |
|
此规则验证 StorPort 微型端口的 StorPortBuildIo 例程是否返回 FAL标准版,则有关 SRB 不会传递给 StartIo。 (在这种情况下,微型端口驱动程序必须通过调用完成 SRB使用 StorPortBuildIo 或其他位置的 RequestComplete通知类型的 StorPortNotification。 |
|
此规则验证微型端口未调用 StorPortCompleteRequest 。 不建议使用 StorPortCompleteRequest;微型端口应改为使用 notificationType = RequestComplete 调用 StorPortNotification。 |
|
此规则验证 StorPortEnablePassiveInitialization 是否未从除 HwInitialize 以外的任何 StorPort 微型端口驱动程序例程调用。 |
|
HwStorFindAdapter 例程必须在PORT_CONFIGURATION_INFORMATION结构中设置 MaximumTransferLength 和 NumberOfPhysicalBreaks 字段。 默认情况下,这两个字段的值SP_UNINITIALIZED_VALUE。 如果其中任一字段在从 FindAdapter 退出时仍设置为SP_UNINITIALIZED_VALUE,驱动程序将失败规则。 |
|
此规则验证对 StorPortNotification 的调用仅使用允许的通知类型(即记录的)。 |
|
如果可以直接从 HW 适配器控制入口点调用 HW 初始化入口点,则不应在 Storport 驱动程序的 HW 初始化入口点内调用 StorPortEnablePassiveInitialization 。 |
|
此规则验证传递给 StorPortInitializePerfOpts 的 PerfConfigData 参数是否为 NULL。 |
|
等待或数据分配绝不能在微型端口的 StartIo 例程中执行。 如果驱动程序调用 StorPortStallExecution 或其他涉及耗时操作的函数,驱动程序将失败规则。 由于 StartIo 已同步,因此这些调用应在 BuildIo 中完成。 |
|
如果调用 StorPortNotification(RequestTimerCall),则必须定义HW_TIMER例程。 |
选择 SrbProcessing 规则集
在 Microsoft Visual Studio 中选择驱动程序项目(.vcxProj)。 在 “驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”。
单击“规则”选项卡。在“规则集”下,选择“SrbProcessing”。
若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /检查 选项指定 SrbProcessing.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:SrbProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
有关详细信息,请参阅使用静态驱动程序验证程序查找驱动程序和静态驱动程序验证程序命令中的缺陷(MSBuild)。