Здравствуйте! Задача на С, не могу решить проблему: Есть UNICODE_STRING строчка, из нее достается Buffer (PCWSTR) , в полученном PCWSTR строке надо найти другую подстроку, тоесть примерно вот так: Код (Text): UNICODE_STRING String1; RtlInitUnicodeString( &String1, "Hello World!"); // Вот тут нужна функция, которая проверит, есть ли в String1 слово "World"
Hippey задачи не понял, но если это вам поможет, то "world" в уникоде в байтах будет byte ms_uni_world[] = {0,'w',0,'o',0,'r',0,'l',0,'d',0,0}; последние два 0ля - конец строки.
Это не правильно, точно так же, как и совет с StrStrW: при использовании UNICODE_STRING нигде не сказано, что wchar*-буффер будет завершен null-байтом(-ами), это, кстати, природа многих ошибок. Если по определению там нулём все-таки всё завершается, тогда wcsstr/StrStr и т.д. и т.п., но при этом не понятно, при чем тут вообще UNICODE_STRING. Если нет, то писать функцию для поиска в куска байт в куске байт (+case insensitive, возможно) придётся самому. Ну либо в поисковике, че-нибудь вроде http://www.osronline.com/showThread.cfm?link=118061
Наоборот, нули не с той стороны. В 16-битном слове 0 старшим должен быть - в массиве должен идти по старшим адресам: unsigned char ms_uni_world[] = {'w',0,'o',0,'r',0,'l',0,'d',0,0,0};