阅读:1345回复:7
这段代码在Upload()中为什么会蓝屏???
VOID OnUnload(IN PDRIVER_OBJECT DriverObject)
{ UNICODE_STRING uniString; PDEVICE_OBJECT deviceObject = DriverObject->DeviceObject; __asm { push eax mov eax, CR0 add eax, 0FFFEFFFFh mov CR0, eax pop eax } /* 不断的调试中,发现蓝屏的原因是在这个位置加入的汇编代码,不明白在DriverEntry中这段汇编代码是正常的 而加在这里却会蓝屏,高人能解释下不??? InterlockedExchange((PLONG)&SYSTEMSERVICE(ZwQueryDirectoryFile), (LONG)OldZwQueryDirectoryFile); */ __asm { push eax mov eax, CR0 or eax, NOT 0FFFEFFFFh mov CR0, eax pop eax } RtlInitUnicodeString (&uniString, L"\\DosDevices\\Ding"); IoDeleteSymbolicLink(&uniString); if (deviceObject != NULL) { IoDeleteDevice(deviceObject); } DbgPrint("OnUpload\n"); return; } |
|
沙发#
发布于:2008-06-16 21:40
因为还有调用在使用存在,自然蓝屏~~
请参看以前的类似的文章~ |
|
|
板凳#
发布于:2008-06-17 10:28
刚开始学驱动,还是找不到原因,能再指明下不??
|
|
地板#
发布于:2008-06-17 10:35
呵呵,建议非极端情况,不要再代码里嵌汇编,很多时候不用汇编也可以搞定的,,,
|
|
地下室#
发布于:2008-06-17 15:54
64bit编译器好像已经遗弃 asm了
|
|
5楼#
发布于:2008-06-18 10:40
问题解决,但不知原因,在DRIVERENTRY中加入汇编正常,不加则蓝屏
在UPLOAD不用加入,驱动也可正常运行,加入则蓝屏 |
|
6楼#
发布于:2008-06-18 20:44
老v估计理解错了,认为他是在hook ssdt吧?
|
|
|
7楼#
发布于:2008-06-19 08:48
引用第4楼Delphips于2008-06-17 15:54发表的 : 64bit照样可以在VC中使用汇编,ASM的好处只有深入使用才能体会. |
|
|