阅读:1097回复:2
关于Windows 98/SE/ME下面的IRQL...
众所周知,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()服务有时灵有时失效的毛病。 |
|
沙发#
发布于:2003-12-28 20:40
顶! :D
|
|
板凳#
发布于:2003-12-30 20:11
曾经看到一个资料上提到说好像9x下面的IRQL是fake,实际是关于IRQ的一个数值纪录。原话具体是怎么说的,记不清了。好像是Walter的那本书里提到的。
|
|
|