使用者工具

網站工具


visual_c_plusplus

Visual C++ 研究

驅動程式中使用
KdPrint 而盡量不要使用 DbgPrint
KdPrint 會根據編譯版本看是否呼叫 DbgPrint或者不輸出
Checked –> KdPrint –> DbgPrint
Free –> KdPrint –> XXX

DbgView 免費提供 可在微軟的網站中找到
DbgView 可以同時監聽內核和 Win32 上層應用程式發送的除錯訊息。

符号 格式说明符 类型
%c, %lcANSI字符 char
%C, %wc宽字符 wchar_t
%d, %i 十进制有符号整数 int
%D 十进制int64 |int64
%L 十六进制的LARGE_INTEGER LARGE_INTEGER
%s, %lsNULL终止的ANSI字符串 char*
%S, %wsNULL终止的宽字符串 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

1)
“%Z\n”, &ansiString
2)
“%wZ\n”, &uniString
visual_c_plusplus.txt · 上一次變更: 2024/04/15 08:21 由 don