Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: zyq8709   发起时间: 2011-05-31 15:39 下午   回复: 2

Print Search
帖子排序:    
   2011-05-31, 15:39 下午
zyq8709 离线,最后访问时间: 2019/8/6 21:05:02 zyq8709

发帖数前10位
注册: 2011-04-19
发 贴: 74
为何内核程序不能调用win32 api?
Reply Quote
在驱动编写的书上都说驱动不能调用用户态下的api,请问原因是什么?我在源码中寻找,也没找到相关的语句。按理说内核在ring0下,应该可访问所有代码。那驱动程序除了不能用win32 api,自己编写的不涉及调用api的位于用户空间代码片段也可不可以调用呢?
请老师们帮忙解答一下这个问题吧!多谢!

IP 地址: 已记录   报告
   2011-05-31, 17:57 下午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 为何内核程序不能调用win32 api?
Reply Quote
可以。请参见 NT Insider 1996 年的文章:《Understanding and Using Execution Context in Windows NT Drivers》

http://advdbg.org/dfstore//img/Understanding%20and%20Using%20Execution%20Context%20in%20Windows%20NT%20Drivers.pdf

文章中的示例代码:
(VOID)(*UserFunctToCall)((UserArg));
这一句 Call 了一个环三地址。如果你真的打算在产品里这么做,需要慎之又慎。
IP 地址: 已记录   报告
   2011-06-01, 16:59 下午
rong_bo 离线,最后访问时间: 2011/9/5 12:57:46 wrong

发帖数前10位
注册: 2011-01-07
发 贴: 66
Re: 为何内核程序不能调用win32 api?
Reply Quote
最后一个例子,在驱动中调用了winmain,相当于把整个win32程序放在kernel中去了。
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 为何内核程序不能调用win32 api?

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.