在C中将UNICODE_STRING转换为ANSI或反之亦然

时间:2010-08-12 19:22:56

标签: c windows string unicode

我有一个UNICODE_STRING我希望与一个以null结尾的ANSI字符串进行比较,以检查它们是否相同。我正在使用C.我想避免将winternl.h包含在RtlInitUnicodeString中。

这样做的首选方法是什么?

或者,或者,使用MultiByteToWideChar()将ANSI字符串转换为宽字符表示然后将其与UNICODE_STRING.buffer进行比较(我知道缓冲区可能不会)是空终止的?)

2 个答案:

答案 0 :(得分:1)

我只想使用MultiByteToWideChar()转换ANSI字符串。 CompareString()函数为每个字符串提供长度参数,因此不必担心缺少空终止符。

请注意哪些参数采用或返回字节与字符相对应,使用这些函数应该没有问题。

答案 1 :(得分:1)

WideCharToMultiByte似乎是更符合逻辑的路线。它可以处理非零终止的字符串并生成终止字符串。并且它尝试使用系统代码页中没有字符的代码点来执行有意义的操作。然后就是strcmp()。