阅读:1146回复:1
有懂声卡驱动开发的大神吗?有个蓝屏问题请教一下
我写了一个虚拟声卡驱动,在win7没有问题,但在win10有些用户会出现蓝屏,蓝屏出现的位置,每次都是在IDMAChannel的CopyFrom方法体里,
STDMETHODIMP_(void) WaveStream::CopyFrom ( IN PVOID Destination, IN PVOID Source, IN ULONG ByteCount ) { for(int i = 0 ; i < ByteCount ; i ++) { BYTE b = data; Destination = b;//这句代码引发蓝屏 } } 在给Destination内存赋值时,引发蓝屏 DRIVER_IRQL_NOT_LESS_OR_EQUAL,给我的感觉,好像是Destination已经失效了一样,这是什么原因呢? |
|
沙发#
发布于:2019-09-05 14:18
这是dump文件信息:
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: ffffd000227fd000, memory referenced Arg2: 0000000000000002, IRQL Arg3: 0000000000000001, value 0 = read operation, 1 = write operation Arg4: fffff80182381470, address which referenced memory 好像是 Destination = b;执行的时候,IRQL太高了,如果真的是IRQL太高的原因,那就是说Destination是属于分页内存? 但是dump文件分析,继续往下看,又有这样的信息: FAULTING_MODULE: fffff800d6417000 nt DEBUG_FLR_IMAGE_TIMESTAMP: 5d69d7b1 WRITE_ADDRESS: unable to get nt!MmSpecialPoolStart unable to get nt!MmSpecialPoolEnd unable to get nt!MmPoolCodeStart unable to get nt!MmPoolCodeEnd ffffd000227fd000 CURRENT_IRQL: 0 FAULTING_IP: monster!data_transfer_record+50 fffff801`82381470 8802 mov byte ptr [rdx],al CUSTOMER_CRASH_COUNT: 1 DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT BUGCHECK_STR: 0xD1 LAST_CONTROL_TRANSFER: from fffff800d6563fe9 to fffff800d6559480 这个信息又说CURRENT_IRQL:0,那究竟执行代码时,IRQL是0还是2呢?搞不明白了 |
|