学习:Windows API核心DLL文件
在 Windows 的系统目录中,存在着很多的动态链接库文件(DLL 文件)。这些 DLL 文件中包括了 Windows API 函数可执行程序。
DLL 将各函数"导出",这样应用程序就可以找到 DLL 中的函数地址,当应用程序调用 Windows API 时,程序会运行到 DLL 中。
API 函数主要存在于几个核心的动态连接库文件中。
Kernel32.dll 是最重要的 DLL,Windows 系统最主要的系统服务 API 函数都存在于 Kernel32.dll 中。
User32.dll 主要包括图形用户界面中所使用到的一些函数接口。
GDI32.dll 中,主要包括 Windows 图形引擎中的接口函数。
Kernel32.dll:
Kernel32.dll 包括了系统基本服务中最基本的 API 函数,如文件系统、进程与线程、内存管理等。Windows XP SP2 系统中,Kernel32.dll 有 949 个导出函数,例如,CreateFileA、CreateProcessA、OpenThread、SetFileTime 等。本书将在后续章节中通过实例介绍这些 API 的使用。
User32.dll:
User32.dll 是 Windows 图形用户界面的主要支持。一些重要的图形用户界面函数由 User32.dll 函数导出。Windows XP SP2 系统中,User32.dll 有 732 个导出函数,例如 CreateWindowExW、RegisterClassA 等。
Gdi32.dll:
Gdi32.dll 是 Windows GDI 应用程序设计接口,Gdi32.dll 导出了与此相关的若干函数,如 GetTextColor、LineTo、TextOutA 等。
标准 C 函数及 Crtdll_dll:
C 语言是一种标准,任何支持 C 语言应用程序开发的操作系统都应该提供 C 语言库函数的调用。在系统环境下使用标准 C 进行程序开发时,用户所使用的库函数实际上是由操作系统提供的。正是由于各个主流操作系统都提供了一套标准 C 库所定义的函数接口,标准 C 函数库才会有如此广泛的跨越操作系统平台。所以 C 程序仍然依赖于操作系统开发人员为其实现接口,而 C 库函数的实现仍然依赖于操作系统提供的调用接口,如标准 C 函数 fopen 函数在 Windows 系统中的实现就依赖于 API 函数 CreateFile(CreateFile 实现了文件的创建和打开等操作)。
Windows 系统的 C 标准库函数接口主要由 crtdll.dll 导出。实际上,C 标准函数库必须由操作系统为其提供接口,否则使用标准 C 开发的程序无法在特定的系统上运行。
Windows XP SP2 系统中,crtdll.dll 有 526 个导出函数,如 fopen、printf、strlen 等。
其他 Dll
当然,Windows 系统中的 DLL 文件远远不止这几个,Windows 系统提供了非常丰富而且功能强大的 API,上文已经介绍了 Windows API 所主要依赖的几个 DLL,其他的 DLL 库文件由于过于庞杂,就不一一介绍。
参考文章:https://www.ituring.com.cn/book/miniarticle/51352
学习:Windows API核心DLL文件的更多相关文章
- [转载]解析WINDOWS中的DLL文件---经典DLL解读
[转载]解析WINDOWS中的DLL文件---经典DLL解读 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! ...
- 学习之路三十九:新手学习 - Windows API
来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...
- LoadLibrary文件路径及windows API相关的文件路径问题
LoadLibrary HMODULE WINAPI LoadLibrary( _In_ LPCTSTR lpFileName ); Loads the specified module into ...
- windows 64位 dll文件 位置及python包rtree shapely安装
位置 \Windows\System32 python包依赖包安装 rtree 依赖 spatialindex(spatialindex.dll spatialindex_c.dll) shape ...
- Windows API 编程-----DLL编程之禁止加载自己
和可执行文件一样,动态链接库也有自己的入口地址,如果系统或者当前进程的某个线程调用LoadLibrary函数加载或者使用FreeLibrary卸载该动态链接库的时候,会自动使用3个特定的堆栈参数跳转到 ...
- windows API 核心编程学习心得
一.错误处理 在内部,当windows函数检测到错误时,它会使用“线程本地存储区”的机制将相应的错误代码与“主调线程”关联到一起. winError.h 一般在C:\Program Files\Mic ...
- windows 系统注册dll文件
使用管理员身份注册:命令提示符 管理员身份运行 32 位系统:regsvr32 %windir%\system32\jscript.dll 64 位系统:regsvr32 %windir%\SysWO ...
- C++ Windows API 读写INI文件
BOOL WritePrivateProfileString( LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // ...
- Windows中DLL文件的意义及其作用
Windows中DLL文件的意义及其作用 DLL是Dynamic Link Library的缩写,意为动态链接库.DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和 ...
随机推荐
- 【题解】最长递增路径 [51nod1274]
[题解]最长递增路径 [51nod1274] 传送门:最长递增路径 \([51nod1274]\) [题目描述] 一个可能有自环有重边的无向图,每条边都有边权.输入两个整数 \(n,m\) 表示一共 ...
- C# Modbus 数据读取 使用NModBus4库
ModBus通讯协议 方法名 作用 所需参数 返回值 对应功能码 ReadCoils 读取DO的状态 从站地址(8位) byte slaveAddress 起始地址(16位) ushort start ...
- Java自学-基本变量类型
Java中的基本变量类型 一个变量的类型,决定了该变量可以包含什么样的值. Java中有八种基本类型,都是Java语言预先定义好的,并且是关键字. 这八种基本类型分别是: 整型 (4种) 字符型 (1 ...
- js中 !==和 !=的区别是什么
1.比较结果上的区别 !=返回同类型值比较结果. !== 不同类型不比较,且无结果,同类型才比较. 2.比较过程上的区别 != 比较时,若类型不同,会偿试转换类型. !== 只有相同类型才会比较. 3 ...
- js 递归遍历对象 插入属性 遍历树结构
// 向 info下面 每一项 插入 isShow test() { const _this = this; _this.info.isShow = false; let iteration = fu ...
- Django:RestFramework之-------认证
3 restframework-认证 3.1APIView 认证: 认证是否已经登陆,如果已经登陆返回元组,如果没有登陆报错 源码流程: 执行dispatch方法: def dispatch(self ...
- Python之路(第四十四篇)线程同步锁、死锁、递归锁、信号量
在使用多线程的应用下,如何保证线程安全,以及线程之间的同步,或者访问共享变量等问题是十分棘手的问题,也是使用多线程下面临的问题,如果处理不好,会带来较严重的后果,使用python多线程中提供Lock ...
- 购买了一台阿里云ECS后安装Java项目运行环境
在docker等虚拟化技术大行其道的今天,我原本也想在我买的ECS服务器里全系使用docker技术,只可惜在我尝试后发现我的ECS配置不够高,整个服务器卡到爆炸,无奈只能使用最原始的方式. 我买的服务 ...
- MySQL与Oracle的隔离级别
一.事务和隔离级别 事务的概念:事务是把对数据库的一系列操作都看做一个整体,要么全部成功,要么全部失败,利用事务我们可以保证数据库的完整性,事务具有原子性. 隔离级别:隔离级别定义了事务与事务之间的隔 ...
- Pycharm安装模块提示module 'pip' has no attribute 'main'的问题
解决pycharm问题:module 'pip' has no attribute 'main' 转自: <解决pycharm问题:module 'pip' has no attribute ' ...