FreeLibrary et Kernel32.dll [Résolu]

Signaler
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonjour,

J'ai un programme qui parcourt les ressources contenues dans une dll fournie par l'utilisateur, j'utilise donc LoadLibrary/FreeLibrary pour les charger et les décharger.
J'observe un comportement très bizarre lorsque la dll est une copie de kernel32.dll. Exemple (aaa.dll est une copie de kernel32.dll) :

int main()

{

  HMODULE hMod;

  BOOL bRet;


  hMod = LoadLibrary(TEXT("C:\\test\\aaa.dll")); // OK

  bRet = FreeLibrary(hMod); // OK


  hMod = LoadLibrary(TEXT("C:\\test\\aaa.dll")); // Exception de première chance -> hMod = 0

  // A partir de la plus rien ne marche, je ne peux plus faire de LoadLibrary sur cette dll

  bRet = FreeLibrary(hMod);


  hMod = LoadLibrary(TEXT("kernel32.dll")); // OK

  bRet = FreeLibrary(hMod); // OK


  hMod = LoadLibrary(TEXT("kernel32.dll")); // OK

  bRet = FreeLibrary(hMod); // OK

}

Ce qui est bizarre c'est qu'en utilisant le kernel32.dll du système je n'ai aucun problème.
Je n'ai pas ce problème avec d'autres dll système...
Je vois que LoadLibrary et FreeLibrary sont définies dans kernel32.dll, je me demande si c'est une coïncidence.

Si quelqu'un a une idée...
Merci
_____________________________________
Un éditeur de ressources gratuit pour Windows
A voir également:

2 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Utilise LoadLibraryEx avec LOAD_LIBRARY_AS_IMAGE_RESOURCE si c'est juste pour explorer les ressources de la DLL.
Sinon avec DONT_RESOLVE_DLL_REFERENCES tu éviteras l'appel du point d'entrée de la DLL, surement ce qui merde avec la copie de kernel32.dll.

ciao...
BruNews, MVP VC++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Ah oui j'avais pas pensé à LoadLibraryEx!
Avec DONT_RESOLVE_DLL_REFERENCES ca marche nickel. Je vais utiliser plutot ca que LOAD_LIBRARY_AS_IMAGE_RESOURCE pour garder une compatibilité avec XP.

Merci beaucoup

_____________________________________
Un éditeur de ressources gratuit pour Windows