DbgPrint格式 输出

DbgPrint 输出

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);

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);

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时才能使用.

在Vista下模式DbgPrint的输出信息是无法输出到WinDbg中的,这是因为Vista下引入了新的函数DbgPrintEx (DbgPrint实际上调用这个函数),这个函数可以控制输出的Level(这下不用自己做这样的工作了)。但是默认的,Vista下DbgPrint 输出的信息在WinDBG中是无法生效的。可以按一下方法来使它生效:

打开注册表到这个路径:HKLM\SYSTEM\CCS\Control\Session Manager\Debug Print Filter
修改Default值为0F,重启即可。

时间: 2024-08-05 16:05:30

DbgPrint格式 输出的相关文章

PAT 1006 换个格式输出 C语言

让我们用字母B来表示"百".字母S表示"十",用"12...n"来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个"百".3个"十".以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000). 输出格式:每个测试用例的输出占一行,用规定的格式输出n. 输入样例1: 234 输出样例1: BBSSS1

PAT乙级1006. 换个格式输出整数 (15)

让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个“百”.3个“十”.以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000). 输出格式:每个测试用例的输出占一行,用规定的格式输出n. 输入样例1: 234 输出样例1: BBSSS1234 输入样例2: 23 输出样例2: SS123 1 #include<stdio.h&g

PAT-BASIC-1006-换个格式输出整数

让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个“百”.3个“十”.以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000). 输出格式:每个测试用例的输出占一行,用规定的格式输出n. 输入样例1: 234 输出样例1: BBSSS1234 输入样例2: 23 输出样例2: SS123 获得百位数,十位数和个位数,然后输出即可. #

1006. 换个格式输出整数

1006. 换个格式输出整数 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个“百”.3个“十”.以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000). 输出格式:每个测试用例的输出占一

perl原格式输出

sub ShowUsage  {     print STDOUT << "EOF"; moniter my computer disk usage: $0            file [-d] [-h]     -d: excute                    -h: this (help) message EOF       } perl原格式输出,布布扣,bubuko.com

Document 按照xml格式输出

private void GetXMLDocument(Document doc) { OutputFormat format1 = new OutputFormat(" ", true); format1.setEncoding("UTF-8"); XMLWriter out1=new XMLWriter(new PrintWriter(System.out),format1); try { out1.write(doc); out1.flush(); } cat

1006. 换个格式输出整数 (15)

让我们用字母B来表示"百".字母S表示"十",用"12...n"来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个"百".3个"十".以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000). 输出格式:每个测试用例的输出占一行,用规定的格式输出n. 输入样例1: 234 输出样例1: BBSSS1

printf格式输出总结

#include<stdio.h>    #include<string.h>    int main()    {        char c, s[20];        int a=1234;       float f=3.141592653589;        double x=0.12345678912345678;        strcpy(s, "Hello,World");        c='\x41';        printf(&q

c#代码01--控制台的简单输入与输出及日期的格式输出

/* 使用ReadLine()完成控制台的输入输出内容 */ using System; namespace Test { class Test1 { static void Main(string[] args){ Console.Write("请输入:");//输出 请输入 且不换行 string read = Console.ReadLine();//将输入内容赋值到变量read Console.Write("您输入的内容为:");//控制台输出 您输入的内容