windbg-kernel-verifier-triage

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Driver Verifier Triage

Driver Verifier 诊断

Load
windbg-diagnostic-method
first
if it is not already loaded in this conversation, and apply it throughout for evidence ranking, hypothesis testing, confidence calibration, independent review, and report validation. This skill adds the bug-family-specific commands and evidence requirements.
如果尚未在当前对话中加载
windbg-diagnostic-method
,请先加载它
,并在整个过程中应用它,以进行证据排序、假设测试、置信度校准、独立审查和报告验证。该 skill 会补充针对特定 bug family 的命令和证据要求。

Scope

范围

Driver Verifier checks kernel driver contracts. Application Verifier is a different user-mode facility; use
windbg-user-heap-corruption-investigation
for its heap stops. Enabled Driver Verifier flags alone do not prove a contract violation.
Use this skill when a verifier-class bugcheck or analysis identifies an actual violation. Examples include
0xC4
,
0xC9
, and
0xE6
; inspect the exact code and parameters rather than treating every stop as the same family.
Driver Verifier 检查内核驱动程序契约。Application Verifier 是另一种用户模式设施;对于其堆停止问题,请使用
windbg-user-heap-corruption-investigation
。仅启用 Driver Verifier flags 并不能证明发生了契约违规。
当 verifier 类 bugcheck 或分析识别出实际违规时,使用此 skill。例如
0xC4
、
0xC9
和
0xE6
;应检查准确的代码和参数,而不是将每次停止都视为同一 bug family。

Workflow

工作流

1. Preserve code, subcode, and active configuration

1. 保留代码、子代码和当前配置

text
!analyze -v
.bugcheck
!verifier
k
Record the bugcheck, subtype/subcode, offending operation and driver when reported, enabled checks, target build, and evidence availability. Decode each subcode against its documented contract. Existing output may be incomplete in a small dump; do not discard captured evidence merely because live configuration is now different.
text
!analyze -v
.bugcheck
!verifier
k
记录 bugcheck、subtype/subcode、报告时指出的违规操作和驱动程序、已启用的检查、目标 build 以及证据的可用情况。根据已记录的契约解码每个子代码。小型转储中的现有输出可能不完整;不要仅仅因为当前配置不同就丢弃已捕获的证据。

2. Decode available I/O history

2. 解码可用的 I/O 历史

When the violation supplies an appropriate IRP address and I/O verification state is available:
text
!iovirp <irp-address>
!irp <irp-address>
Shadow state may preserve information lost from the live request. Correlate it with the decoded contract and use
windbg-kernel-irp-lifecycle-triage
for completion, cancellation, pending state, and ownership.
当违规提供了适当的 IRP 地址且 I/O 验证状态可用时:
text
!iovirp <irp-address>
!irp <irp-address>
Shadow 状态可能保留实时请求中已经丢失的信息。将其与解码后的契约关联起来,并使用
windbg-kernel-irp-lifecycle-triage
处理完成、取消、挂起状态和所有权。

3. Recover context or follow dependencies

3. 恢复上下文或跟进依赖项

  • Saved exception/trap context:
    windbg-kernel-bugcheck-triage
    .
  • Lock-order evidence:
    windbg-kernel-lock-deadlock-triage
    .
  • Outstanding or power request:
    windbg-kernel-irp-lifecycle-triage
    .
Avoid cyclic dispatch. Carry the evidence already collected to the next skill; re-enter only when a distinct evidence requirement exists.
  • 已保存的异常/陷阱上下文:
    windbg-kernel-bugcheck-triage
    。
  • 锁顺序证据:
    windbg-kernel-lock-deadlock-triage
    。
  • 未完成请求或电源请求:
    windbg-kernel-irp-lifecycle-triage
    。
避免循环分派。将已收集的证据传递给下一个 skill;仅当存在不同的证据需求时才重新进入。

4. Investigate uncovered violations

4. 调查未覆盖的违规

For a generic DDI violation, identify the exact precondition (IRQL, lifetime, parameters, or ownership) and the driver call that broke it. For a DMA violation, inspect supported adapter/map/unmap and buffer-lifetime evidence for that subcode. This package does not provide a specialized decoder for every DDI or DMA case; state the gap and continue from documentation and driver source.
对于通用 DDI 违规,请确定确切的前置条件(IRQL、生命周期、参数或所有权)以及违反该条件的驱动程序调用。对于 DMA 违规,请检查该子代码所支持的 adapter/map/unmap 和缓冲区生命周期证据。本包不提供针对每种 DDI 或 DMA 情况的专用解码器;应明确说明缺口,并根据文档和驱动程序源代码继续调查。

Controlled repro

受控复现

Do not enable Driver Verifier without approval. It can deliberately crash the system and expose boot-critical defects. Use a recoverable test machine, save the current configuration, select relevant vendor drivers/checks, and agree on rollback before restarting. Do not verify every installed driver by default.
Read-only configuration inspection on a test machine:
text
verifier /querysettings
verifier /reset
clears settings and normally requires a restart to stop verification; it is a configuration change, not a harmless query. Restore previous intentional settings rather than unconditionally clearing them.
不要在未经批准的情况下启用 Driver Verifier。它可能会故意使系统崩溃并暴露影响启动的关键缺陷。请使用可恢复的测试计算机,保存当前配置,选择相关的厂商驱动程序/检查,并在重启前商定回滚方案。不要默认验证每个已安装的驱动程序。
在测试计算机上进行只读配置检查:
text
verifier /querysettings
verifier /reset
会清除设置,并且通常需要重启才能停止验证;这是配置更改,而不是无害的查询。请恢复此前有意设置的配置,而不是无条件将其清除。

Validation

验证

Name the exact violated contract, link the recorded operation to driver source, and test that the remedy satisfies it under the same checks and workload. Record dump/verification limitations and unverified assumptions. Passing a single repro is not proof that every driver path is safe.
明确指出被违反的确切契约,将记录的操作与驱动程序源代码关联起来,并测试修复方案在相同检查和工作负载下是否满足该契约。记录转储/验证方面的限制和未经验证的假设。单次复现通过并不能证明每条驱动程序路径都安全。

References

参考资料

Feedback

反馈

Follow
FEEDBACK.md
and submit reviewed, sanitized feedback to WinDbg-Feedback. Include
windbg-kernel-verifier-triage
and the package version from
plugin.json
; do not automatically upload dumps or proprietary driver source.
遵循
FEEDBACK.md
,并向 WinDbg-Feedback 提交经过审查和脱敏处理的反馈。请包含
windbg-kernel-verifier-triage
以及
plugin.json
中的包版本;不要自动上传转储或专有驱动程序源代码。