WDF pcie 驱动开发问题 重启蓝屏问题
基于WDF编写的驱动程序,在server12 安装后能够正常使用,但是重启电脑后,使用DMA传输数据时发生电脑蓝屏,求解 winbg 分析dump 文件如下:
Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Users\mahc\Desktop\dump\111617-13437-01.dmp]
Mini Kernel Dump File: Only registers and stack trace are available
Symbol search path is: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Kernel Version 9200 MP (16 procs) Free x64
Product: Server, suite: TerminalServer DataCenter SingleUserTS
Built by: 9200.16384.amd64fre.win8_rtm.120725-1247
Machine Name:
Kernel base = 0xfffff803`78401000 PsLoadedModuleList = 0xfffff803`786cba60
Debug session time: Thu Nov 16 14:06:51.114 2017 (UTC + 8:00)
System Uptime: 0 days 0:04:10.841
Loading Kernel Symbols
...............................................................
................................................................
.....
Loading User Symbols
Loading unloaded module list
.......
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck D1, {44, 2, 0, fffff88001027752}
Probably caused by : Wdf01000.sys ( Wdf01000!imp_WdfRequestIsCanceled+116 )
Followup: MachineOwner
---------
6: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: 0000000000000044, memory referenced
Arg2: 0000000000000002, IRQL
Arg3: 0000000000000000, value 0 = read operation, 1 = write operation
Arg4: fffff88001027752, address which referenced memory
Debugging Details:
------------------
READ_ADDRESS: GetPointerFromAddress: unable to read from fffff80378757168
unable to get nt!MmPoolCodeStart
unable to get nt!MmPoolCodeEnd
0000000000000044
CURRENT_IRQL: 2
FAULTING_IP:
Wdf01000!imp_WdfRequestIsCanceled+116
fffff880`01027752 40387844 cmp byte ptr [rax+44h],dil
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID: DRIVER_FAULT_SERVER_MINIDUMP
BUGCHECK_STR: 0xD1
PROCESS_NAME: System
TRAP_FRAME: fffff88002e6a720 -- (.trap 0xfffff88002e6a720)
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=0000000000000000 rbx=0000000000000000 rcx=fffffa800975a880
rdx=0000057ff91d7868 rsi=0000000000000000 rdi=0000000000000000
rip=fffff88001027752 rsp=fffff88002e6a8b0 rbp=0000057ff91d7868
r8=fffff88006acb080 r9=0000000000000001 r10=0000000000000000
r11=fffff88002e6a938 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei pl zr na po nc
Wdf01000!imp_WdfRequestIsCanceled+0x116:
fffff880`01027752 40387844 cmp byte ptr [rax+44h],dil ds:00000000`00000044=??
Resetting default scope
LAST_CONTROL_TRANSFER: from fffff8037847b369 to fffff8037847c040
STACK_TEXT:
fffff880`02e6a5d8 fffff803`7847b369 : 00000000`0000000a 00000000`00000044 00000000`00000002 00000000`00000000 : nt!KeBugCheckEx
fffff880`02e6a5e0 fffff803`78479be0 : 00000000`00000000 fffffa80`06e28790 fffffa80`06e1a100 fffff880`02e6a720 : nt!KiBugCheckDispatch+0x69
fffff880`02e6a720 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiPageFault+0x260
STACK_COMMAND: .bugcheck ; kb
FOLLOWUP_IP:
Wdf01000!imp_WdfRequestIsCanceled+116
fffff880`01027752 40387844 cmp byte ptr [rax+44h],dil
SYMBOL_NAME: Wdf01000!imp_WdfRequestIsCanceled+116
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: Wdf01000
IMAGE_NAME: Wdf01000.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 5010aa89
FAILURE_BUCKET_ID: X64_0xD1_Wdf01000!imp_WdfRequestIsCanceled+116
BUCKET_ID: X64_0xD1_Wdf01000!imp_WdfRequestIsCanceled+116
Followup: MachineOwner