代码:
KdPrint(("ANSI:
"));
CHAR *string = "Hello";
KdPrint(("%s
",string));
WCHAR *string2 = L"Hello2";
KdPrint(("%S
",string2));
ANSI_STRING ansistring ;
CHAR *charstring = "hello";
RtlInitAnsiString(&ansistring,charstring);
KdPrint(("%Z
",&ansistring));
charstring[0] = 'H';
KdPrint(("%Z
",&ansistring));
RtlInitAnsiString(&ansistring,"ansistring");
KdPrint(("%Z
",&ansistring));
KdPrint(("UNICODE:
"));
UNICODE_STRING unicodestring;
RtlInitUnicodeString(&unicodestring,L"unicodestring");
KdPrint(("%wZ
",&unicodestring));
KdPrint(("UNICODE 复制:
"));
UNICODE_STRING unicodestring1;
RtlInitUnicodeString(&unicodestring1,L"unicodestring can Copy!");
UNICODE_STRING unicodestring2;
unicodestring2.Buffer = (PWCHAR)ExAllocatePool(PagedPool,1024);
unicodestring2.MaximumLength = 1024;
RtlCopyUnicodeString(&unicodestring2,&unicodestring1);
KdPrint(("UNICODE1 : %wZ
",&unicodestring1));
KdPrint(("UNICODE2 : %wZ
",&unicodestring2));
if (!RtlCompareUnicodeString(&unicodestring1,&unicodestring2,true))
{
KdPrint(("返回值等于0 代表 相同RtlCompareUnicodeString 比较相同"));
}
if (RtlEqualUnicodeString(&unicodestring1,&unicodestring2,true))
{
KdPrint(("返回值大于0 代表 相同RtlEqualUnicodeString 比较相同"));
}
RtlFreeUnicodeString(&unicodestring2);
KdPrint(("UNICODE_STRING 转换为大写
"));
RtlUpcaseUnicodeString(&unicodestring1,&unicodestring1,FALSE);
KdPrint(("%wZ
",&unicodestring1));
KdPrint(("UNICODE转数
"));
UNICODE_STRING StrToInteger;
RtlInitUnicodeString(&StrToInteger,L"-100");
ULONG lNumber;
NTSTATUS status2 = RtlUnicodeStringToInteger(&StrToInteger,10,&lNumber);
if (NT_SUCCESS(status2))
{
KdPrint(("转换成功! lNumber = %d
",lNumber));
}
else
KdPrint(("转换失败!"));
KdPrint(("数转UNICODE
"));
UNICODE_STRING IntegerToStr = {0};
IntegerToStr.Buffer = (PWCHAR)ExAllocatePool(PagedPool,1024);
IntegerToStr.MaximumLength = 1024;
status2 = RtlIntegerToUnicodeString(200,10,&IntegerToStr);
if (NT_SUCCESS(status2))
{
KdPrint(("转换成功! Str = %wZ
",&IntegerToStr));
}
else
KdPrint(("转换失败"));
KdPrint(("
"));
UNICODE_STRING unicodestringToansistring;
ANSI_STRING ansistring2;
RtlInitUnicodeString(&unicodestringToansistring,L"UNICODETOANSISTRING");
NTSTATUS status3 = RtlUnicodeStringToAnsiString(&ansistring2,&unicodestringToansistring,TRUE);
if (NT_SUCCESS(status3))
{
KdPrint(("UNICODE转换ANSI 成功"));
KdPrint(("%Z",&ansistring2));
}
else
KdPrint(("UNICODE转换ANSI 失败"));
RtlFreeAnsiString(&ansistring2);
//
KdPrint(("
"));
ANSI_STRING ansistring3;
RtlInitAnsiString(&ansistring3,"ANSISTRINGTOUNICODE");
UNICODE_STRING ansistringTounicodestring;
NTSTATUS status4 = RtlAnsiStringToUnicodeString(&ansistringTounicodestring,&ansistring3,TRUE);
if (NT_SUCCESS(status4))
{
KdPrint(("ANSI转换UNICODE 成功"));
KdPrint(("%wZ",&ansistringTounicodestring));
}
else
KdPrint(("ANSI转换UNICODE 失败"));
RtlFreeUnicodeString(&ansistringTounicodestring);