Windows API是什么?

Win32程序是构筑在Win32 API基础上的。在Win32 API中,包括了大量的函数、结构和消息等,它不仅为应用程序所调用,也是Windows自身的一部分,Windows自身的运行也调用这些API函数。

 

Windows API的来历

==============

在DOS下,操作系统的功能是通过各种软中断来实现的。

如大家都知道int 21h是DOS中断,int 13h和int 10h是BIOS中的磁盘中断和视频中断。

当应用程序要引用系统功能时,要把相应的参数放在各个寄存器中再调用相应的中断,程序控制权转到中断中去执行,完成以后会通过iret中断返回指令回到应用程序中。

如DOS汇编下有下列语句:

mov     ah,9
mov     dx,offset szHello
int       21h

这3条语句调用DOS系统模块中的屏幕显示功能,功能号放在ah中,9号功能表示屏幕显示,要输出到屏幕上的内容的地址放在dx中,然后去调用int 21h,字符串就会显示到屏幕上。

 

这个例子说明了应用程序调用系统功能的一般过程。

首先,系统提供功能模块并约定参数的定义方法,同时约定调用的方式,应用程序按照这个约定来调用系统功能。

在这里,ah中放功能号9,dx中放字符串地址就是约定的参数,int 21h是约定的调用方式。

 

下面来看看这种方法的不便之处。首先,所有的功能号定义是冷冰冰的数字,int 21h的说明文档是这样的:

Int 21 Functions:

00——Program termination

01——Keyboard input

02——Display output

03——AUX input

04——AUX output

05——Printer output

06——Direct console I/O

07——Direct STDIN input, no echo

08——Keyboard input, no echo

09——Print string

0A——Buffered keyboard input

0B——Check standard input status

再进入09号功能看使用方法:

Print string (Func 09)

AH = 09h

DS:DX -> string terminated by "$"

这就是DOS时代汇编程序员都有一厚本《中断大全》的原因,因为所有的功能编号包括使用的参数定义仅从字面上看,是看不出一点头绪来的。

另外,80x86系列处理器能处理的中断最多只能有256个,不同的系统服务程序使用了不同的中断号,这少得可怜的中断数量就显得太少了,结果到最后是中断挂中断,大家抢来抢去的,把好好的一个系统搞得像接力赛跑一样。

 

对于这些弱点,程序员们都有个愿望:系统功能如果能以功能名称作为子程序名直接调用就好了,参数也最好定义的有意义一点,这样一来写程序就会方便得多,编系统扩展模块也就不必老是担心往哪个中断上面挂了,最好能把上面int 21h/ah=9的调用写成下面这副样子:

call PrintString,addr szHello

 

终于,好消息出来了,Win32环境中的编程接口就是这个样子,这就是Windows API。

 

Windows API的简介

===============

Windows API 实际上是以一种新的方法代替了DOS中用软中断的方式。

 

和DOS的结构相比,Win32的系统功能模块放在Windows的动态链接库(DLL)中。

DLL是一种Windows的可执行文件,采用的是和 .exe文件同样的PE格式。

在PE格式文件头的导出表中,以字符串形式指出了这个DLL能提供的函数列表。

应用程序使用字符串类型的函数名指定要调用的函数。

 

实际上,Win32的基础就是由DLL组成的。Win32 API的核心由3个DLL提供,它们是:

  • KERNEL32.DLL——系统服务功能。包括内存管理、任务管理和动态链接等。
  • GDI32.DLL——图形设备接口。利用VGA与DRV之类的显示设备驱动程序完成显示文本和矩形等功能。
  • USER32.DLL——用户接口服务。建立窗口和传送消息等。

当然,Win32 API还包括其他很多函数,这些也是由DLL提供的,不同的DLL提供了不同的系统功能。如使用TCP/IP协议进行网络通信的DLL是Wsock32.dll,它所提供的API称为Socket API;专用于电话服务方面的API称为TAPI(Telephony API),包含在Tapi32.dll中。所有的这些DLL提供的函数组成了现在所用的Win32编程环境。

 

摘自《Win32汇编教程》作者: 罗云彬

posted on 2009-11-15 09:58  中道学友  阅读(2800)  评论(0编辑  收藏  举报

导航

技术追求准确,态度积极向上