原文地址: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还优先考虑某些类型的依赖项。如果加载应用程序隐式需要模块,则它将在模块列表视图中显示隐式模块映像。即使模块在树视图中也被列为延迟加载或动态依赖项,也是如此,因为隐式依赖是最重要的依赖类型,并且是应用程序加载所必需的。如果模块是动态加载的或者是动态加载模块的子模块,则它将在列表视图中显示动态模块图像。如果模块是延迟加载的或者是延迟加载模块的子模块,则它将在列表视图中显示延迟加载模块图像。如果模块既是延迟加载又是动态依赖,它将在列表视图中显示为动态依赖项,因为实际获得动态加载的模块优先于未加载的延迟加载模块。当模块动态加载时,这可能导致列表视图中的图像从延迟加载更改为动态。
以下是模块列表视图中每个模块可能显示的状态集合。此列表只是所有可能图像的子集。实际图像可以是以下一个或多个图像的组合:
普通图像
该模块的所有实例都是正常的,没有错误。如果此模块映像的左侧没有延迟加载映像(沙漏)或动态映像(星形/星号),则根模块至少需要加载此模块的一个实例才能加载。
此模块的所有实例都标记为延迟加载,或者是标记为延迟加载的模块的子级。如果模块实际加载,具有此映像的模块将在运行时更改为动态依赖项。
在分析期间动态加载和检测此模块的所有实例。有关详细信息,请参阅 使用应用程序分析检测动态依赖关系。
通过使用DONT_RESOLVE_DLL_REFERENCES标志和/或LOAD_LIBRARY_AS_DATAFILE标志调用LoadLibraryEx函数来动态加载此模块的所有实例。这些标志使模块无需加载其依赖模块或调用模块的DllMain函数即可映射到内存中。如果稍后加载具有此图像的模块而没有DONT_RESOLVE_DLL_REFERENCES和LOAD_LIBRARY_AS_DATAFILE标志,则图像将更改为上面的标准动态依赖关系图像。
64位模块。此模块旨在在64位版本的Windows上运行。如果此图像不存在,则假定模块为32位。
警告和错误图像
缺少模块。在搜索路径中找不到此模块。有关更多信息,请参阅配置搜索顺序命令。
模块无效。该模块将附带一条错误消息来描述问题。
模块警告。至少一个此模块的实例要么缺少其父模块所需的一个或多个导出函数,要么是CPU类型错误,要么在运行时无法加载。在模块依赖关系树视图中找到有问题的模块,然后查看导入功能列表视图该模块可以查看无法解析函数的问题。如果不缺少导出函数,请检查日志视图以查看模块错误是否与加载失败有关。
模块列表视图包含有关每个模块的几列信息。包括:
|
模块列表可以按列表中任何列中的数据进行排序。只需单击要排序的列的列标题按钮即可。列表(^)显示在列表当前排序的列的列标题中。您还可以通过双击列标题中两列之间的分隔线将列调整为“最佳拟合”宽度。只需键入要查找的项目的前几个字符,即可在当前已排序的列中搜索文本。
如果找不到模块或者不是有效的32位或64位Windows二进制文件,则将显示一条错误消息,代替该模块的正常列信息。