代码:
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);