驅動程式中使用
KdPrint 而盡量不要使用 DbgPrint
KdPrint 會根據編譯版本看是否呼叫 DbgPrint或者不輸出
Checked –> KdPrint –> DbgPrint
Free –> KdPrint –> XXX
DbgView 免費提供 可在微軟的網站中找到
DbgView 可以同時監聽內核和 Win32 上層應用程式發送的除錯訊息。
符号 | 格式说明符 | 类型 |
---|---|---|
%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時才能使用。
需要注意 中文的 WCHAR 和 UNICODE_STRING可能会被截断打印不出来
需要转化为 CHAR 和 ANSI_STRING 来打印
ANSI_STRING ansiString; 省去对ansiString初始化
KdPrint1); 注意是%Z
UNICODE_STRING; 省去对uniString初始化
KdPrint2); 注意是%wZ