API函数与操作系统的联系

既然api函数是由操作系统提供的应用程序接口函数,那是不是在调用或使用这些函数的时候,都会经过操作系统,也就是会跟操作系统打交道,先要去操作系统里进行调用,然后才把它的功能返回到自己的程序里啊?
就像注册窗口,创建窗口,是不是都会调用操作系统功能,然后在操作系统在返回给程序消息,让程序执行。
谁帮忙说一下其中的原理啊?

第1个回答  2008-08-14
呵呵,您问的问题很有深度。咱们先拿windows说,再说dos。
windows规定一切应用程序的优先级是3,windows自己是0,0最高,3最低。因此,windows不允许应用程序直接访问硬件。可是比如您想要对磁盘进行读写,该怎么办?呵呵,windows就说了,我给你一个API,你去调用它就行了。这是系统级的API,您必须通过API这个“代理”来访问硬件资源,否则,呵呵,您经常会看到“xxxx非法操作”,然后应用程序就被kill了。在说一些应用上的API,我假设您会C语言,C语言里面没有链表,因此,当您想使用链表的时候,就要自己写。对于此类情况,操作系统会提供一些比较实用的功能给您,让您专心研究程序逻辑,其他一些简单的代码,就让操作系统提供。所以C++和C#您就不用自己写链表了,这些语言提供了API。

看到这里,您应该知道API的主要2个作用。
1:应用及API,替您写好一些函数,来方便您写程序。当然,您也可以自己实现APIg所提供的功能。但很麻烦。
2:系统及API,您没的可选,您想和硬件打交道,就得使用。操作系统不让您直接和硬件打交道。

对于DOS来说,呵呵,API就是interrupt 21h。DOS和您写的应用程序优先级都是0级,呵呵,您可以为所欲为。比如说引导行病毒....

PS:这都是我自己写的,可不是抄写的,是我对操作系统的理解,希望有帮助。本回答被提问者采纳
第2个回答  2008-08-15
是的,就是叫系统和硬件打交道,而不是你自己写面向硬件代码和硬件打交道,这是两回事,你必须经过WINDOWS的API接口,才能间接的访问硬件,而不是像DOS,可以用中断函数功能来访问底层,VC也是一样的道理。

总之,WINDOWS特别是XP时期的操作系统,都不给你直接访问的权利,他们使用RING0级别的权利,而你只能使用RING3(应用程序)的 功能,你不是老大,微软才是老大,除非你自己写操作系统,或者用UNIX,LINUX,以及DOS,才有可能允许你访问。

WINDOWS下的编程说的难听点就是堆积木,你不必干什么,全有系统做,使用WINDOWS的API编程虽然成就了许多程序员,但也培养了人的懒惰精神,而中国,人的懒惰精神是根深蒂固的。XP之流正好适合大家。我曾经访问过WINDOWS的内核,结果失败,在TC下编程就没有这样的问题。人家的系统是DOS。明白了吧
第3个回答  2008-08-15
API(Application Programming Interface)就是应用程序编程接口。
Windows应用程序都要依靠API实现,通常编程时使用的控件,归根结底都是用API实现的。
API也分两层,通常我们说的是用户层API,更底层的API叫 Native API ,可以叫原生API,用户层的API最终也是去调用 Native API 来实现,现在的各种杀毒软件一般都会HOOK一些 Native API 。Native API 在 ntdll.dll 中,命名一般都是由用户层API名字前加上“Nt”构成。
PS:这也是我自己的看法,不是复制的。
第4个回答  2008-08-14
应用程序接口(API).
简单说就是操作系统提供给用户(一般是程序员)的实现某些功能的接口(函数),而这些功能与操作系统的特点有密切联系.
说深了我也说不清楚..
相似回答