[英]Converting a UNICODE_STRING to ANSI or vice versa in C
我有一個UNICODE_STRING
,我想將其與以空值結尾的ANSI字符串進行比較,以檢查它們是否相同。 我使用的是C.我想,以避免包括winternl.h
為RtlInitUnicodeString
。
這樣做的首選方法是什么?
或者,或者,使用MultiByteToWideChar()
將ANSI字符串轉換為寬字符表示形式,然后將其與UNICODE_STRING.buffer
進行比較,我是否有任何問題MultiByteToWideChar()
要了解該緩沖區可能不會以null終止)?
我只是使用MultiByteToWideChar()
轉換ANSI字符串。 CompareString()
函數采用每個字符串的長度參數,因此不必擔心缺少空終止符。
只需注意哪些參數接受或返回字節與字符,並且使用這些函數應該沒有問題。
WideCharToMultiByte似乎更合乎邏輯。 它可以處理非零終止的字符串,並產生終止的字符串。 並且它嘗試對在系統代碼頁中沒有字符的代碼點做有意義的事情。 然后就是strcmp()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.