阅读:6984回复:28
急急急,求助!请高人帮忙看看,拜托!(已经自己解决,多谢各位)
这是我写一个虚拟打印机的驱动程序;是参照DDK中的列子写的,
在使用的过程中发现一下问题: 在有些windows机器打印会蓝屏,而有些windows机器就不会蓝屏; 有些机器一开始不会蓝屏,过一段时间就又会打印蓝屏了;不知道是什么原因???? 经过使用WinDBG调试,是在调用EngBitBlt函数的时候导致了蓝屏,不知道是什么原因。 蓝屏显示错误:0x00000007 UNEXPECTED_KERNEL_MODE_TRAP 自己调试了很长时间没有找到原因, 请高人帮忙看看!急急急 附件中是虚拟打印驱动程序源码!! (已经解决了,是DEVINFO结构参数设置不对,cxDither cyDither成员不能为0) |
|
沙发#
发布于:2007-07-30 14:11
已经解决了,是DEVINFO结构参数设置不对,cxDither cyDither成员不能为0,赋值为16即可;
还是要多谢各位同仁的热心回答。 |
|
板凳#
发布于:2007-07-24 11:05
难得没有人能回答我嘛?自己再顶一下。
|
|
地板#
发布于:2007-07-19 23:05
最新调试和测试结果,这个打印驱动蓝屏问题原来windows的KB925902补丁有关;只要升级一下windows的KB935843补丁就不会蓝屏了;但是又出现了新的问题:
升级KB935843补丁前,打印黑白图象时候所产生的抖动效果没有了;可以比较打印测试前后的效果对比: |
|
地下室#
发布于:2007-07-19 16:32
最新发现,卸载掉KB925902就不会蓝屏了,这是什么原因啊;驱动程序到底那里有问题啊?
|
|
5楼#
发布于:2007-07-19 10:37
我继续测试了机器,发现:
**在安装windows2000+SP4没有使用windows在线更新的机器上,可以正常打印;不会蓝屏; 当我使用windows的在线更新,将windows2000的所有更新安装后,使用虚拟打印机打印的时候就会蓝屏。 |
|
6楼#
发布于:2007-07-19 08:52
先多谢zhaock的答复,下面是我按照你说的方法,设置了symbol path为srv*c:\windows\symbols*http://msdl.microsoft.com/download/symbols后,!analyze -v的分析结果:
Microsoft (R) Windows Debugger Version 6.6.0007.5 Copyright (c) Microsoft Corporation. All rights reserved. Loading Dump File [C:\WINNT\MEMORY.DMP] Kernel Complete Dump File: Full address space is available ************************************************************ WARNING: Dump file has been truncated. Data may be missing. ************************************************************ Symbol search path is: SRV*f:\localsymbols*http://msdl.microsoft.com/download/symbols Executable search path is: Windows 2000 Kernel Version 2195 (Service Pack 4) UP Free x86 compatible Product: Server Kernel base = 0x80400000 PsLoadedModuleList = 0x80481580 Debug session time: Wed Jul 18 18:05:24.140 2007 (GMT+8) System Uptime: 0 days 0:06:33.890 Loading Kernel Symbols ....................................................................................................................... Loading User Symbols ....................................................................................... Loading unloaded module list ............. ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* Use !analyze -v to get detailed debugging information. BugCheck 7F, {0, 0, 0, 0} Probably caused by : win32k.sys ( win32k!UMPDDrvDitherColor+7b ) Followup: MachineOwner --------- kd> .reload Loading Kernel Symbols ....................................................................................................................... Loading User Symbols ....................................................................................... Loading unloaded module list ............. kd> !analyze -v ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* UNEXPECTED_KERNEL_MODE_TRAP (7f) This means a trap occurred in kernel mode, and it's a trap of a kind that the kernel isn't allowed to have/catch (bound trap) or that is always instant death (double fault). The first number in the bugcheck params is the number of the trap (8 = double fault, etc) Consult an Intel x86 family manual to learn more about what these traps are. Here is a *portion* of those codes: If kv shows a taskGate use .tss on the part before the colon, then kv. Else if kv shows a trapframe use .trap on that value Else .trap on the appropriate frame will show where the trap was taken (on x86, this will be the ebp that goes with the procedure KiTrap) Endif kb will then show the corrected stack. Arguments: Arg1: 00000000, EXCEPTION_DIVIDED_BY_ZERO Arg2: 00000000 Arg3: 00000000 Arg4: 00000000 Debugging Details: ------------------ BUGCHECK_STR: 0x7f_0 TRAP_FRAME: f334ef10 -- (.trap fffffffff334ef10) ErrCode = 00000000 eax=ffffffff ebx=00000000 ecx=00000000 edx=00000000 esi=00000000 edi=00000020 eip=a01355e4 esp=f334ef84 ebp=f334f064 iopl=0 nv up ei pl zr na pe nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246 win32k!UMPDDrvDitherColor+0x7b: a01355e4 f7f6 div eax,esi Resetting default scope DEFAULT_BUCKET_ID: INTEL_CPU_MICROCODE_ZERO PROCESS_NAME: spoolsv.exe LAST_CONTROL_TRANSFER: from 804c483d to 8042a86d STACK_TEXT: f334eea4 804c483d 0000007f 00000020 00000000 nt!KeBugCheck+0xf f334ef04 80465ca5 f334ef10 f334f2b4 f334ef70 nt!Ki386CheckDivideByZeroTrap+0x3f f334ef04 a01355e4 f334ef10 f334f2b4 f334ef70 nt!KiTrap00+0x6d f334f064 a00243c6 e4a27008 00000002 002b59ff win32k!UMPDDrvDitherColor+0x7b f334f0f0 a00641fa 00000000 e491c424 a0064715 win32k!bGetRealizedBrush+0x293 f334f104 a0011316 e491c424 00000000 00000000 win32k!pvGetEngRbrush+0x1a f334f160 a00fdf0e e4a27008 00000000 00000000 win32k!EngBitBlt+0x18f f334f280 80465024 e491d2b8 00000000 00000000 win32k!NtGdiEngBitBlt+0x35b f334f280 77f72477 e491d2b8 00000000 00000000 nt!KiSystemService+0xc4 0148e5b4 77f672f9 01510000 00000000 00000000 GDI32!NtGdiEngBitBlt+0xb 0148e5fc 77e218db 0148ee60 0148e618 00000004 GDI32!GdiPrinterThunk+0x259 0148ee50 77f91baf 0148ee60 0000003c 0000003c USER32!__ClientPrinterThunk+0x2d 0148ee50 80431398 0148ee60 0000003c 0000003c ntdll!KiUserCallbackDispatcher+0x13 f334f574 8042f520 f334f608 f334f600 f334f830 nt!KiCallUserMode+0x4 f334f5d8 a0092d29 0000005a f334f708 0000003c nt!KeUserModeCallback+0xa6 f334f624 a0092dec 0000005a f334f708 0000003c win32k!pppUserModeCallback+0x3f f334f63c a0136330 f334f708 0000003c f334f744 win32k!ClientPrinterThunk+0x40 f334f748 a00d1e06 e491d2b8 00000000 00000000 win32k!UMPDDrvBitBlt+0x160 f334f788 a00c1ccb e491d2b8 f334f82c e491c424 win32k!EngPaint+0x61 f334f8f8 a003f13d e491d2b8 f334fa70 f334f97c win32k!EngFillPath+0x1a9 f334f948 a003edbe 60008430 f334fa44 e491d2a8 win32k!EPATHOBJ::bSimpleFill+0x1a4 f334fa50 a003f247 00000d0d e491c070 f334fc88 win32k!EPATHOBJ::bStrokeAndOrFill+0x3d0 f334fc98 a0026fda 03210348 f334fcd0 f334fd2c win32k!GrePolyPolygonInternal+0xd0 f334fd48 80465024 03210348 0148eee0 0148eed0 win32k!NtGdiPolyPolyDraw+0x204 f334fd48 77f72105 03210348 0148eee0 0148eed0 nt!KiSystemService+0xc4 0148eec0 77f6e7c2 03210348 0148eee0 00000005 GDI32!NtGdiPolyPolyDraw+0xb 0148f2e4 77f690be 03210348 000c5750 00000004 GDI32!MRBP16::bPlay+0xa7 0148f360 77f68e90 03210348 000c5750 019927a8 GDI32!PlayEnhMetaFileRecord+0x37 0148f3d8 77f687cb 03210348 00002788 00000000 GDI32!bInternalPlayEMF+0x688 0148f3f0 77f64d98 03210348 0a460345 000beb68 GDI32!PlayEnhMetaFile+0x33 0148f490 77f64ffe 000c4f38 00000000 00000000 GDI32!InternalGdiPlayPageEMF+0x228 0148f4f8 786d309b 000c4f38 00000000 000c4f74 GDI32!GdiEndPageEMF+0xcd 0148f530 786d3201 000c4f38 03210348 00000001 localspl!PrintOneSideForwardEMF+0x13b 0148f574 786d3a45 000c4f38 00000001 00000001 localspl!PrintForwardEMF+0xa6 0148f5ac 786d411e 000c4f38 03210348 00000000 localspl!PrintEMFSingleCopy+0xd9 0148f6e8 786d2032 00cbe680 0148f710 786c1aac localspl!PrintEMFJob+0x518 0148f6f4 786c1aac 00cbe680 0148f710 00cb6de8 localspl!PrintDocumentOnPrintProcessor+0x3a 0148fd68 786c15cb 00000000 0148ff94 00000010 localspl!PrintDocumentThruPrintProcessor+0x19f 0148ffb4 77e6b3bc 00000000 00000010 0113fc50 localspl!PortThread+0x24a 0148ffec 00000000 786c137f 00cb6de8 00000000 KERNEL32!BaseThreadStart+0x52 STACK_COMMAND: kb FOLLOWUP_IP: win32k!UMPDDrvDitherColor+7b a01355e4 f7f6 div eax,esi SYMBOL_STACK_INDEX: 3 SYMBOL_NAME: win32k!UMPDDrvDitherColor+7b FOLLOWUP_NAME: MachineOwner MODULE_NAME: win32k IMAGE_NAME: win32k.sys DEBUG_FLR_IMAGE_TIMESTAMP: 45ed063d FAILURE_BUCKET_ID: 0x7f_0_win32k!UMPDDrvDitherColor+7b BUCKET_ID: 0x7f_0_win32k!UMPDDrvDitherColor+7b Followup: MachineOwner --------- |
|
7楼#
发布于:2007-07-18 18:00
没有注意看,你贴了两组,只看到第二组了.第一组的b机器的dump信息比较多.但看上去还是有些问题,好象符号不完全对,你在symbol path设置一下srv*c:\windows\symbols*http://msdl.microsoft.com/download/symbols,不用装符号,连网,让windbg 自己到ms的网站上下symbols,肯定是对的.再把b机器的结果贴上来
|
|
8楼#
发布于:2007-07-18 17:07
符号表我已经安装了,就是从微软网站上下载的符号表安装包,一共安装以下几个符号表安装包:
Windows_2000_RTM_Symbols.exe SP1SYM.exe sp2sym.exe sp2srp1sym_cn.exe w2ksp3sym_cn.exe w2ksp4sym_cn.exe Windows2000-KB891861-x86-Symbols-CHS.EXE |
|
9楼#
发布于:2007-07-18 15:30
windbg打开dump文件的时候,首先要安装对系统符号表,不然无法分析.安装好系统符号表,再贴上几个不同的结果来.
|
|
10楼#
发布于:2007-07-18 09:01
每种情况我都测试了多次;同一台机器结果一样;不同的机器!analyze -v分析的结果的都不一样;很奇怪;拜托,请大家看看。
|
|
11楼#
发布于:2007-07-18 09:00
2。不安装Windows2000-KB891861-x86-Symbols-CHS.EXE符号表安装包,结果如下:
机器A: Microsoft (R) Windows Debugger Version 6.6.0007.5 Copyright (c) Microsoft Corporation. All rights reserved. Loading Dump File [C:\WINNT\MEMORY.DMP] Kernel Complete Dump File: Full address space is available ************************************************************ WARNING: Dump file has been truncated. Data may be missing. ************************************************************ Symbol search path is: C:\WINNT\Symbols Executable search path is: *** WARNING: symbols timestamp is wrong 0x45ec3c8f 0x3ee6c002 for ntoskrnl.exe Windows 2000 Kernel Version 2195 (Service Pack 4) UP Free x86 compatible Product: Server Kernel base = 0x80400000 PsLoadedModuleList = 0x80481580 Debug session time: Tue Jul 17 19:46:19.734 2007 (GMT+8) System Uptime: 0 days 0:42:51.500 *** WARNING: symbols timestamp is wrong 0x45ec3c8f 0x3ee6c002 for ntoskrnl.exe Loading Kernel Symbols ....................................................................................................................... Loading User Symbols ..................................................................................... Loading unloaded module list ...............*** WARNING: symbols timestamp is wrong 0x41e648e0 0x3ef31d0f for ntdll.dll ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* Use !analyze -v to get detailed debugging information. BugCheck 7F, {0, 0, 0, 0} Probably caused by : ntoskrnl.exe ( nt!IopInvalidateRelationsInList+65 ) Followup: MachineOwner --------- kd> !analyze -v ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* UNEXPECTED_KERNEL_MODE_TRAP (7f) This means a trap occurred in kernel mode, and it's a trap of a kind that the kernel isn't allowed to have/catch (bound trap) or that is always instant death (double fault). The first number in the bugcheck params is the number of the trap (8 = double fault, etc) Consult an Intel x86 family manual to learn more about what these traps are. Here is a *portion* of those codes: If kv shows a taskGate use .tss on the part before the colon, then kv. Else if kv shows a trapframe use .trap on that value Else .trap on the appropriate frame will show where the trap was taken (on x86, this will be the ebp that goes with the procedure KiTrap) Endif kb will then show the corrected stack. Arguments: Arg1: 00000000, EXCEPTION_DIVIDED_BY_ZERO Arg2: 00000000 Arg3: 00000000 Arg4: 00000000 Debugging Details: ------------------ BUGCHECK_STR: 0x7f_0 DEFAULT_BUCKET_ID: DRIVER_FAULT LAST_CONTROL_TRANSFER: from 00000000 to 8042a86d STACK_TEXT: f30a3f04 00000000 00000000 00000000 00000000 nt!IopInvalidateRelationsInList+0x65 STACK_COMMAND: kb FOLLOWUP_IP: nt!IopInvalidateRelationsInList+65 8042a86d c20400 ret 4 SYMBOL_STACK_INDEX: 0 FOLLOWUP_NAME: MachineOwner MODULE_NAME: nt IMAGE_NAME: ntoskrnl.exe DEBUG_FLR_IMAGE_TIMESTAMP: 45ec3c8f SYMBOL_NAME: nt!IopInvalidateRelationsInList+65 FAILURE_BUCKET_ID: 0x7f_0_nt!IopInvalidateRelationsInList+65 BUCKET_ID: 0x7f_0_nt!IopInvalidateRelationsInList+65 Followup: MachineOwner --------- 机器B: Microsoft (R) Windows Debugger Version 6.6.0007.5 Copyright (c) Microsoft Corporation. All rights reserved. Loading Dump File [C:\WINNT\MEMORY.DMP] Kernel Complete Dump File: Full address space is available Symbol search path is: C:\WINNT\Symbols Executable search path is: *** WARNING: symbols timestamp is wrong 0x45ec3c8f 0x3ee650b3 for ntkrnlmp.exe Windows 2000 Kernel Version 2195 (Service Pack 4) UP Free x86 compatible Product: Server, suite: Enterprise Kernel base = 0x80400000 PsLoadedModuleList = 0x80485b80 Debug session time: Tue Jul 17 19:19:19.361 2007 (GMT+8) System Uptime: 0 days 1:32:41.171 *** WARNING: symbols timestamp is wrong 0x45ec3c8f 0x3ee650b3 for ntkrnlmp.exe Loading Kernel Symbols ....................................................................................................................... Loading User Symbols ................................................................ Loading unloaded module list ...........*** WARNING: symbols timestamp is wrong 0x41e648e0 0x3ef31d0f for ntdll.dll ERROR: FindPlugIns 80070005 ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* Use !analyze -v to get detailed debugging information. BugCheck 7F, {0, 0, 0, 0} Probably caused by : ntkrnlmp.exe ( nt!KeDelayExecutionThread+1b5 ) Followup: MachineOwner --------- kd> .reload *** WARNING: symbols timestamp is wrong 0x45ec3c8f 0x3ee650b3 for ntkrnlmp.exe Loading Kernel Symbols ....................................................................................................................... Loading User Symbols ................................................................ Loading unloaded module list ...........*** WARNING: symbols timestamp is wrong 0x41e648e0 0x3ef31d0f for ntdll.dll kd> !analyze -v ERROR: FindPlugIns 80070005 ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* UNEXPECTED_KERNEL_MODE_TRAP (7f) This means a trap occurred in kernel mode, and it's a trap of a kind that the kernel isn't allowed to have/catch (bound trap) or that is always instant death (double fault). The first number in the bugcheck params is the number of the trap (8 = double fault, etc) Consult an Intel x86 family manual to learn more about what these traps are. Here is a *portion* of those codes: If kv shows a taskGate use .tss on the part before the colon, then kv. Else if kv shows a trapframe use .trap on that value Else .trap on the appropriate frame will show where the trap was taken (on x86, this will be the ebp that goes with the procedure KiTrap) Endif kb will then show the corrected stack. Arguments: Arg1: 00000000, EXCEPTION_DIVIDED_BY_ZERO Arg2: 00000000 Arg3: 00000000 Arg4: 00000000 Debugging Details: ------------------ BUGCHECK_STR: 0x7f_0 DEFAULT_BUCKET_ID: INTEL_CPU_MICROCODE_ZERO PROCESS_NAME: spoolsv.exe LAST_CONTROL_TRANSFER: from 8046902a to 8042be01 STACK_TEXT: f306df04 8046902a f306df10 f306e2b4 00000000 nt!KeDelayExecutionThread+0x1b5 f306df10 00000000 00000001 00010101 f306e270 nt!KiTrap0D+0x49e STACK_COMMAND: kb FOLLOWUP_IP: nt!KeDelayExecutionThread+1b5 8042be01 c20400 ret 4 SYMBOL_STACK_INDEX: 0 SYMBOL_NAME: nt!KeDelayExecutionThread+1b5 FOLLOWUP_NAME: MachineOwner MODULE_NAME: nt IMAGE_NAME: ntkrnlmp.exe DEBUG_FLR_IMAGE_TIMESTAMP: 45ec3c8f FAILURE_BUCKET_ID: 0x7f_0_VRFK_nt!KeDelayExecutionThread+1b5 BUCKET_ID: 0x7f_0_VRFK_nt!KeDelayExecutionThread+1b5 Followup: MachineOwner --------- |
|
12楼#
发布于:2007-07-18 08:59
昨天晚上调试结果如下:
测试机器一共有两台机器会打印蓝屏,我分别标识为机器A和机器B,机器的OS为:windows 2000 Advance Server Service Pack4;重新安装了符号表,符号表安装包有以下几个: Windows_2000_RTM_Symbols.exe SP1SYM.exe sp2sym.exe sp2srp1sym_cn.exe w2ksp3sym_cn.exe w2ksp4sym_cn.exe Windows2000-KB891861-x86-Symbols-CHS.EXE 由于不确定Windows2000-KB891861-x86-Symbols-CHS.EXE符号表安装表是否要安装;因此我做了两种情况的测试: 1。安装Windows2000-KB891861-x86-Symbols-CHS.EXE符号表安装包,结果如下: 机器A: Microsoft (R) Windows Debugger Version 6.6.0007.5 Copyright (c) Microsoft Corporation. All rights reserved. Loading Dump File [C:\WINNT\MEMORY.DMP] Kernel Complete Dump File: Full address space is available ************************************************************ WARNING: Dump file has been truncated. Data may be missing. ************************************************************ Symbol search path is: C:\WINNT\Symbols Executable search path is: *** WARNING: symbols timestamp is wrong 0x45ec3c8f 0x427b58bb for ntoskrnl.exe Windows 2000 Kernel Version 2195 (Service Pack 4) UP Free x86 compatible Product: Server Kernel base = 0x80400000 PsLoadedModuleList = 0x80481580 Debug session time: Tue Jul 17 19:46:19.734 2007 (GMT+8) System Uptime: 0 days 0:42:51.500 *** WARNING: symbols timestamp is wrong 0x45ec3c8f 0x427b58bb for ntoskrnl.exe Loading Kernel Symbols ....................................................................................................................... Loading User Symbols ..................................................................................... Loading unloaded module list ............... ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* Use !analyze -v to get detailed debugging information. BugCheck 7F, {0, 0, 0, 0} Probably caused by : ntoskrnl.exe ( nt!KeGetBugMessageText+5 ) Followup: MachineOwner --------- kd> !analyze -v ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* UNEXPECTED_KERNEL_MODE_TRAP (7f) This means a trap occurred in kernel mode, and it's a trap of a kind that the kernel isn't allowed to have/catch (bound trap) or that is always instant death (double fault). The first number in the bugcheck params is the number of the trap (8 = double fault, etc) Consult an Intel x86 family manual to learn more about what these traps are. Here is a *portion* of those codes: If kv shows a taskGate use .tss on the part before the colon, then kv. Else if kv shows a trapframe use .trap on that value Else .trap on the appropriate frame will show where the trap was taken (on x86, this will be the ebp that goes with the procedure KiTrap) Endif kb will then show the corrected stack. Arguments: Arg1: 00000000, EXCEPTION_DIVIDED_BY_ZERO Arg2: 00000000 Arg3: 00000000 Arg4: 00000000 Debugging Details: ------------------ BUGCHECK_STR: 0x7f_0 DEFAULT_BUCKET_ID: INTEL_CPU_MICROCODE_ZERO PROCESS_NAME: spoolsv.exe LAST_CONTROL_TRANSFER: from 00000000 to 8042a86d STACK_TEXT: f30a3f04 00000000 00000000 00000000 00000000 nt!KeGetBugMessageText+0x5 STACK_COMMAND: kb FOLLOWUP_IP: nt!KeGetBugMessageText+5 8042a86d c20400 ret 4 SYMBOL_STACK_INDEX: 0 FOLLOWUP_NAME: MachineOwner MODULE_NAME: nt IMAGE_NAME: ntoskrnl.exe DEBUG_FLR_IMAGE_TIMESTAMP: 45ec3c8f SYMBOL_NAME: nt!KeGetBugMessageText+5 FAILURE_BUCKET_ID: 0x7f_0_nt!KeGetBugMessageText+5 BUCKET_ID: 0x7f_0_nt!KeGetBugMessageText+5 Followup: MachineOwner --------- 机器B: Microsoft (R) Windows Debugger Version 6.6.0007.5 Copyright (c) Microsoft Corporation. All rights reserved. Loading Dump File [C:\WINNT\MEMORY.DMP] Kernel Complete Dump File: Full address space is available Symbol search path is: C:\WINNT\Symbols Executable search path is: *** WARNING: symbols timestamp is wrong 0x45ec3c8f 0x427b58bb for ntkrnlmp.exe Windows 2000 Kernel Version 2195 (Service Pack 4) UP Free x86 compatible Product: Server, suite: Enterprise Kernel base = 0x80400000 PsLoadedModuleList = 0x80485b80 Debug session time: Tue Jul 17 20:46:33.421 2007 (GMT+8) System Uptime: 0 days 0:20:25.343 *** WARNING: symbols timestamp is wrong 0x45ec3c8f 0x427b58bb for ntkrnlmp.exe Loading Kernel Symbols ....................................................................................................................... Loading User Symbols ............................................................... Loading unloaded module list ......... ERROR: FindPlugIns 80070005 ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* Use !analyze -v to get detailed debugging information. BugCheck 7F, {0, 0, 0, 0} *** WARNING: symbols timestamp is wrong 0x45ed4dbc 0x425670f4 for GDI32.dll *** WARNING: symbols timestamp is wrong 0x46236f7e 0x42a0669b for KERNEL32.dll *** ERROR: Symbol file could not be found. Defaulted to export symbols for mfprinter.DLL - Probably caused by : win32k.sys ( win32k!BltLnkSrcCopyMsk8+74 ) Followup: MachineOwner --------- kd> !analyze -v ERROR: FindPlugIns 80070005 ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* UNEXPECTED_KERNEL_MODE_TRAP (7f) This means a trap occurred in kernel mode, and it's a trap of a kind that the kernel isn't allowed to have/catch (bound trap) or that is always instant death (double fault). The first number in the bugcheck params is the number of the trap (8 = double fault, etc) Consult an Intel x86 family manual to learn more about what these traps are. Here is a *portion* of those codes: If kv shows a taskGate use .tss on the part before the colon, then kv. Else if kv shows a trapframe use .trap on that value Else .trap on the appropriate frame will show where the trap was taken (on x86, this will be the ebp that goes with the procedure KiTrap) Endif kb will then show the corrected stack. Arguments: Arg1: 00000000, EXCEPTION_DIVIDED_BY_ZERO Arg2: 00000000 Arg3: 00000000 Arg4: 00000000 Debugging Details: ------------------ BUGCHECK_STR: 0x7f_0 DEFAULT_BUCKET_ID: INTEL_CPU_MICROCODE_ZERO PROCESS_NAME: spoolsv.exe TRAP_FRAME: f3bd4f10 -- (.trap fffffffff3bd4f10) ErrCode = 00000000 eax=ffffffff ebx=00000000 ecx=00000000 edx=00000000 esi=00000000 edi=00000020 eip=a01355e4 esp=f3bd4f84 ebp=f3bd5064 iopl=0 nv up ei pl zr na pe nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246 win32k!BltLnkSrcCopyMsk8+0x74: a01355e4 f7f6 div eax,esi Resetting default scope LAST_CONTROL_TRANSFER: from 804c9149 to 8042be01 STACK_TEXT: f3bd5064 a00243c6 e4771008 00000002 002b59ff win32k!BltLnkSrcCopyMsk8+0x74 f3bd50f0 a00641fa 00000000 e471fe04 a0064715 win32k!bGetRealizedBrush+0x38a f3bd5280 80468389 e2dc96b8 00000000 00000000 win32k!EngRealizeBrush+0x513 f3bd5280 77f72477 e2dc96b8 00000000 00000000 nt!KiServiceExit+0x6e 00dce5b4 77f672f9 01010000 00000000 00000000 GDI32!MRBB::bInit+0xef 00dce648 77e764f9 0000020c 00000000 00000000 GDI32!IcmSaveDC+0x42 00dce6b4 78012d3d 0000020c 00dce6dc 0000003b KERNEL32!WriteFile+0x15d 00dceaf4 77e67ef0 00000000 00000004 78013026 MSVCRT!_write_lk+0xce 00dceb04 78013409 00281fb4 780130f8 00000004 KERNEL32!BaseDllInitializeMemoryManager+0x1f 00dceb0c 780130f8 00000004 780130cc 00000000 MSVCRT!_unlock_fhandle+0x21 00dceb44 78001199 00287098 00dceb90 7800f025 MSVCRT!_close+0x94 00dceb50 7800f025 0000001f 7800fe0e 7803a6f0 MSVCRT!_unlock+0x13 00dceb58 7800fe0e 7803a6f0 7800fe03 00dd8d3c MSVCRT!_unlock_file+0x22 00dceb90 00dd2fdd 7803a6f0 00dd8d24 00000001 MSVCRT!fclose+0x6f 00dceca0 00dd2219 00dd141c 00000001 00dcecfc mfprinter!DrvQueryDriverInfo+0x1410 00dcecb8 77f6720a 01010000 01010034 00000002 mfprinter!DrvQueryDriverInfo+0x64c 00dcef1c 00000000 000013a4 00000b54 00001371 GDI32!IcmSetSourceColorSpace+0x1ee STACK_COMMAND: .trap 0xfffffffff3bd4f10 ; kb FOLLOWUP_IP: win32k!BltLnkSrcCopyMsk8+74 a01355e4 f7f6 div eax,esi SYMBOL_STACK_INDEX: 0 SYMBOL_NAME: win32k!BltLnkSrcCopyMsk8+74 FOLLOWUP_NAME: MachineOwner MODULE_NAME: win32k IMAGE_NAME: win32k.sys DEBUG_FLR_IMAGE_TIMESTAMP: 45ed063d FAILURE_BUCKET_ID: 0x7f_0_win32k!BltLnkSrcCopyMsk8+74 BUCKET_ID: 0x7f_0_win32k!BltLnkSrcCopyMsk8+74 Followup: MachineOwner --------- |
|
13楼#
发布于:2007-07-17 12:08
好的,我今天晚上多测试几次;多收集几个DUMP文件分析一下。
|
|
14楼#
发布于:2007-07-17 10:10
从你的!analyze -v的结果,看不出什么线索.你再生成几个dump文件,看看!analyze -v 是不是一样.
|
|
15楼#
发布于:2007-07-17 07:52
......
|
|
|
16楼#
发布于:2007-07-16 08:48
zhaock:
由于我没有能实现双机调试;所以我按照你的第一种方法调试了;调试结果同前面的是一样的。 各位帮我看看吧;实在是没有办法了,拜托了。 |
|
17楼#
发布于:2007-07-13 12:05
最近发现的现象;我的虚拟打印机是支持彩色打印输出的,在inc目录下的mfconfig.h文件中添加宏定义#define MFFUN_COLOR就可以了,重新编译后发现如下现象:
1。在有些机器上无论是彩色打印还是黑白打印都没有问题;而在有些机器上一开始打印没有问题,过一段时间后打印就会蓝屏。 2。在打印蓝屏的机器上,彩色打印不会有问题,而选择黑白打印就会蓝屏。 附件中的代码我更新了,现在支持彩色打印。 |
|
18楼#
发布于:2007-07-12 15:25
我明天再试一下双机模式调试吧。
|
|
19楼#
发布于:2007-07-12 15:10
不好意思;刚才去查看了一下我同事的机器;他的机器就是“完全内存转储”的,转储文件为:%SystemRoot%\MEMORY.DMP;
蓝屏后我把他的文件拷贝到我的机器上后,然后使用winDBG中的File->Open Crash Dump... 打开; 然后再输入命令:!analyze -v, 结果就是我上面帖子贴出来的那些内容。 我的代码中: BOOL APIENTRY DrvQueryDriverInfo( DWORD dwMode, PVOID pBuffer, DWORD cbBuf, PDWORD pcbNeeded ) { switch (dwMode) { case DRVQUERY_USERMODE: *pcbNeeded = sizeof(DWORD); if (pBuffer == NULL || cbBuf < sizeof(DWORD)) { SetLastError(ERROR_INSUFFICIENT_BUFFER); return FALSE; } *((PDWORD) pBuffer) = TRUE; return TRUE; default: SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } } 我的代码是用户模式的,至于为什么蓝屏,确实在使用这个虚拟打印机打印的时候蓝屏的,其它时候没有这样的现象;用户模式驱动导致蓝屏,我也很疑惑。 如果你不介意的话,你可以用build编译一下;然后安装一下试试。 我也真的是无计可施了,只好劳驾您了! |
|
上一页
下一页