2010-08-12 130 views
0

我有一個UNICODE_STRING,我想將它與一個以空字符結尾的ANSI字符串進行比較來檢查它們是否相同。我使用C.我想避免包括winternl.hRtlInitUnicodeString在C中將UNICODE_STRING轉換爲ANSI或反之亦然

這樣做的首選方法是什麼?

或者,對於我使用MultiByteToWideChar()將ANSI字符串轉換爲寬字符表示形式,然後將其與UNICODE_STRING.buffer(理解爲緩衝區可能不以空終止)進行比較,是否存在任何問題?

回答

1

WideCharToMultiByte似乎更合乎邏輯的路線。它可以處理非零終止的字符串,併產生一個終止的字符串。並且它試圖在系統代碼頁中沒有字符的代碼點上做一些有意義的事情。然後就是strcmp()。

1

我只是使用MultiByteToWideChar()來轉換ANSI字符串。 CompareString()函數爲每個字符串提供了長度參數,所以不用擔心缺少空終止符。

只要注意哪些參數以字節爲單位返回或返回字節,並且使用這些函數應該沒有問題。

相關問題