阅读:1236回复:2
关于Vxd的运行级别――急!!!
请问在Vxd中又没有类似于NdisMSynchronizeWithInterrupt 这种提升IRQL,以免被指定的中断打断的函数呀?
还有Vxd一般运行于在什么IRQL级别上? DISPATCH 的级别一般是 2 可我用 Get_Thread_Win32_Pri取得的线程优先级怎么都是8呀? |
|
|
沙发#
发布于:2001-08-14 21:00
VXD通常在PASSIVE_LEVEL级运行,在分发例程中,提升到DISPATCH_LEVEL级运行。
在DDK中,KeRaiseIrql可以提升IRQL级。 |
|
|
板凳#
发布于:2001-08-15 13:41
KeRaiseIrql是给WDM提供的函数吧 在VXD中好像用不了 而且不知道你有没有试过Get_Thread_Win32_Pri服务 我用它读到的得返回值是 8 , 这个返回值不是指优先级么? 如下调用: KIRQL IRQL_GetLevel() { KIRQL retThis; _asm xor eax, eax // we will clobber eax _asm mov ecx, eax // we will clobber ecx _asm mov edx, eax // we will clobber edx _asm xor edi, edi // we will clobber edi _asm xor esi, esi // we will clobber esi VxDCall(Get_Cur_Thread_Handle) // edi <- current thread handle VxDCall(Get_Thread_Win32_Pri) // eax <- current thread priority _asm mov retThis, al return retThis; } |
|
|