這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
visual_c_plusplus [2024/04/15 08:15] don |
visual_c_plusplus [2024/04/15 08:21] (目前版本) don |
||
---|---|---|---|
行 1: | 行 1: | ||
====== Visual C++ 研究 ====== | ====== Visual C++ 研究 ====== | ||
- | 驅動程式中使用 | + | 驅動程式中使用\\ |
- | KdPrint 而盡量不要使用 DbgPrint | + | KdPrint 而盡量不要使用 DbgPrint\\ |
- | KdPrint 會根據編譯版本看是否呼叫 DbgPrint或者不輸出 | + | KdPrint 會根據編譯版本看是否呼叫 DbgPrint或者不輸出\\ |
- | Checked --> KdPrint --> DbgPrint | + | Checked --> KdPrint --> DbgPrint\\ |
- | Free --> KdPrint --> | + | Free --> KdPrint --> |
- | DbgView 免費提供 可在微軟的網站中找到 | + | DbgView 免費提供 可在微軟的網站中找到\\ |
- | DbgView 可以同時監聽內核和 Win32 上層應用程式發送的除錯訊息。 | + | DbgView 可以同時監聽內核和 Win32 上層應用程式發送的除錯訊息。\\ |
^符号 ^格式说明符 ^类型 ^ | ^符号 ^格式说明符 ^类型 ^ | ||
|%c, %lc|ANSI字符 |char| | |%c, %lc|ANSI字符 |char| | ||
- | %C, %wc 宽字符 wchar_t | + | |%C, %wc|宽字符 |wchar_t| |
- | %d, %i 十进制有符号整数 int | + | |%d, %i |十进制有符号整数 |
- | %D 十进制__int64 __int64 | + | |%D |十进制__int64 |__int64| |
- | %L 十六进制的LARGE_INTEGER LARGE_INTEGER | + | |%L |十六进制的LARGE_INTEGER |LARGE_INTEGER| |
- | %s, %ls NULL终止的ANSI字符串 char* | + | |%s, %ls|NULL终止的ANSI字符串 |char*| |
- | %S, %ws NULL终止的宽字符串 wchar_t* | + | |%S, %ws|NULL终止的宽字符串 |wchar_t*| |
- | %Z ANSI_STRING字符串 ANSI_STRING | + | |%Z |ANSI_STRING字符串 |ANSI_STRING| |
- | %wZ UNICODE_STRING字符串 UNICODE_STRING | + | |%wZ |UNICODE_STRING字符串 |UNICODE_STRING| |
- | %u 十进制的ULONG ULONG | + | |%u |十进制的ULONG |ULONG| |
- | %x 小写字符十六进制的ULONG ULONG | + | |%x |小写字符十六进制的ULONG |ULONG| |
- | %X 大写字符十六进制的ULONG ULONG | + | |%X |大写字符十六进制的ULONG |ULONG| |
- | %p 指针Pointer 32/64位 | + | |%p |指针Pointer 32/64位 | | |
+ | 根据DDK上说明, | ||
+ | 需要注意 中文的 WCHAR 和 UNICODE_STRING可能会被截断打印不出来 \\ | ||
+ | 需要转化为 CHAR 和 ANSI_STRING 来打印 \\ | ||
+ | ANSI_STRING ansiString; | ||
+ | KdPrint((" | ||
+ | | ||
+ | UNICODE_STRING; | ||
+ | KdPrint((" | ||