API,全称Application Programming Interface,即应用程序编程接口。
API就是操作系统给应用程序的调用接口,应用程序通过调用操作系统的 API而使操作系统去执行应用程序的命令(动作)。在 Windows 中,系统API是以函数调用的方式提供的。
封装好的函数,暴露出来的函数名,参数等信息就是API。例如AJAX中我们可以直接调用open()函数。
API其实是一个函数的定义,比如常用的read()、malloc()、free()、abs()函数等
问题一:API和系统调用的区别?
API(Application Programming Interface),win32API也就是MicrosoftWindows32位平台的应用程序编程接口。windows规定一切的应用程序优先级为3,为windows自己的为0(0最高,3最低)。windows不允许应用程序直接访问硬件,但是会提供API函数让用户间接地访问,这样就会调用系统级API。平时出现的“…非法操作”就是因为应用程序非法访问硬件造成的。
API分为两种:
第一:用户级API;替用户写好函数,方便调用,使程序员可以将焦点放在设计程序逻辑上面,而不必再编写繁琐、重复的程序,不必关注技术的细节。例如VC++,MFC,VB等都是类库和各种控件,它代替了API的神秘功能。
第二:系统级API;如果应用程序想要和硬件交互,必须调用此类函数。程序员调用的是API(api函数),然后通过与系统调用共同完成函数的功能。因此,API是一个提供给应用程序的接口,一组函数,是与程序猿直接进行交互的。系统调用则不与程序员进行交互,它是根据API函数,通过一个软件中断机制向内核提交请求(trap指令类似于一个系统中断,系统也会有一个特殊的中断处理函数(interrupt handler)来处理用户的请求),以获得内核服务的接口。并不是所有的API函数都一一对应一个系统的调用,有时,一个API函数会需要几个系统调用共同来完成函数的功能,甚至一些API函数不需要调用相应的系统调用,不需要内核提供的服务。
问题二:什么是 回调函数?
回调函数就是一个通过函数指针调用的函数,使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。也就是把需要执行的代码地址给系统,系统在恰当的时候执行。这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。类似于中断处理机制,中断在某方面使计算机变得智能!
系统回调函数必须是由系统调用,但是这个函数可以是用户编写的,完成相应的功能服务。