问题描述
我正在尝试在Windows 7 x64中启用了驱动程序验证程序的驱动程序,并得到IRQL_NOT_LESS_OR_EQUAL(0A)错误检查.从 analyze -v
信息来看,似乎 RtlAnsiCharToUnicodeChar
函数的内存页面被分页了,因此调用该函数会导致bugcheck 0A. RtlAnsiCharToUnicodeChar
是ntoskrnl.exe导出的函数.真的可以将其调出页面吗?如果是这样,我该如何预防呢?
I'm trying my driver with Driver Verifier turned on in Windows 7 x64, and get IRQL_NOT_LESS_OR_EQUAL(0A) bugcheck. From analyze -v
info, it seems that the memory page of RtlAnsiCharToUnicodeChar
function gets paged out, so calling that function causes bugcheck 0A . RtlAnsiCharToUnicodeChar
is an ntoskrnl.exe exported function. Can it really be paged out? If so, how can I prevent it?
下面的现场调试信息屏幕截图:
On spot debug info screen shot below:
推荐答案
是.当然-PAGE *部分中有很多ntoskrnl例程. RtlAnsiCharToUnicodeChar 也已分页-阅读文档:
yes. of course - very many ntoskrnl routines in PAGE* section.RtlAnsiCharToUnicodeChar also paged - read in documentation:
还阅读了有关 DbgPrintEx的信息常规
和
因此,如果您不使用Unicode格式,则可以在任何IRQL上使用 DbgPrint
或 KdPrint
(这是宏),但是如果您使用Unicode格式-仅在PASSIVE_LEVEL或APC_LEVEL上(关于APC_LEVEL,我自己说)
so if you not use Unicode format you can use DbgPrint
or KdPrint
(this is macro) at any IRQL but if you use Unicode format - only on PASSIVE_LEVEL or APC_LEVEL (about APC_LEVEL i say by self)
这篇关于Windows驱动程序开发人员:是否可以分出ntoskrnl代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!