在驱动编程学习中,往往需要通过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

最新文章

  1. 如何设置 Panorama 控件的只读 SelectedIndex 属性?
  2. MongoDb gridfs-ngnix文件存储方案
  3. EA中的模板管理
  4. MySQL执行计划解读
  5. [deviceone开发]-一个很炫的手势动画示例
  6. Newtonsoft.Json 把对象转换成json字符串
  7. Flex AdvancedDatagrid使用
  8. EasyUI-Tab 标签添加右键菜单
  9. 陈正冲老师对于c语言野指针的解释
  10. 《你不常用的c#之一》:略谈unsafe
  11. C# Best Practices - Handling Strings
  12. 接口自动化测试方案PHP + mysql
  13. [译]ASP.NET Core 2.0 会话状态
  14. myBatis源码之XMLConfigBuilder
  15. 如何运行vue项目
  16. icpc 南昌邀请赛网络赛 Subsequence
  17. ue4 蓝图方法备份
  18. 【Codeforces 1137B】Camp Schedule
  19. 给kali linux2.0装一个中文输入法
  20. Socket编程的UDP与TCP,应用在哪些地方

热门文章

  1. 实战Apache+Tomcat集群和负载均衡
  2. eclipse热部署配置
  3. java中基础数据类型的应用
  4. Mac office ppt无法正常输入文字的问题解决方案
  5. 用MATLAB做T检验(ttest)
  6. Spring Security教程(六):自定义过滤器进行认证处理
  7. CSS边框闪烁呼吸样式
  8. select元素添加option的add()方法 | try{}catch{}
  9. 服务器重启后如何开启由docker部署的redmine
  10. javascript基础拾遗(十二)