1)直接打印字符串。
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時才能使用.
沒有留言:
張貼留言