Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

странное поведение LoadLibrary ...   Найти похожие ветки 

 
vic_774N   (2004-11-29 19:12) [0]

Здравствуйте, мастера ...

Вот в чем проблема:
Код работает нормально. Но иногда, на определенном файле в точке
DLLHandle := LoadLibrary(PChar(FilePluginName));
происходит зависание. Приходится снимать приложение по трем кнопкам. В чем может быть проблема ? В другой программе этот же файл не вызывает зависания.


function GetPluginName(FilePluginName: string): string;
var
 DLLHandle : THandle;
 PluginName : array[0..255] of Char;
 Ext : string;
 _DefRootName : procedure(Name: PChar; maxlen : Integer); stdcall;
begin
 Ext := LowerCase(ExtractFileExt(FilePluginName));

 if Ext = ".wfx" then
 begin
   try
     DLLHandle := LoadLibrary(PChar(FilePluginName));
     try
       _DefRootName := GetProcAddress(DLLHandle, "FsGetDefRootName");
       if Assigned(_DefRootName) then
       begin
         _DefRootName(@PluginName, 256);
         Result := PluginName;
       end
        else
         Result := "Connect Plugin manually";
     finally
       FreeLibrary(DLLHandle);
     end;
   except
   end;
 end;
end;


пробовал использовать LoadLibraryEx ... тот же эффект


 
Alexander Panov ©   (2004-11-29 22:49) [1]

Для начала после DLLHandle := LoadLibrary попробуй проверять DLLHandle на равенство 0, а перед выполнением инициализируй DLLHandle := 0;

Да и неплохо бы показать код, который выполняется при инициализации библиотеки.


 
Piter ©   (2004-11-30 00:08) [2]

Alexander Panov ©   (29.11.04 22:49) [1]
Для начала после DLLHandle := LoadLibrary попробуй проверять DLLHandle на равенство 0


человек эе говорит о зависании... причем здесь проверка?

Да и неплохо бы показать код, который выполняется при инициализации библиотеки

а вот это да. Библиотека же не вернет управление, пока не выполнится DLLMain...

vic_774N   (29.11.04 19:12)

ты уверен что зависание именно на строчке DLLHandle := LoadLibrary(PChar(FilePluginName)); ?


 
Alexander Panov ©   (2004-11-30 00:48) [3]

человек эе говорит о зависании... причем здесь проверка?

Даже если это ни при чем, проверку нужно делать обязательно.


 
Alex_Petr ©   (2004-11-30 01:59) [4]

LoadLibraryEx(PChar(FileName),0,DONT_RESOLVE_DLL_REFERENCES); ?


 
vic_774N   (2004-12-01 05:57) [5]

to Alex_Petr: пробовал уже - аналогично.

to Alexander Panov: проблема то в том, что проверить нечего.
зависает именно при вызове DLLHandle := LoadLibrary(PChar(FilePluginName)); и только на одном определенном файле, другие обрабатываются без проблем. Трассирую отладчиком Delphi.

И нет у меня исходника той DLL, просто известна функция и что от неё получаю.


 
Alexander Panov ©   (2004-12-01 10:23) [6]

vic_774N   (01.12.04 5:57) [5]
зависает именно при вызове DLLHandle := LoadLibrary(PChar(FilePluginName)); и только на одном определенном файле


Тогда тут можно сказать только одно - проблема в этом файле DLL при загрузке которого виснет программа, а именно - в DLLEntryPoint.

Думаю, что ничем тут помочь нельзя...



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.06 c
1-1105584773
Antonn
2005-01-13 05:52
2005.01.23
Узнать ардес из интернет-ярлыка(*.url)


1-1104840516
frEE)stylEr
2005-01-04 15:08
2005.01.23
Сохранить данные


1-1105114348
pika
2005-01-07 19:12
2005.01.23
Глюк !!!


1-1105282903
Sergo_Zero
2005-01-09 18:01
2005.01.23
Вопрос ? MyForm:TForm.Create(applications);


3-1103316579
Fin
2004-12-17 23:49
2005.01.23
Использование Дата модулей.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский