在开发Windows内核模式驱动程序时,我考虑调用宽字符串格式化函数(如swprintf
)来生成一些日志消息。但今天,我感到非常沮丧。
看看这个简单的陈述:
WCHAR wbuf[100];
swprintf(wbuf, L"{%d}", 123);
您认为在DISPATCH_LEVEL中执行是否安全?我发现它没有,因为swprintf
肯定会调用可分页函数RtlAnsiCharToUnicodeChar
,因此,它迟早会导致IRQ_NOT_LESS_OR_EQUAL错误检查。
所以我想知道,微软真的拒绝提供让我们在Windows内核中进行WCHAR字符串格式化的方法吗?或者是否有一些深奥的功能呢?
此屏幕截图显示了证据。