当前位置:鱼C工作室 >Win32汇编 > 查看文章

使用MASM04 – Win32汇编语言012

使用MASM04

 

让编程改变世界

Change the world by program


 

调用API函数

 

习惯工作于DOS汇编的程序员同志都有一个愿望:如果说,能够以功能名称作为子程序名直接调用,他们愿意以生命中的十年寿命作为交换……

随着Win32的到来,他们的愿望实现了!这就是API函数,它事实上就是以一种新的方法代替了DOS下的中断。

 

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

DLL是一种Windows的可执行文件,采用的是和我们熟悉的.exe文件同样的PE(PortableExecutable)约定格式。

DLL文件的原理

 

关于DLL

 

DLL事实上只是一个大大的集装箱,装着各种系统的API函数。

应用程序在使用的时候由Windows自动载入DLL程序并调用相应的函数。

实际上,Win32的基础就是由DLL组成的。

 

Win32API的核心由3个DLL提供,它们是:

– KERNEL32.DLL——系统服务功能。包括内存管理、任务管理和动态链接等。

– GDI32.DLL——图形设备接口,处理图形绘制。

– USER32.DLL——用户接口服务。建立窗口和传送消息等。

 

当然,Win32API还包括其他很多函数,这些也是由DLL提供的,不同的DLL提供了不同的系统功能。

如使用TCP/IP协议进行网络通信的DLL是Wsock32.dll,它所提供的API称为SocketAPI;

专用于电话服务方面的API称为TAPI(TelephonyAPI),包含在Tapi32.dll中。

 

所有的这些DLL提供的函数组成了现在使用的Win32编程环境。

我们也经常自己打包自己的“集装箱”!

 

API函数的参数

 

在DOS下,我们演示过无数次,通过中断来调用系统“函数”,其中的“参数”是通过放在寄存器(ah)中。

Win32API是用堆栈来传递参数的,调用者把参数一个个压入堆栈,DLL中的函数程序再从堆栈中取出参数处理,并在返回之前将堆栈中已经无用的参数丢弃。

在Microsoft发布的《MicrosoftWin32Programmer’sReference》中定义了常用API的参数和函数声明。

 

intMessageBox(
    HWNDhWnd,           //handletoownerwindow
    LPCTSTRlpText,      //textinmessagebox
    LPCTSTRlpCaption,   //messageboxtitle
    UINTuType           //messageboxstyle
);//注意,上边是用C语言表示!

 

分页阅读: 1 2 下一页
为您推荐

报歉!评论已关闭.