windows 执行任何操作都是通过调用API来实现的么

说得具体点,我不太明白。最好能从windows的层次构架来解释一下,谢谢了... 说得具体点,我不太明白。最好能从windows的层次构架来解释一下,谢谢了 展开
 我来答
百度网友6b0209ccd
2006-02-06 · TA获得超过1394个赞
知道小有建树答主
回答量:743
采纳率:0%
帮助的人:0
展开全部
我觉得不一定全是。windows的应用程序的执行应该都是由API来完成的,包括普通的应用程序和系统的应用程序。但是驱动程序好像不是由API来完成的。使用DDK,开发驱动程序,是windows系统要依赖它,它比系统还底层。

不过你问的是任何操作了,如果单是从应用程序的角度来看的话,全部都是通过API来完成的了。看一个基本的win32的应用程序吧!

.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;include文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
szClassName db 'MyClass',0
szCaption db 'My First Window',0

.data?
hInstance dd ?
hWinMain dd ?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;窗口过程 ;窗口过程属于回调,回调由windows调用
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcWinMain proc hWnd,uMsg,wParam,lParam
local @stPs:PAINTSTRUCT
local @stRect:RECT
local @hDc

pushad

mov eax,uMsg
;下面的分支就是你所有的操作都要在这里处理,相应的消息使用相应的API函数。
.if eax==WM_CLOSE
invoke DestroyWindow,hWinMain
invoke PostQuitMessage,NULL
;****************************************************************************
.else
//如果相应某消息你不处理,可以使用DefWindowProc让windows自行处理
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.endif
;****************************************************************************

xor eax,eax

popad

ret

_ProcWinMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_WinMain proc
local @stWndClass:WNDCLASSEX
local @stMsg:MSG

invoke GetModuleHandle,NULL
mov hInstance,eax
invoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
;*****************************************************************************
;注册窗口类
;*****************************************************************************
invoke LoadCursor,0,IDC_ARROW
mov @stWndClass.hCursor,eax
push hInstance
pop @stWndClass.hInstance
mov @stWndClass.cbSize,sizeof WNDCLASSEX
mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW
mov @stWndClass.lpfnWndProc,offset _ProcWinMain
mov @stWndClass.hbrBackground,COLOR_WINDOW+1
mov @stWndClass.lpszClassName,offset szClassName

invoke RegisterClassEx,addr @stWndClass
;*****************************************************************************
;建立并显示窗口
;*****************************************************************************

invoke CreateWindowEx,WS_EX_CLIENTEDGE,offset szClassName,\
offset szCaption,WS_OVERLAPPEDWINDOW,\
100,100,600,400,\
NULL,NULL,hInstance,NULL
mov hWinMain,eax
invoke ShowWindow,hWinMain,SW_SHOWNORMAL
invoke UpdateWindow,hWinMain
;*****************************************************************************
;消息循环
;*****************************************************************************

.while TRUE
invoke GetMessage,addr @stMsg,NULL,0,0
.break .if eax==0
invoke TranslateMessage,addr @stMsg
invoke DispatchMessage,addr @stMsg
.endw

ret

_WinMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

start:
invoke _WinMain
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

end start

上面的程序是我学win32汇编时的内容。理解了这个就会明白一些基本的知识了。
雨愁轩
2006-01-26 · TA获得超过373个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:378万
展开全部
一般来说是的

一般widows可以看成层次结构的

应用
----
api
---------
驱动
---------------
硬件

也就是说你的程序一般是调用api来和硬件打交道,比如说你要打印东西 你就要调用打印相关的api函数,然后api去调用驱动程序,驱动程序去操作硬件。

但是,api是且仅是windows通过库的型式提供的一套函数而已,你自己也可以定义一套api出来。

而且自己开发一些设备的驱动程序当然也是可以的。(否则硬件厂商就该去找微软拼命了)

更有甚者你可以连驱动都抛掉直接去读写硬件地址(当然在某些版本的windows中低级地址是被保护的,要通过iopm替换等手段才能得到权限)。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7ab91a85c
2006-01-22 · TA获得超过149个赞
知道答主
回答量:370
采纳率:0%
帮助的人:0
展开全部
不一定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式