模块列表视图

原文地址:http://dependencywalker.com/help/html/hidr_module_list_view.htm

模块列表视图显示根模块所有的依赖项。此列表是根模块加载和执行所必需的文件集。

可以使用完整文件路径或仅使用文件名显示模块以节省屏幕空间。您可以使用“ Full Paths”选项控制显示的内容。您还可以通过选择“ Copy Command”将所选模块的文件名或路径复制到剪贴板。复制的实际文本将根据“ Full Paths”选项的设置方式而有所不同。如果选择了多个模块,则会在每个模块之后使用回车将列表复制到剪贴板。模块列表视图的完整内容也可以使用“ 保存命令”或“ 另存为命令”保存到文本文件或逗号分隔值(CSV)文件中。

此列表和模型依赖关系树不是一一对应的关系。此列表视图显示唯一的模块集,而树视图显示所有模块关系。像KERNEL32.DLL这样的模块可能会在树视图中显示多次,因为许多其他模块依赖于它,但它只会在此列表视图中显示一次。可能会隐式加载KERNEL32.DLL的某些实例,而其他实例可能会动态加载。有些可能有导入/导出不匹配错误,而其他可能没有错误。由于两个视图之间没有一对一的关系,因此模块列表视图会尝试用图片表示树视图中每个模块的所有实例的状态。例如,如果KERNEL32.DLL在树视图中出现十次没有错误,一次出现导入/导出不匹配错误,则列表视图将显示KERNEL32有导入/导出不匹配错误。

Dependency Walker还优先考虑某些类型的依赖项。如果加载应用程序隐式需要模块,则它将在模块列表视图中显示隐式模块映像。即使模块在树视图中也被列为延迟加载或动态依赖项,也是如此,因为隐式依赖是最重要的依赖类型,并且是应用程序加载所必需的。如果模块是动态加载的或者是动态加载模块的子模块,则它将在列表视图中显示动态模块图像。如果模块是延迟加载的或者是延迟加载模块的子模块,则它将在列表视图中显示延迟加载模块图像。如果模块既是延迟加载又是动态依赖,它将在列表视图中显示为动态依赖项,因为实际获得动态加载的模块优先于未加载的延迟加载模块。当模块动态加载时,这可能导致列表视图中的图像从延迟加载更改为动态。

以下是模块列表视图中每个模块可能显示的状态集合。此列表只是所有可能图像的子集。实际图像可以是以下一个或多个图像的组合:

普通图像

    正常 该模块的所有实例都是正常的,没有错误。如果此模块映像的左侧没有延迟加载映像(沙漏)或动态映像(星形/星号),则根模块至少需要加载此模块的一个实例才能加载。

    延迟加载 此模块的所有实例都标记为延迟加载,或者是标记为延迟加载的模块的子级。如果模块实际加载,具有此映像的模块将在运行时更改为动态依赖项。

   动态加载  在分析期间动态加载和检测此模块的所有实例。有关详细信息,请参阅 使用应用程序分析检测动态依赖关系。

   loadlibrary  通过使用DONT_RESOLVE_DLL_REFERENCES标志和/或LOAD_LIBRARY_AS_DATAFILE标志调用LoadLibraryEx函数来动态加载此模块的所有实例。这些标志使模块无需加载其依赖模块或调用模块的DllMain函数即可映射到内存中。如果稍后加载具有此图像的模块而没有DONT_RESOLVE_DLL_REFERENCES和LOAD_LIBRARY_AS_DATAFILE标志,则图像将更改为上面的标准动态依赖关系图像。

    64 64位模块。此模块旨在在64位版本的Windows上运行。如果此图像不存在,则假定模块为32位。

警告和错误图像

    缺少模块 缺少模块。在搜索路径中找不到此模块。有关更多信息,请参阅配置搜索顺序命令。

    模块无效 模块无效。该模块将附带一条错误消息来描述问题。

    模块警告 模块警告。至少一个此模块的实例要么缺少其父模块所需的一个或多个导出函数,要么是CPU类型错误,要么在运行时无法加载。在模块依赖关系树视图中找到有问题的模块,然后查看导入功能列表视图该模块可以查看无法解析函数的问题。如果不缺少导出函数,请检查日志视图以查看模块错误是否与加载失败有关。

模块列表视图包含有关每个模块的几列信息。包括:

 
图片请参阅以上列表以获取说明
模块模块文件的完整路径或文件名。请参阅“ Full Paths选项以在两种模式之间切换。
文件时间戳模块文件的日期和时间。这是上次保存文件的时间。
链接时间戳构建模块的日期和时间。这是链接器存储在文件本身中的值。
文件大小模块文件的大小。
属性模块文件的属性。可能的值是R(只读),H(隐藏),S(系统),A(存档),C(压缩),T(临时),O(离线)和E(加密)。
链接校验和模块构建时的模块校验和。使用链接器的/ RELEASE命令行选项设置此值。如果未指定此链接器选项,则校验和可能为零。如果该值不为零且与实际模块校验和不匹配,则该值将以红色显示。如果值不匹配,则表示模块在构建后已经过修改。
真正的校验和实际的模块校验和。此值由Dependency Walker计算,并且应与构建模块时链接器计算的校验和相匹配。
CPU为其构建模块的CPU类型。可能的值包括x86,Intel 64,Alpha AXP,Alpha 64,PowerPC,MIPS R3000 BE(大端),MIPS R3000,MIPS R4000,MIPS R10000,MIPS WinCE V2,SH3,SH3E,SH4,SH5,ARM,Thumb,MIPS 16,MIPS FPU,MIPS FPU 16,CEE和CEF。如果该值与会话中根模块的CPU类型不匹配,则该值将显示为红色。使用链接器的/ MACHINE命令行选项设置此值。
子系统构建模块以运行的子系统类型。可能的值包括Native,GUI,Console,Win9x驱动程序,OS / 2控制台,Posix控制台,WinCE 1.x GUI和WinCE 2.0+ GUI,EFI和Xbox。使用链接器的/ SUBSYSTEM命令行选项设置此值。
符号与模块关联的调试符号的类型。可能的值包括None,DBG(调试),PDB(程序数据库),CV(代码视图),COFF(通用目标文件格式),FPO(帧指针省略),OMAP和Borland。如果一个或多个调试块无效,则还会出现“无效”一词。这通常意味着调试符号已从文件中除去,但调试入口留下了。
首选基地址模块的首选加载基地址。对于32位模块,这将是32位,对于64位模块,这将是64位。使用链接器的/ BASE命令行选项设置此值。
实际基地址模块的实际基本加载地址。该值将显示为“Unknown”,直到Dependency Walker的分析器将模块实际加载到内存中。有关更多信息,请参阅 Start Profiling Command。如果该值与模块的首选基址不匹配,则该值将显示为红色。对于未在其首选基址加载的每个模块,您的应用程序将遭受加载时性能损失。如果通过使用LOAD_LIBRARY_AS_DATAFILE标志调用LoadLibraryEx将文件作为数据文件加载,则此值将显示为“数据文件”。
虚拟大小模块的虚拟大小。这是为要映射到的模块保留的内存大小。
加载顺序模块相对于其他模块的加载顺序。在Dependency Walker的分析器实际将模块加载到内存之前,该值将显示为“未加载”。有关更多信息,请参阅 Start Profiling Command
文件版本在模块的版本资源中找到的文件版本。此值表示VERSION_INFO资源结构中的FILEVERSION字段。如果模块不包含VERSION_INFO资源,它将读为“N / A”。
产品版本在模块的版本资源中找到的产品版本。此值表示VERSION_INFO资源结构中的PRODUCTVERSION字段。如果模块不包含VERSION_INFO资源,它将读为“N / A”。
文件映像版本在模块的文件头中找到的映像版本。使用链接器的/ VERSION命令行选项设置此值。
链接器版本用于创建模块文件的链接器版本。
操作系统版本模块可以运行的操作系统版本
子系统版本构建模块文件以运行的子系统版本。使用链接器的/ SUBSYSTEM命令行选项设置此值。


模块列表可以按列表中任何列中的数据进行排序。只需单击要排序的列的列标题按钮即可。列表(^)显示在列表当前排序的列的列标题中。您还可以通过双击列标题中两列之间的分隔线将列调整为“最佳拟合”宽度。只需键入要查找的项目的前几个字符,即可在当前已排序的列中搜索文本。

如果找不到模块或者不是有效的32位或64位Windows二进制文件,则将显示一条错误消息,代替该模块的正常列信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值