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)管理器分配给驱动程序的地址。
微型端口驱动程序将无效的虚拟地址传递给 StorPortReadxxx 或 StorPortWritexxx 例程(例如 StorPortReadRegisterUchar 或 StorPortWritePortBufferUlong)。 这通常意味着提供的地址不会映射到公共缓冲区区域。 指定的 寄存器 或 端口 必须位于 StorPortGetDeviceBase 例程返回的映射内存空间范围内。 此检查仅在基于 x86 的系统上受支持。
有关 Storport 验证使用的错误检查参数的列表,请参阅 错误检查 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION)。 除了错误检查 0xF1,Storport 验证还使用 错误检查 0xC4(DRIVER_VERIFIER_DETECTED_VIOLATION)。
注释
错误检查 0xF1 用于 SCSI 验证和 Storport 验证。
激活 Storport 验证选项
激活 Storport 验证选项的过程不同于激活其他驱动程序验证程序选项的过程。
使用驱动程序验证程序管理器或 Verifier.exe 命令行启动微型端口驱动程序的验证。 由于 Storport 验证不能作为选项提供,因此必须至少选择 一个其他 驱动程序验证程序选项。 有关详细信息,请参阅 “选择驱动程序验证程序选项 ”和 “选择要验证的驱动程序”。
使用 regedit.exe打开注册表。 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorPort 密钥中,添加名为 验证程序的子项。 如果 StorPort 密钥不存在,则需要创建它。 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\STORPort\Verifier 键中,添加名为 VerifyLevel的REG_DWORD条目。 分配给此条目的值将确定哪些 Storport 验证测试将处于活动状态。 值0x1将提供最大验证。
重启电脑
如果 VerifyLevel 值不存在或等于0xFFFFFFFF,则将禁用 Storport 验证。
在不重新启动的情况下激活
一般情况下,您无法在任何 Windows 操作系统上激活或停用 Storport 验证而无需重启计算机。 StorPort.sys 驱动程序仅在加载时读取 VerifyLevel 注册表项,这通常是在启动时。 但是,如果在添加注册表项时未加载 StorPort.sys 驱动程序,或者卸载并重新加载该驱动程序,则可以在 Windows Vista 和更高版本的 Windows 上启用 Storport 验证,而无需重启计算机。