[普通]DbgPrint或者KdPrint 输出格式

作者(passion) 阅读(1030次) 评论(0) 分类( 内核开发)

在驱动编程学习中,往往需要通过DbgPrint或者KdPrint来输出调试信息,对于Check版本,KdPrint只是DbgPrint的一个宏定义,而对于Free版本,KdPrint将被优化掉。这些输出信息可以通过DebugView对内核的监控来看到。

KdPrint is identical to the DbgPrint routine in code that is compiled in achecked build environment. This routine has no effect if compiled in a free build environment. Only kernel-mode drivers can call theKdPrint routine.

下面还是说一下他们的输出格式控制吧:

符号格式说明符类型
%c, %lcANSI字符char
%C, %wc宽字符wchar_t
%d, %i十进制有符号整数int
%D十进制__int64__int64
%L十六进制的LARGE_INTEGERLARGE_INTEGER
%s, %lsNULL终止的ANSI字符串char*
%S, %wsNULL终止的宽字符串wchar_t*
%ZANSI_STRING字符串ANSI_STRING
%wZUNICODE_STRING字符串UNICODE_STRING
%u十进制的ULONGULONG
%x小写字符十六进制的ULONGULONG
%X大写字符十六进制的ULONGULONG
%p指针Pointer 32/64位

就那么多。根据DDK上说明,Unicode格式(%C, %S, %lc, %ls, %wc, %ws, and %wZ)只能在 IRQL = PASSIVE_LEVEL时才能使用。

需要注意 中文的 WCHAR 和 UNICODE_STRING可能会被截断打印不出来 需要转化为 CHAR 和 ANSI_STRING来打印

具体实例:


  1. ANSI_STRING ansiString;  

  2. //省去对ansiString初始化  

  3. KdPrint(("%Z\n", &ansiString));    //注意是%Z  

  4.   

  5. UNICODE_STRING;  

  6. //省去对uniString初始化  

  7. KdPrint(("%wZ\n", &uniString));    //注意是%wZ  


« 上一篇:城市热点dr.com5.2.0,5.2.1,6.0(D) 校园网客户端破解版(drcom至尊版)
« 下一篇:drcom至尊版使用openwrt路由器拨号
在这里写下您精彩的评论
  • 微信

  • QQ

  • 支付宝

返回首页
返回首页 img
返回顶部~
返回顶部 img