Найти строку в строке

Тема в разделе "WASM.BEGINNERS", создана пользователем Hippey, 9 мар 2012.

  1. Hippey

    Hippey New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2011
    Сообщения:
    49
    Здравствуйте!

    Задача на С, не могу решить проблему:

    Есть UNICODE_STRING строчка, из нее достается Buffer (PCWSTR) , в полученном PCWSTR строке надо найти другую подстроку, тоесть примерно вот так:
    Код (Text):
    1. UNICODE_STRING String1;
    2.  
    3. RtlInitUnicodeString( &String1, "Hello World!");
    4.  
    5. // Вот тут нужна функция, которая проверит, есть ли в String1 слово "World"
     
  2. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    138
    StrStrW
     
  3. zxcv

    zxcv New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2011
    Сообщения:
    257
    Hippey
    задачи не понял, но если это вам поможет, то "world" в уникоде в байтах будет

    byte ms_uni_world[] = {0,'w',0,'o',0,'r',0,'l',0,'d',0,0};

    последние два 0ля - конец строки.
     
  4. Lunar_

    Lunar_ New Member

    Публикаций:
    0
    Регистрация:
    3 май 2011
    Сообщения:
    53
    Это не правильно, точно так же, как и совет с StrStrW: при использовании UNICODE_STRING нигде не сказано, что wchar*-буффер будет завершен null-байтом(-ами), это, кстати, природа многих ошибок. Если по определению там нулём все-таки всё завершается, тогда wcsstr/StrStr и т.д. и т.п., но при этом не понятно, при чем тут вообще UNICODE_STRING. Если нет, то
    писать функцию для поиска в куска байт в куске байт (+case insensitive, возможно) придётся самому. Ну либо в поисковике, че-нибудь вроде http://www.osronline.com/showThread.cfm?link=118061
     
  5. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Наоборот, нули не с той стороны.
    В 16-битном слове 0 старшим должен быть - в массиве должен идти по старшим адресам:
    unsigned char ms_uni_world[] = {'w',0,'o',0,'r',0,'l',0,'d',0,0,0};