win32_api调用的问题。

请问各位大侠,kernel32.dll,user32.dll和gdi32.dll是系统底层调用,位于系统驱动和设备驱动上面,那么win32_api的函数原型在这些动态连接库中是只有原型定义?还是api函数对应的可执行代码也在这些动态连接库中?一些系统的参数(比如最大文件名长度)是否也在这些动态连接库中定义?
另外,系统驱动比如文件系统驱动到底有什么作用?当然是连接api和设备驱动程序,我的意思是说系统驱动具体是怎样工作的?比如使用了一个文件操作api函数,他怎样利用文件系统驱动和设备驱动程序工作的?
---------------------------------------------------------------

第一个问题:
dll文件中当然不仅仅包含了函数的原形,更包含了它的执行代码,不然dll文件就不会那么小了。这也是为什么我们在写程序时需要用到API时,只需要声明在哪个dll文件中的哪个函数名即可。
至于那些常数需要另外定义,我们会看到一些API声明后,还附带了CONST等的声明。

第二个问题:
没有完全理解你的意思。
一旦一个API函数被声明,程序的解释模块/编译模块就会去寻找这个DLL模块把它连接到自身的程序上去。
---------------------------------------------------------------

其实并不是所有API的函数都是封装在这三个dll文件中的,还有好多dll了。你可以在system目录下看看,那些dll文件几乎都包含了函数的定义,比如有个播放声音的API: PlaySound()就是包含在winmm.dll里的。

另外你可以看看这个http://www.ccw.com.cn/htm/app/aprog/01_3_20_2.asp,希望对你有帮助

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus