DbgPrint 数据类型输出

 
) 直接打印字符串。
DbgPrint(“Hello World!”);

2) 空结尾的字符串,你可以用普通得C语法表示字符串常量
char variable_string[] = “Hello World”;
DbgPrint(“%s”,variable_string);

3) 空结尾的宽字符串(WCHAR类型)
WCHAR    string_w[] = L“Hello World!”;
DbgPrint(“%ws”,string_w);

或者

DbgPrint(“%S”,string_w);

4)Unicode串,由UNICODE_STRING结构描述,包含16位字符。

typedef   struct _UNICODE_STRING{
USHORT Length;
USHORT MaximumLength;
PWSTR   Buffer;
}UNICODE_STRING , *PUNICODE_STRING;


UNICODE_STRING    string_unicode = L”Hello World!”;
DbgPrint(“%wZ\n”,string_unicode.Buffer);   

5) ANSI串,由ANSI_STRING结构描述,包含8位字符。

typedef struct _STRING{
USHORT Length;
USHORT MaximumLength;
PCHAR   Buffer;
}STRING, *PANSI_STRING;

STRING bar;
或者:ANSI_STRING bar;
RtlInitAnsiString(&bar,”Hello World!”);
DbgPrint(“%wz\n”,bar.Buffer);

DebugPrint格式说明符

符号                                 格式说明符                                        类型

%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字符串

%wZ                              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时才能使用.

在Vista下模式DbgPrint的输出信息是无法输出到WinDbg中的,这是因为Vista下引入了新的函数DbgPrintEx (DbgPrint实际上调用这个函数),这个函数可以控制输出的Level(这下不用自己做这样的工作了)。但是默认的,Vista下DbgPrint 输出的信息在WinDBG中是无法生效的。可以按一下方法来使它生效:

打开注册表到这个路径:HKLM\SYSTEM\CCS\Control\Session Manager\Debug Print Filter
修改Default值为0F,重启即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值