我有一个UNICODE_STRING
我希望与一个以null结尾的ANSI字符串进行比较,以检查它们是否相同。我正在使用C.我想避免将winternl.h
包含在RtlInitUnicodeString
中。
这样做的首选方法是什么?
或者,或者,使用MultiByteToWideChar()
将ANSI字符串转换为宽字符表示然后将其与UNICODE_STRING.buffer
进行比较(我知道缓冲区可能不会)是空终止的?)
答案 0 :(得分:1)
我只想使用MultiByteToWideChar()
转换ANSI字符串。 CompareString()
函数为每个字符串提供长度参数,因此不必担心缺少空终止符。
请注意哪些参数采用或返回字节与字符相对应,使用这些函数应该没有问题。
答案 1 :(得分:1)
WideCharToMultiByte似乎是更符合逻辑的路线。它可以处理非零终止的字符串并生成终止字符串。并且它尝试使用系统代码页中没有字符的代码点来执行有意义的操作。然后就是strcmp()。