Сейчас на форуме: tyns777, zds, JustLife, 2nd, morgot, Rio, CDK123 (+4 невидимых)

 eXeL@B —› Программирование —› LoadLibrary и Vista
Посл.ответ Сообщение

Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 02 сентября 2009 13:40 · Поправил: Smon
· Личное сообщение · #1

Подскажите плз, может кто сталкивался с косяками при "ручной" загрузке некоторых библиотек под вистой , например банальный LoadLibrary:
push offset iphlpapi.dll/call LoadLibraryA или
hmodule=LoadLibrary("iphlpapi.dll"),
возвращает ноль при попытке подгрузить в адресное пространство библиотеку iphlpapi.dll. Той же проблемы ни под xp ни под 2к нет, а так же нет в случае когда библиотека прилинкована, лежит в импорте и грузится виндовым загрузчиком.

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 02 сентября 2009 14:08 · Поправил: Flint
· Личное сообщение · #2

Smon У меня на виртуалке под вистой

сл. код

Code:
  1.                  .386
  2.          .model flat, stdcall
  3.          option casemap :none
  4.  
  5.          include \MASM32\INCLUDE\kernel32.inc
  6.  
  7.          includelib \MASM32\LIB\kernel32.lib
  8.  
  9.  
  10. .data
  11. dll db "iphlpapi.dll", 0
  12.  
  13.  
  14. .code
  15.  
  16. start:
  17. push offset dll
  18. Call LoadLibraryA
  19. push 0
  20. call ExitProcess
  21. end start


без проблем работает.

-----
Nulla aetas ad discendum sera




Ранг: 20.8 (новичок), 1thx
Активность: 0.010
Статус: Участник

Создано: 02 сентября 2009 18:57 · Поправил: um0v
· Личное сообщение · #3

[del]




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 02 сентября 2009 21:26
· Личное сообщение · #4

а что гетластеррор?

-----
[nice coder and reverser]




Ранг: 20.8 (новичок), 1thx
Активность: 0.010
Статус: Участник

Создано: 02 сентября 2009 23:43
· Личное сообщение · #5

GetLastError вернул 7E (файл не найден). Оказалось, что я глупо опечатался в имени библиотеки.
А так все работает.



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 03 сентября 2009 09:50
· Личное сообщение · #6

ErrorCode: 1114 (dll failed to load)...

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 03 сентября 2009 10:16
· Личное сообщение · #7

А если прописать полный путь к библе аля push offset C:\Windows\System32\iphlpapi.dll, я помню на некоторых системах не работал CreateProcess если не прописать полный путь к файлу, а на некоторых работал без проблем.



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 03 сентября 2009 10:24
· Личное сообщение · #8

Ведь библа системная и естессно зарегистрирована, так что похоже это всё таки глюк, попробую вариант Wide сталобыть...

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 03 сентября 2009 12:27
· Личное сообщение · #9

вариантов нахождения ошибок несколько. перечислю некоторые.

* Проверь список Known DLLs в реестре:
Code:
  1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs


* Задай режим показа ошибок при помощи SetErrorMode, чтобы видеть все ошибки системы в проге

* Задай путь для поиска при помощи SetDllDirectory и GetSystemDirectory. Для SetDllDirectory нужна минимум Windows Vista или Windows XP SP1

* Используй Unicode (W) функции

* Протестируй на LoadLibraryEx

Описание всех этих функций есть, разумеется, в MSDN

Ссылки по теме:
Балансировка известных библиотек DLL / Рэймонд Чен (Raymond Chen) /

-----
EnJoy!




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 03 сентября 2009 14:11
· Личное сообщение · #10

На всякий добавил dll в раздел Known DLLs и использовал вариацию 'Ex - всё заработало
Всем спасибо, особенно Jupiter
Тема закрыта.

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels



 eXeL@B —› Программирование —› LoadLibrary и Vista
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати