Storport 验证

Storport 验证功能监视 Storport 微型端口驱动程序与端口驱动程序之间的交互。 如果微型端口驱动程序滥用例程、错误地响应端口驱动程序的请求,或花费过多的时间响应请求,则会发出 bug 检查。

注释

Storport 验证功能仅在 Windows Vista 和更高版本的 Windows 中可用。

Storport 验证检测到的违规

Storport 验证功能可以检测 Storport 例程的多个误用。 还可以单独禁用其中一些检查。

如果 Storport 微型端口驱动程序违反以下规定之一,则 Storport 验证功能会发出错误检查 0xF1 或错误检查 0xC4:

  • 微型端口驱动程序将错误的参数(NULL 指针)传递给 StorPortInitialize 例程。

  • 小型端口驱动程序调用 StorPortStallExecution,且指定超过 0.1 秒的延迟,导致处理器暂停过长时间。

  • StorPortFreeDeviceBase 只能在微型端口驱动程序的 HwStorFindAdapter 例程中调用。

  • StorPortGetUncachedExtension 只能从微型端口驱动程序的 HwStorFindAdapter 例程调用,并且只能为总线主适配器调用。 在调用 StorPortGetUncachedExtension 之前,微型端口必须设置 HW_INITIALIZATION_DATA (Storport) 结构的 SrbExtensionSize

  • StorPortGetDeviceBase 例程仅支持由系统即插即用(PnP)管理器分配给驱动程序的地址。

  • 微型端口驱动程序将无效的虚拟地址传递给 StorPortReadxxxStorPortWritexxx 例程(例如 StorPortReadRegisterUcharStorPortWritePortBufferUlong)。 这通常意味着提供的地址不会映射到公共缓冲区区域。 指定的 寄存器端口 必须位于 StorPortGetDeviceBase 例程返回的映射内存空间范围内。 此检查仅在基于 x86 的系统上受支持。

有关 Storport 验证使用的错误检查参数的列表,请参阅 错误检查 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION)。 除了错误检查 0xF1,Storport 验证还使用 错误检查 0xC4(DRIVER_VERIFIER_DETECTED_VIOLATION)。

注释

错误检查 0xF1 用于 SCSI 验证和 Storport 验证。

激活 Storport 验证选项

激活 Storport 验证选项的过程不同于激活其他驱动程序验证程序选项的过程。

  1. 使用驱动程序验证程序管理器或 Verifier.exe 命令行启动微型端口驱动程序的验证。 由于 Storport 验证不能作为选项提供,因此必须至少选择 一个其他 驱动程序验证程序选项。 有关详细信息,请参阅 “选择驱动程序验证程序选项 ”和 “选择要验证的驱动程序”。

  2. 使用 regedit.exe打开注册表。 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorPort 密钥中,添加名为 验证程序的子项。 如果 StorPort 密钥不存在,则需要创建它。 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\STORPort\Verifier 键中,添加名为 VerifyLevel的REG_DWORD条目。 分配给此条目的值将确定哪些 Storport 验证测试将处于活动状态。 值0x1将提供最大验证。

  3. 重启电脑

如果 VerifyLevel 值不存在或等于0xFFFFFFFF,则将禁用 Storport 验证。

在不重新启动的情况下激活

一般情况下,您无法在任何 Windows 操作系统上激活或停用 Storport 验证而无需重启计算机。 StorPort.sys 驱动程序仅在加载时读取 VerifyLevel 注册表项,这通常是在启动时。 但是,如果在添加注册表项时未加载 StorPort.sys 驱动程序,或者卸载并重新加载该驱动程序,则可以在 Windows Vista 和更高版本的 Windows 上启用 Storport 验证,而无需重启计算机。