Произвести uppercase в режиме ядра?

Delphist 04.06.2004 - 05:09 | Задачка вроде простая Работает драйвер в режиме ядра. У него есть строка в памяти (и готовый указатель, конечно). Нужно эту строку перевести в Upper Case Другой вариант - найти в этой строке заданную подстроку, невзирая на регистр букв. После безуспешных попыток прилинковать winuser.h, в котором объявлена функция CharUpper, возникло ощущение, что эта функция работает только в user mode. Да и в MSDN сказано, что она использует драйвер национальной привязки ... To make the conversion, the function uses the language driver for the current language selected by the user at setup or by using the Control Panel. ... Посему вопрос: братья, как проще выкрутиться? Чтоб найти подстроку в заданной строчке или перевестивсе в верхний регистр? (Уровень IRQL может быть как PASSIVE, так и DISPATCH)
SBoyko 1 - 04.06.2004 - 09:28 | Кажись что-то было в DDK, начинается на Rtl....
SBoyko 2 - 04.06.2004 - 09:29 | RtlUpperString кажись, точно не подскажу, DDK на днях грохнул :)
OF 3 - 04.06.2004 - 09:41 | Проще - написать самому, там две строчки делов и пару таблиц для разных кодировок (ИМХО, 1251 хватит) :)
SBoyko 4 - 04.06.2004 - 09:58 | [3] вопрос на засыпку: какая "кодировка" в режиме ядра? Ответ: Unicode А дальше идут размышления о размере таблицы ;)
нонейм 5 - 04.06.2004 - 11:23 | 4: ну, если предусматривать ВСЮ таблицу юникода, то конечно... но если остановиться на минимуме - латинница и кириллица, то вполне можно сделать алгоритм, пробегающийся по строке: [преобразование в ANSI] -> [UPPER] -> [преобразование в юникод]
SBoyko 6 - 04.06.2004 - 11:37 | Ребята, но если есть функция в одну(1) строчку, зачем городить городишки? ;))))
SBoyko 7 - 04.06.2004 - 11:40 | RtlUpperString The RtlUpperString routine copies the given SourceString to the DestinationString buffer, converting it to uppercase. VOID RtlUpperString( IN OUT PSTRING DestinationString, IN PSTRING SourceString ); Parameters DestinationString Pointer to the buffer for the converted destination string. SourceString Pointer to the source string to be converted to uppercase. Return Value None Headers Declared in ntddk.h. Include ntddk.h. Comments The MaximumLength and Buffer members of DestinationString are not modified by this routine. The number of bytes copied from SourceString is either the Length of SourceString or the MaximumLength of DestinationString, whichever is smaller. Callers of RtlUpperString must be running at IRQL = PASSIVE_LEVEL. P.S. Как-то сразу не догадался в интернете глянуть.
нонейм 8 - 04.06.2004 - 11:46 | off: SBoyko, Вы, случаем, на форуме borland.xportal.ru не модерите? :)
SBoyko 9 - 04.06.2004 - 11:47 | нонейм: модерю понемногу, но на другом ;)
нонейм 10 - 04.06.2004 - 11:49 | просто там тоже есть некий Сергей Бойко :)
SBoyko 11 - 04.06.2004 - 11:49 | Ага я уже увидел :) Нас много и мы в тельняшках.
нонейм 12 - 04.06.2004 - 11:55 | :))
Delphist 13 - 04.06.2004 - 20:21 | > Callers of RtlUpperString must be running at IRQL = PASSIVE_LEVEL. Все бы хорошо, но уменя по большей части DISPATCH уровень :( Специально понижать его в PASSIVE с риском быть прерванным как-то не укладывается в мои планы :(
Sabrian 14 - 05.06.2004 - 03:48 | Я не пойму чего-то, а просто взять её и перевести? Неужели жуткий такой алгоритм?
Sabrian 15 - 05.06.2004 - 03:56 | Блин туплю, тебе ведь перевести на любом языке? Можно ли в kernel mode драйверах динамически линковать dll? Также ререшением будет передача строки в процесс 3 кольца и обратно, хотя конечно кривое какое-то решение...
SBoyko 16 - 05.06.2004 - 20:48 | Sabrian: Нет нельзя. Но если пошла такая пьянка, то можно организовать "процесс обработки" при помощи DeviceIOControl. В 3е кольцо - строку - обратно результат. Но... это как из Краснодара в Ростов через Абхазию :)))
silly sad 17 - 07.06.2004 - 14:01 | to 3 ну ты тупой ! разве можно писать самому, если есть супер-пупер компонент COM_UpperCase ! просто мы неумеем им пользоваться !
Delphist 18 - 07.06.2004 - 16:13 | Было бы интересно увидеть пример кода, вызывающего COM-объект из режима Ring 0.
sad beggar born 19 - 08.06.2004 - 08:35 | to 3 почитай внимательно #18 вот именно об этом я и говорил.

>>