ANSI_STRING字符串与UNICODE_STRING字符串相互转换 - Windows内核模式下的字符串操作
2022-09-13
160
0
- 函数名称:RtlUnicodeStringToAnsiString
- 功能描述:将UNICODE_STRING字符串转化成ANSI_STRING字符串
- 参数列表:
- DestinationString:需要转化的字符串
- SourceString:需要转换的原字符串
- AllocateDesctinationString:是否需要对被转换的字符串分配内存
- 返回值:指明是否转换成功
(1)将UNICODE_STRING字符串转换成ANSI_STRING字符串
//初始化UnicodeString1
UNICODE_STRING UnicodeString1;
RtlInitUnicodeString(&UnicodeString1, L“Hello World”);
ANSI_STRING AnsiString1;
NTSTATUS nStatus = RtlUnicodeStringToAnsiString(&AnsiString1, &UnicodeString1, TRUE);
if( NT_SUCCESS(nStatus) )
{
KdPrint((“Conver successfully!\n”));
KdPrint((“Result:%Z\n”, &AnsiString1));
}
else
{
KdPrint((“Conver unsuccessfully\n”));
}
//销毁AnsiString1
RtlFreeAnsiString(&AnsiString1);
(2)将ANSI_STRIN字符串转换成GUNICODE_STRING字符串
//初始化AnsiString2
ANSI_STRING AnsiString2;
RtlInitString(&AnsiString2, “Hello World”);
UNICODE_STRING UnicodeString2;
nStatus = RtlAnsiStringToUnicodeString(&UnicodeString2, &AnsiString2, TRUE);
if( NT_SUCCESS(nStatus) )
{
KdPrint((“Conver successfully!\n”));
KdPrint((“Result:%Z\n”, &UnicodeString2));
}
else
{
KdPrint((“Conver unsuccessfully\n”));
}
//销毁UnicodeString2
RtlFreeUnicodeString(&UnicodeString2);