Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: длина wchar строки  (Прочитано 7999 раз)
0 Пользователей и 1 Гость смотрят эту тему.
urock
Участник

ru
Offline Offline

« : 15-03-2010 08:37 » 

Добрый день!

Вопрос тупой, но я запутался.. Системная функция ядра возвращает указатель на массив wchar (не UNICODE_STRING), заканчивающийся NULL символом. Память под этот массив был выделена функцией самостоятельно. Мне требуется узнать длину этой строки.

Функция wcslen не подходит, так как требует аргументом указатель на тип const wchar_t, а у меня строка не константа.

Код типа:
Код:
i = 0;
while(buffer[i++] != L'\0');
работает неправильно. Да и вообще сдается мне так делать нельзя, я работаю в Win XP kernel space (код драйвера).

Подскажите как разобраться? Можно ли преобразовать указатель на wchar на указатель на const wchar?

Спасибо!
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #1 : 15-03-2010 09:02 » 

wcslen( (const wchar_t*)buffer ) ;

а так ?
Записан

urock
Участник

ru
Offline Offline

« Ответ #2 : 15-03-2010 09:16 » 

спасибо! тормознул)
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 15-03-2010 09:24 » 

1. В ядре не надо использовать CRT. Надо использовать RtlStringCbLengthW
2. Как while(buffer[i++] != L'\0') может не работать, если строка оканчивается нулем, для меня лично загадка. Но это и не нужно, см. пункт №1
3. Все эти нестыковки с const и "НЕconst" - это фэтэзи какое-то. Компиляторы на это вообще не ругаются.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines