Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обработать Exception при загрузке DLL, синий экран смерти при загрузке Winamp-а 
V
    Опции темы
Gershkovich
Дата 27.9.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: 0
Всего: 2



Всем привет!

Пишу плагин для Winamp-a.

В секции инициализации юнита создаю объект:

Код

initialization
  try
    Scaner:= TScaner.Create;

  except
    on E : Exception do begin
      LastError:= E.Message;
    end;
  end;


Конструктор TScaner.Create выбрасывает эксепшн.
Я специально сам выбрасываю этот эксепшн - чтоб просто протестировать
как все будет работать в таком случае.

В итоге при загрузке Winamp-a стабильно - синий экран смерти...

Пробовал поместить этот код в метод Init (который вызывается Winamp-ом) -
результат тот же.

Что я неправильно делаю ?

Заранее спасибо.

PM MAIL   Вверх
dumb
Дата 27.9.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Цитата(Gershkovich @  27.9.2007,  16:03 Найти цитируемый пост)
В итоге при загрузке Winamp-a стабильно - синий экран смерти...
smile это явно перебор. винамп - user-mode приложение, и ни при каких ошибках в нем синий экран не должен возникать.
эксепшн ты отлавливаешь, все должно быть нормально. это какой-то баг, причем где именно - непонятно.
PM MAIL   Вверх
Rrader
  Дата 27.9.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191





--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
ama_kid
Дата 27.9.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Gershkovich, попробуй проверить, что возникает именно то исключение, которое ты выбрасываешь, а не какое-то другое. Может у тебя в конструкторе какая-то ошибка непроизвольная возникает? Еще как вариант - убери исключение из конструктора и создай отдельный метод, который будет его бросать, типо:
Код
  try
    Scaner:= TScaner.Create;
    Scanner.ThrowMyOwnException;
  except
    on E : Exception do begin
      LastError:= E.Message;
    end;
  end;
Ну и на закуску - вот что пишет хелп дельфи по слову raise:
Цитата
Note
Raising an exception in the initialization section of a unit may not produce the intended result. Normal exception support comes from the SysUtils unit, which must be initialized before such support is available. If an exception occurs during initialization, all initialized units--including SysUtils--are finalized and the exception is re-raised. Then the exception is caught and handled, usually by interrupting the program. Similarly, raising an exception in the finalization section of a unit may not lead to the intended result if SysUtils has already been finalized when the exception has been raised.
Может это тоже как-то связано?


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Gershkovich
Дата 28.9.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: 0
Всего: 2



Разобралсо !
Winamp ни причом

Я не до конца разобралсо  с параметрами CreateFileMapping
Вот фатальный фрагмент:
Код

  Size : DWord = 1024;

  // create memory mapped file with size 1024 bytes
  MappingHandle := CreateFileMapping(
                        $FFFFFFFF,
                        nil,
                        PAGE_READWRITE,
                        Hi(Size),  // Здесь неправильно !
                        Lo(Size), // И здесь неправильно !
                        'bla-bla-bla');



Вот правильный код
Код

  // create memory mapped file with size 1024 bytes
  MappingHandle := CreateFileMapping(
                        $FFFFFFFF,
                        nil,
                        PAGE_READWRITE,
                        0,  // Правильно !
                        Size, // Правильно !
                        'bla-bla-bla');



Всем спасибо за хинты!

Это сообщение отредактировал(а) Gershkovich - 28.9.2007, 09:52
PM MAIL   Вверх
dumb
Дата 28.9.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Цитата(Gershkovich @  28.9.2007,  10:50 Найти цитируемый пост)
не до конца разобралсо  с параметрами CreateFileMapping
хорошо, что разобралсо. но это все равно очень странно, что оно тебя в бсод отправляло... smile
PM MAIL   Вверх
Gershkovich
Дата 28.9.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: 0
Всего: 2



dumb, Не хочешь у себя проверить ?
Могу выслать исходнеки, если хочешь.

PM MAIL   Вверх
W4FhLF
Дата 28.9.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



Gershkovich, выложи здесь.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Gershkovich
Дата 28.9.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: 0
Всего: 2



Here you are

Это сообщение отредактировал(а) Gershkovich - 28.9.2007, 13:32

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  winamp_plugin.zip 6,16 Kb
PM MAIL   Вверх
W4FhLF
Дата 28.9.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



Всё ок.


Цитата(Gershkovich @  28.9.2007,  13:30 Найти цитируемый пост)
Here you are


"Here it is" ты хотел сказать smile


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Gershkovich
Дата 28.9.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: 0
Всего: 2



Цитата(W4FhLF @  28.9.2007,  14:03 Найти цитируемый пост)
Всё ок.


В смысле у тебя все работает ?
Не падает ?

Может ты не поменял параметры ?
там щас правильные стоят.

А надо поставить 
Lo(Size) и Hi(SIze) какя описывал выше


ЗЫ 
 Here you are = Пожалусто
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.