DW翻译系列:Dependency Walker处理的模块类型

简介: 文章网址:http://www.dependencywalker.com/help/html/dependency_types.htm 有以下几种模块依赖类型: 1. 隐式依赖(也叫加载时依赖,有时也不当地称为静态依赖):模块A在编译、链接期间隐式地与模块B中的a.lib链接,那么模块A的源码就调用了B中的一个或多个函数。模块B就是模块A的加载时依赖。不管A在运行期间有没有调用B中

文章网址:http://www.dependencywalker.com/help/html/dependency_types.htm


有以下几种模块依赖类型:

1. 隐式依赖(也叫加载时依赖,有时也不当地称为静态依赖):模块A在编译、链接期间隐式地与模块B中的a.lib链接,那么模块A的源码就调用了B中的一个或多个函数。模块B就是模块A的加载时依赖。不管A在运行期间有没有调用B中的函数,B都会被加载进内存。模块B将会被列在模块A的导入表中。


2. 延迟加载依赖:模块A在编译、链接期间延迟与模块B中的a.lib链接,那么模块A的源码就调用了B中的一个或多个函数。模块B就是一个动态依赖,只有当A在运行时调用了B时,B才被加载。模块B列在了A的延迟加载导入表中。


3. 前向依赖:模块A在编译、链接期间与模块B中的a.lib链接,那么模块A的源码就调用了B中的一个或多个函数。而其中的函数实际上又调用了模块C中的函数。那么B,C都是A的依赖,但是只有模块B被列进了A的导入表中。


4. 显式依赖(也称为动态依赖或运行时依赖):模块A没有在编译、链接期间隐式地与模块B链接。A在运行时通过调用LoadLibrary类型的函数调用了B,则B就成了A的运行时依赖,但不被列在A的任何人表中。这种类型的依赖在OCXs,COM对象和Visual Basic程序常见。


5. 系统钩子依赖(也叫注入依赖):当另一个程序在进程中抛出了一个特定事件(像鼠标事件)时,这种依赖就产生了。当进程去处理那个事件时,操作系统就往进程注入了这个模块去处理事件。被注入的模块实际上不是任何其它模块的依赖,但它确实驻留在进程的地址空间中。


DW完全支持以上几种技术加载的模块。在DW中打开一个模块,就能检测出1、2、3三种类型的模块。4、5两种类型的依赖需要在运行时被解析,这也是DW2.0的新特性。关于解析,参考使用应用程序解析检测动态依赖一节。

目录
相关文章
|
6月前
|
前端开发 JavaScript Android开发
02HUI - 部署及文档结构
02HUI - 部署及文档结构
30 0
|
存储 Java Linux
知识分享之Golang——Bleve中如何定义一个自定义文档映射对象
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
86 0
知识分享之Golang——Bleve中如何定义一个自定义文档映射对象
FastAPI(32)- Dependencies in path operation 通过路径操作装饰器的 dependencies 参数声明依赖
FastAPI(32)- Dependencies in path operation 通过路径操作装饰器的 dependencies 参数声明依赖
139 0
FastAPI(32)- Dependencies in path operation 通过路径操作装饰器的 dependencies 参数声明依赖
|
XML 算法 数据可视化
ur驱动包内容解释
ur驱动包内容解释
|
Java 应用服务中间件 API
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
208 0
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
|
数据库
Git.Framework 框架随手记--ORM查询返回实体对象
  使用ORM有一个优势,可以通过某种机制将数据库中的数据转化为自己想要的对象形式数据。本章记录一下如何使用Git.Framework返回实体对象     一. Git.Framework 中提供的方法     在Git.
1001 0
|
存储 缓存 数据库
ORM映射框架总结--实体分析器
1.       什么是数据分析器 前面一篇文章讲到过数据分析器,什么是数据分析器。其实很容易理解,就是对数据进行分析采集的一个工具,说白了就是一个小程序,在本ORM框架中对实体对象进行必要的数据分析,获得实体对象的各种信息缓存,以便在后续的工作中直接提取数据。
742 0
|
SQL
Git.Framework 框架随手记--ORM条件组合
  在上一篇中简单记录了如何对数据进行删除和修改,其用法都非常简单,在文章中提到了Where()方法,本文将详述Where() 等条件函数。     一. SQL 条件分析     对于SQL每个人应该都很熟悉,这是基础的基础,如果没有使用过SQL的本文可以直接忽略了。
920 0
|
JavaScript C++ 自然语言处理
VS Code英汉词典v0.0.8: 批量翻译文件部分命名
实现VS code插件, 基于本地词典数据, 提供英汉翻译功能, 添加批量命名翻译功能. Improve vscode extension to translate English word or phrase to Chinese, by supporting translating all identifiers in a file.
1674 0
|
消息中间件 Kubernetes Go
k8s与日志--采用golang实 现Fluent Bit的output插件
s" "time" "unsafe" "github.com/Shopify/sarama" "github.com/fluent/fluent-bit-go/output" "github.com/ugorji/go/codec" ) var ( brokers []string producer sarama.
2297 0