学习: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文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和 ...
随机推荐
- linux下僵尸进程的发现与处理
一.概述 僵尸进程是怎么产生的 当子进程退出时,父进程没有调用wait函数或者waitpid()函数等待子进程结束,又没有显式忽略SIGCHLD信号,那么它将一直保持在僵尸状态,如果这时父进程结束了, ...
- 【题解】整数划分 [51nod1201] 整数划分 V2 [51nod1259]
[题解]整数划分 [51nod1201] 整数划分 V2 [51nod1259] 传送门:整数划分 \([51nod1201]\) 整数划分 \(V2\) \([51nod1259]\)** [题目描 ...
- Java学习:线程间通信
线程间通信 概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同重点:有效的利用资源 分析:需要那些类 1 资源类:包子类 设置包子的属性 包子的状态:有true 没有false 2 ...
- Java学习:抽象方法和抽象类的使用
抽象 抽象方法:就是加上abstract关键字,然后去掉大括,直接分号结束.抽象类:抽象方法所在的类,必须是抽象类才行.在class之前写上abstract即可. 如何使用抽象类和抽象方法: 1.不能 ...
- 配置 Nginx 反向代理 WebSocket
用Nginx给网站做反向代理和负载均衡是广泛使用的一种Web服务器部署技术.不仅能够保证后端服务器的隐蔽性,还可以提高网站部署灵活性. 今天我们来讲一下,如何用Nginx给WebSocket服务器实现 ...
- C#控制操控操作多个UVC摄像头设备
有时,我们需要在C#代码中对多个UVC摄像头进行操作,如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像头控制项目 ...
- 一. jmeter
1.性能测试概述 1.1 主要方向是测试系统在一定负荷压力下,系统的响应时间,吞吐量,稳定性,系统的可扩展性等性能指标. 结合应用的架构和实现细节找出问题,并最终确认问题得到解决的过程. 目的: 1. ...
- Python pip安装第三方库的国内镜像
Windows系统下,一般情况下使用pip在DOS界面安装python第三方库时,经常会遇到超时的问题,导致第三方库无法顺利安装,此时就需要国内镜像源的帮助了. 使用方法如下: 例如:pip inst ...
- Django--一对多表操作
目录 Django--一对多表操作 需求 步骤 添加路由映射关系 学生表的增删改查 ajax更新和添加 Django--一对多表操作 今天还以一个学生管理系统为例,先通过pymysql这个模块,进行一 ...
- Android中控件AutoCompleteTextView的使用方法和一些属性
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...