====== Visual C++ 研究 ====== 驅動程式中使用\\ 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初始化 \\ KdPrint(("%Z\n", &ansiString)); //注意是%Z \\ UNICODE_STRING; //省去对uniString初始化 \\ KdPrint(("%wZ\n", &uniString)); //注意是%wZ \\