Storport 驗證
Storport 驗證功能會監視 Storport 迷你埠驅動程式與埠驅動程式之間的互動。 如果迷你埠驅動程式誤用常式、不正確地回應埠驅動程式的要求,或花費太多時間來回應要求,就會發出錯誤檢查。
注意
Storport 驗證功能僅適用于 Windows Vista 和更新版本的 Windows。
Storport 驗證偵測到的違規
Storport 驗證功能可以偵測數個 Storport 常式誤用。 您也可以個別停用其中一些檢查。
如果 Storport 迷你埠驅動程式認可下列其中一個違規,Storport 驗證功能會發出錯誤檢查0xF1或錯誤檢查0xC4:
迷你埠驅動程式會將不正確的引數 (Null 指標) 傳遞至 StorPortInitialize 常式。
迷你埠驅動程式會呼叫 StorPortStallExecution ,並指定超過 0.1 秒的延遲,讓處理器停止時間過長。
StorPortFreeDeviceBase 只能從迷你埠驅動程式的 HwStorFindAdapter 常式呼叫。
StorPortGetUncachedExtension 只能從迷你埠驅動程式的 HwStorFindAdapter 常式呼叫,而且只能針對匯流排主機介面卡呼叫。 迷你埠必須先設定HW_INITIALIZATION_DATA ( Storport) 結構的SrbExtensionSize,才能呼叫StorPortGetUncachedExtension。
StorPortGetDeviceBase常式僅支援由系統隨插即用 (PnP) 管理員指派給驅動程式的位址。
迷你埠驅動程式會將不正確虛擬位址傳遞給其中一個 StorPortReadxxx 或 StorPortWritexxx 常式 (,例如 StorPortReadRegisterUchar 或 StorPortWritePortBufferUlong) 。 這通常表示提供的位址不會對應到一般緩衝區區域。 指定的 Register 或 Port 必須位於 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 機碼中,新增名為 Verifier 的子機碼。 如果 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 驗證,而不重新開機電腦。