slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
阅读:1096回复:2

关于Windows 98/SE/ME下面的IRQL...

楼主#
更多 发布于:2003-12-28 16:14
众所周知,Windows98/SE/ME已经支持了WDM驱动模型。既然是WDM吗,那就应该可以在代码里边调用KeAcquireSpinLock()等这些函数。在单CPU上,这个函数实际就是提升IRQL到DISPATCH_LEVEL级而已,可是在Windows98/SE/ME下面并没有IRQL这种概念,那NTKERN.VXD到底如何处理这种调用呢?有谁可以提供一些内幕资料? :D:D:D

我前天在VXD里边调用ExInterlockedInsertTailList()函数处理列表,出现蓝屏,提示什么“...Raised IRQL to 2(注:是DISPATCH_LEVEL)...”,可是从WDM里边调用这个函数却没有事,为什么??? 毕竟无论从VXD还是从WDM里边调用,最终都得调用NTKERN.VXD里边的同样服务,为什么从VXD调用却不行?

顺便说一下,从VXD里边调用KeInitializeEvent()、PsCreateSystemThread()等这些函数都没有事,很方便地实现了内核线程和Win32线程地同步,避免了VWIN32_SetWin32Event()服务有时灵有时失效的毛病。
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-12-28 20:40
顶! :D
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-30 20:11
曾经看到一个资料上提到说好像9x下面的IRQL是fake,实际是关于IRQ的一个数值纪录。原话具体是怎么说的,记不清了。好像是Walter的那本书里提到的。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部