![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
можно ли так проинициализировать юникод_стринг, когда нужен сринг ОПРЕДЕЛЕННОЙ длинны
потому-что насколько я понимаю обычный RtlInitUnicodeString() вроде как макрос, который просто инициирует поля структуры (проставляя указатель на строку вида L"unicode string constant") -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 1 Всего: 9 |
Как видно это всего-лишь заполнение структуры ;) Это сообщение отредактировал(а) EvilsInterrupt - 28.5.2010, 16:24 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
собственно не понятно что делает остальной код, кроме первой строчки сути топика
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 1 Всего: 9 |
shara, а смысл извращаться , когда есть уже готовое и хорошее решение ? Зачем самому то?
|
|||
|
||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
ну дык, я в WDK больше ничего и не нашел... EvilsInterrupt, -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 1 Всего: 9 |
shara, Что ты хочешь добиться ? Какие конкретно изъяны у RtlInitUnicodeString() тебя не устраивают?
Это сообщение отредактировал(а) EvilsInterrupt - 29.5.2010, 00:28 |
|||
|
||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
читаем WDK
второй параметр это уже заранее определенная константная строка типа L"bla bla bla". и она имеет фиксированный размер определяемый временем компиляции. к тому-же, кажется, ядро фиксирует попытку запись(изменения) этой строки и трактуя ее как попытку записи по не допустимому адресу (или еще чего-то там) и уходит в БСОД т.е. это просто макрос который инициирует поля структуры UNICODE_STRING без выделения памяти под строку а я хочу иметь строку длинна которой определяется во время исполнения. посему приходится выделять буфер вручную топик создал для того чтобы не изобретать велосипед, может есть готовые решения которых я не знаю -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
чем так не устроило ?
ZeroMemory (ObjectName->Buffer, ObjectName->Length); Это сообщение отредактировал(а) Dem_max - 30.5.2010, 07:15 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 1 Всего: 9 |
shara, В книге Уолтер Они про WDM есть глава работы со строками,рекомендед from me !!! По сути ты прав, надо выделить буфер задать поля структуры, но опять же вопрос почему выделение с тегом в апи-шке *WithTag ? ))) Более того,возникает проблема учета памяти,т.е. не просто выделения но и корректного удаления. Зачем тебе следить за памятью там, где это в принципе можно избежать ?
|
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
ExAllocatePool->ExAllocatePoolWithTag c тэгом None. Просто укороченная версия. Это сообщение отредактировал(а) bra1ny - 30.5.2010, 13:13 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 1 Всего: 9 |
bra1ny, Это-то понятно, что всегда есть extented-версии АПИ-шек, но мне хочется знать почему именно в этой ситуации юзается расширенная, когда вполне хватило бы нормальной не расширенной?!
Расширенные функции очень нужны, но не всегда! Правило кода таково, что он должен быть как можно более простым для чтения! Простота чтения это повышение эффективности при саппорте кода, а это в свою очередь жизнь продукта!!! Это сообщение отредактировал(а) EvilsInterrupt - 30.5.2010, 15:48 |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
чего расширенная. RtlInitUnicodeString вообще не выделяет из пула ничего.
ExAllocatePool - обертка которая ничего не делает , кроме как вызывает ExAllocatePoolWithTag.
Да потому что так проще утечку найти пулмоном например.И ядро активно юзает это. Например когда хочет залогировать ошибку в журнал.И создает пакет через IoAllocateErrorLogEntry.Память для пакета выделяется из пула с тагом IoEr. Это сообщение отредактировал(а) bra1ny - 30.5.2010, 15:58 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 1 Всего: 9 |
При чтении кода, т.е. при знакомстве с алгоритмом на детали реализации обращаешь внимания в меньшей степени и это правильльно! Вгрызаешься в детали только, когда видишь, что именно в этом коде бага! Поэтому, всегда и во всем рекомендовал юзать именно переходники, т.е. "расширенные" версии! |
|||
|
||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
всем устраивает. только в этом случае мы зануляем выделенный под строку буфер а здесь значение всех полей структуры сбрасываем в ноль в общем итог таков что буду писать свои функции для выделения и освобождения памяти из-под динамически создаваемых строк. всем спасибо -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |