Преобразование UNICODE_STRING в ANSI или наоборот в C - PullRequest
0 голосов
/ 12 августа 2010

У меня есть UNICODE_STRING, который я хотел бы сравнить со строкой ANSI с нулевым символом в конце, чтобы проверить, совпадают ли они. Я использую C. Я хотел бы избежать включения winternl.h для RtlInitUnicodeString.

Какой предпочтительный метод делает это?

Или, с другой стороны, есть ли у меня проблемы с использованием MultiByteToWideChar() для преобразования строки ANSI в представление широких символов, а затем сравнения ее с UNICODE_STRING.buffer (с пониманием, что буфер может не заканчиваться нулем )

Ответы [ 2 ]

1 голос
/ 13 августа 2010

WideCharToMultiByte кажется более логичным маршрутом. Он может обрабатывать строки, которые не оканчиваются нулем и выдают завершенную. И он пытается сделать что-то значимое с кодовыми точками, которые не имеют символа в системной кодовой странице. Тогда просто strcmp ().

1 голос
/ 12 августа 2010

Я бы просто преобразовал строку ANSI, используя MultiByteToWideChar().Функция CompareString() принимает параметры длины для каждой строки, поэтому не стоит беспокоиться об отсутствующем нулевом терминаторе.

Просто будьте осторожны с тем, какие параметры принимают или возвращают байтовые символы стихов, и не должно быть проблем с использованием этих функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...