DbgPrint/KdPrint输出格式控制
2024-10-16 07:29:34
在驱动编程学习中,往往需要通过DbgPrint或者KdPrint来输出调试信息,对于Check版本,KdPrint只是DbgPrint的一个宏定义,而对于Free版本,KdPrint将被优化掉。这些输出信息可以通过DebugView对内核的监控来看到。
KdPrint is identical to the DbgPrint routine in code that is compiled in a checked build environment. This routine has no effect if compiled in a free build environment. Only kernel-mode drivers can call the KdPrintroutine.
下面还是说一下他们的输出格式控制吧:
符号 | 格式说明符 | 类型 |
%c, %lc | ANSI字符 | char |
%C, %wc | 宽字符 | wchar_t |
%d, %i | 十进制有符号整数 | int |
%D | 十进制__int64 | __int64 |
%L | 十六进制的LARGE_INTEGER | LARGE_INTEGER |
%s, %ls | NULL终止的ANSI字符串 | char* |
%S, %ws | NULL终止的宽字符串 | wchar_t* |
%Z | ANSI_STRING字符串 | ANSI_STRING |
%wZ | UNICODE_STRING字符串 | UNICODE_STRING |
%u | 十进制的ULONG | ULONG |
%x | 小写字符十六进制的ULONG | ULONG |
%X | 大写字符十六进制的ULONG | ULONG |
%p | 指针Pointer 32/64位 |
就那么多。根据DDK上说明,Unicode格式(%C, %S, %lc, %ls, %wc, %ws, and %wZ)只能在 IRQL = PASSIVE_LEVEL时才能使用。
具体实例:
ANSI_STRING ansiString;
//省去对ansiString初始化
KdPrint(("%Z\n", &ansiString)); //注意是%Z UNICODE_STRING;
//省去对uniString初始化
KdPrint(("%wZ\n", &uniString)); //注意是%wZ
最新文章
- 如何设置 Panorama 控件的只读 SelectedIndex 属性?
- MongoDb gridfs-ngnix文件存储方案
- EA中的模板管理
- MySQL执行计划解读
- [deviceone开发]-一个很炫的手势动画示例
- Newtonsoft.Json 把对象转换成json字符串
- Flex AdvancedDatagrid使用
- EasyUI-Tab 标签添加右键菜单
- 陈正冲老师对于c语言野指针的解释
- 《你不常用的c#之一》:略谈unsafe
- C# Best Practices - Handling Strings
- 接口自动化测试方案PHP + mysql
- [译]ASP.NET Core 2.0 会话状态
- myBatis源码之XMLConfigBuilder
- 如何运行vue项目
- icpc 南昌邀请赛网络赛 Subsequence
- ue4 蓝图方法备份
- 【Codeforces 1137B】Camp Schedule
- 给kali linux2.0装一个中文输入法
- Socket编程的UDP与TCP,应用在哪些地方