.kdfiles(设置驱动程序替换映射)

.kdfiles 命令读取文件并将其内容用作驱动程序替换映射。

.kdfiles MapFile
.kdfiles -m OldDriver NewDriver
.kdfiles -s SaveFile
.kdfiles -c
.kdfiles

参数

MapFile
指定要读取的驱动程序替换映射文件。

-m
将驱动程序替换关联添加到当前关联列表。

OldDriver
指定目标计算机上上一个驱动程序的路径和文件名。 OldDriver 的语法与驱动程序替换文件中映射后的第一行的语法相同。 有关此语法的详细信息,请参阅 映射驱动程序文件

NewDriver
指定新驱动程序的路径和文件名。 此驱动程序可以位于主计算机上,也可以位于其他某个网络位置。 NewDriver 的语法与驱动程序替换文件中映射后的第二行的语法相同。 有关此语法的详细信息,请参阅 映射驱动程序文件

-s
创建文件并将当前驱动程序替换关联写入该文件。

SaveFile
指定要创建的文件的名称。

-C
删除现有的驱动程序替换映射。 (此选项不会更改映射文件本身。相反,此选项会清除调试器的当前映射设置。)

环境

模式

仅限内核模式

目标

仅实时调试

平台

基于 x86 的处理器

其他信息

有关驱动程序替换和其他内核模式模块替换的详细信息和示例、驱动程序替换映射文件的格式说明和使用此功能的限制,请参阅 映射驱动程序文件

注解

如果使用不带参数的 .kdfiles 命令,调试器将显示当前驱动程序替换映射文件的路径和名称以及当前的替换关联集。

运行此命令时,将读取指定的 MapFile文件。 如果未找到该文件,或者它不包含格式正确的文本,调试器将显示一条消息,指出“无法加载文件关联”。

如果指定的文件采用正确的驱动程序替换映射文件格式,则调试器将加载文件的内容并将其用作驱动程序替换映射。 此映射一直保留到退出调试器或发出另一个 .kdfiles 命令之前。

读取文件后,驱动程序替换映射不受文件 (后续更改的影响,除非这些更改后跟另一个 .kdfiles 命令) 。

用户模式文件替换

Windows 版本 2004 中添加了用户模式文件替换。 此支持使以下用户模式文件能够替换为 .kdfiles。

  • 用户模式 DLL (还包括 NTDLL 和 KnownDlls)
  • 作为 CreateProcess main进程映像的用户模式 EXE

若要使用用户模式 .kdfiles 支持,需要首先使用 !gflag +ksl 调试器命令启用内核符号加载,或在注册表中配置 ksl 全局标志。 有关 gflag 的详细信息,请参阅 !gflag

以下示例演示了常见用法。

.kdfiles -m system32\userdll C:\myfiles\my_native_userdll.dll
.kdfiles -m system32\userdll \\server\share\my_native_userdll.dll
.kdfiles -m syswow64\ntdll.dll \\server\share\my_x86_wow64_ntdll.dll
.kdfiles -m system32\userbase.dll \\server\share\my_native_userbase.dll

用户模式 .kdfiles 会忽略任何与文件匹配的失败,并在发生故障时不显示错误消息。

请注意,请适当限定用户模式 .kdfiles 的 .kdfiles 路径。 最好只匹配 ntdll.dll (而不是 system32\ntdll.dll) ,否则 Wow64 NTDLL 将替换为本机。 其他不明确的子字符串匹配项也可能出现类似的情况。

内部版本 20172 之后,用户模式 .kdfiles 机制将尝试从调试器中提取文件,直到一次尝试失败;然后,将不会为启动会话再次尝试拉取失败的文件名,而无需调试器手动干预以修改目标系统状态。 在早期版本中,用户模式 .kdfiles 机制将尝试一次 (是否成功) 每次启动会话拉取给定文件名。 这些策略减少了与调试器通信的开销,这些文件不在 kdfiles 列表中,或者无法访问替换的文件,例如,由于可能已加载给定文件的进程的共享冲突。 由于此行为,通常建议将任何文件配置为先拉入 .kdfiles 列表,然后再首先引用它们。

请注意无法替换已使用的磁盘文件等的限制。由于许多系统 DLL 在最初加载后不容易进行热交换,因此请预设 gflags +ksl 选项,并使用 .kdfiles 在启动时直接替换任何用户模式二进制文件。

有关启用启动调试的详细信息,请参阅 BCDEdit /bootdebug

建议使用高速/低延迟 KD 传输 KDNET,以最大程度地降低对系统性能的影响。

要求

版本

在 Windows XP 和更高版本的 Windows 操作系统中受支持。