我们绝对不能从DISPATCH_LEVEL中调用任何宽字符格式化函数,对吗?

时间:2017-02-11 10:49:41

标签: device-driver windows-kernel

在开发Windows内核模式驱动程序时,我考虑调用宽字符串格式化函数(如swprintf)来生成一些日志消息。但今天,我感到非常沮丧。

看看这个简单的陈述:

WCHAR wbuf[100];
swprintf(wbuf, L"{%d}", 123);

您认为在DISPATCH_LEVEL中执行是否安全?我发现它没有,因为swprintf肯定会调用可分页函数RtlAnsiCharToUnicodeChar,因此,它迟早会导致IRQ_NOT_LESS_OR_EQUAL错误检查。

所以我想知道,微软真的拒绝提供让我们在Windows内核中进行WCHAR字符串格式化的方法吗?或者是否有一些深奥的功能呢?

此屏幕截图显示了证据。

snap9149 swprintf will definitely call RtlAnsiCharToUnicodeChar.png

0 个答案:

没有答案