2024年3月31日发(作者:)
WIN32/API/SDK/MFC四者之间的联系和区别
WIN32/API/SDK/MFC四者之间的联系和区别
这几个概念,对于新手来说,一直都是比较模糊的,搞不清楚他们之间的关系。
1、WIN32是不是就是指API?
如果不是的话,WIN32具体是什么东西。
不是,API你可以理解成系统函数(应用程序接口),Win32是一个子系统。Win32
是Windows的一个子系统,还有另外的子系统如OS/2、POSIX、WOW等。不同的子系
统系统提供了不同的编程接口,即API,一般说的API指的就是Win32 API。
2、SDK和API的关系是什么?
可以说SDK靠千万的API进行支撑。打个比方,他的窗体的创建都是靠一系列的API
实现的。
MFC当然也可以调用API,SDK也行。
3、SDK和MFC的区别是什么?
MFC是对SDK的封装,通过MFC的一些方法实现,实质上还是调用了API进行实
现。这就是封装的好处,加快了开发的速度,减低了开发的难度。
上面大家都说Win32是一个子系统,这个当然是对的,不过我们有时候我们所说
Win32通俗的就是指32位的Windows系统,从windows95/98到NT/2000/XP都是
32位Windows。子系统却是仅对NT架构的系统而言的。我想楼主所问的Win32并不是
子系统。
API就是应用程序接口,是由系统提供的一些函数,比如你想创建一个文件,就要调
用CreateFile,这个CreateFile就是一个API。任何一个操作系统都会提供API的,比如
DOS也提供API,不过它是通过Int 21h中断提供的就是了。
SDK是指一些公司针对某一项技术为软件开发人员制作的一套辅助开发或者减少开发
周期的工具。一般专指Windows系统提供的相关的头文件和LIB文件。
有时候很多人将不用MFC等相关类库,而只用API进行开发的方式也叫做SDK开发,
从这一点来说,API和SDK似乎是通用的。
MFC是MS对API的一个封装,也就是一个C++类库,当然MFC比一般类库庞大,
所以有人称之为应用程序框架。但其本质还是一个类库
Windows程序有用户态和核心态的说法。在32位地址空间中,0x80000000以下属
于用户态,0x80000000以上属于核心态。所有硬件管理都在核心态。用户态程序的不能
直接使用核心态的任何代码。所谓核心态其实只是CPU的一种保护模式。在x86 CPU上,
用户态处于ring 3,核心态处于ring 0。
从用户态进入核心态的最常用的方法是在寄存器eax填一个功能码,然后执行int 2e。
这有点像DOS时代的DOS和BIOS系统调用。在NT架构中这种机制被称作system


发布评论