代码:
KdPrint(("ANSI:\n")); CHAR *string = "Hello"; KdPrint(("%s\n",string)); WCHAR *string2 = L"Hello2"; KdPrint(("%S\n",string2)); ANSI_STRING ansistring ; CHAR *charstring = "hello"; RtlInitAnsiString(&ansistring,charstring); KdPrint(("%Z\n",&ansistring)); charstring[0] = 'H'; KdPrint(("%Z\n",&ansistring)); RtlInitAnsiString(&ansistring,"ansistring"); KdPrint(("%Z\n",&ansistring)); KdPrint(("UNICODE:\n")); UNICODE_STRING unicodestring; RtlInitUnicodeString(&unicodestring,L"unicodestring"); KdPrint(("%wZ\n",&unicodestring)); KdPrint(("UNICODE 复制:\n")); 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\n",&unicodestring1)); KdPrint(("UNICODE2 : %wZ\n",&unicodestring2)); if (!RtlCompareUnicodeString(&unicodestring1,&unicodestring2,true)) { KdPrint(("返回值等于0 代表 相同RtlCompareUnicodeString 比较相同")); } if (RtlEqualUnicodeString(&unicodestring1,&unicodestring2,true)) { KdPrint(("返回值大于0 代表 相同RtlEqualUnicodeString 比较相同")); } RtlFreeUnicodeString(&unicodestring2); KdPrint(("UNICODE_STRING 转换为大写\n")); RtlUpcaseUnicodeString(&unicodestring1,&unicodestring1,FALSE); KdPrint(("%wZ\n",&unicodestring1)); KdPrint(("UNICODE转数\n")); UNICODE_STRING StrToInteger; RtlInitUnicodeString(&StrToInteger,L"-100"); ULONG lNumber; NTSTATUS status2 = RtlUnicodeStringToInteger(&StrToInteger,10,&lNumber); if (NT_SUCCESS(status2)) { KdPrint(("转换成功! lNumber = %d\n",lNumber)); } else KdPrint(("转换失败!")); KdPrint(("数转UNICODE\n")); 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\n",&IntegerToStr)); } else KdPrint(("转换失败")); KdPrint(("\n")); 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(("\n")); 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);