Главная страница
    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.033 c
14-1104918545
syte_ser78
2005-01-05 12:49
2005.01.23
степень вложенности treeview


14-1105145875
Kerk
2005-01-08 03:57
2005.01.23
вот.. нашел баг в форуме и клиенте...


1-1105093809
Hadroran
2005-01-07 13:30
2005.01.23
Цветные строки в ExpressQuantumGrid


11-1086458896
DillerXX
2004-06-05 22:08
2005.01.23
Почему в конечном файле не работает хот кей?


3-1103354594
Dell3r
2004-12-18 10:23
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский