begin process at 2012 05 29 12:01:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

System

 > 

FreeLibrary et Kernel32.dll


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

FreeLibrary et Kernel32.dll

jeudi 7 mai 2009 à 21:11:41 | FreeLibrary et Kernel32.dll

vecchio56

Administrateur CodeS-SourceS
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

jeudi 7 mai 2009 à 21:42:56 | Re : FreeLibrary et Kernel32.dll

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
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++
jeudi 7 mai 2009 à 21:49:07 | Re : FreeLibrary et Kernel32.dll

vecchio56

Administrateur CodeS-SourceS
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



Cette discussion est classée dans : dll, kernel32, loadlibrary, hmod, freelibrary


Répondre à ce message

Sujets en rapport avec ce message

DLL, LIB, a l'aiiiiiiiiiiiide [ par madVinz ] Salut,il existe une fonction dans Kernel32.dll, nommé RegisterServiceProcess, mais qui apparrement n'est pas dans Kernel32.lib, alors je n'arrive pas LoadLibrary -> Impossible de charger la librairie (builder C++ 6) [ par franckies ] Salut à tous !Voila j'utilise builder C++ 6 et à l'aide d'un tuto j'ai recopié un hook de clavier pour pouvoir réalisé une patite appli.Pour créer ce Problème de chargement de DLL [ par tophque ] Bonjour,Je travaille sur un programme multi-thread. Je dois charger une dll. Que l'on soit en mode Debug ou Release, le problème est identique. Si je Kernel32.dll access violation [ par Andejen ] Bonjour,Je programme actuellement sous vc6 en utilisant les MFC.Mon projet a l'air de prendre une bonne tournure mais j'ai depuis quelques jours une e Pb Kernel32 [ par UnderFlow ] Pb passage win Xp -> 98. Bonjour, Alors voilà, j'ai développé un petit programme en C que j'ai compilé sous dev-C++ (ds mon environnement XP). Il s'e Obtenir l'handle d'une DLL [ par TryToHelpMe ] Bonjour,J'ai un nouveau problème que je n'arrive pas à résoudre.J'ai besoin de récupérer l'handle de ma DLL.Je fait appel à ma DLL depuis un programme Chargement DLL [ par alcolow ] Bonjour, Actuellement pour un stage, je développe une application Windows Mobile 6.X en c++ sous VS2008 dans laquelle j'ai besoin de charger une DLL. Dll LoadLibrary --> Erreur [ par mortiis ] Bonjour à tous J'ai fait un prog qui devrais utiliser une dll pour faire un test j'ai fait un dll qui me fait afficher un MessageBox.Le problème est q Intégration de bilbio chez borland C++ [ par aKheNathOn ] Bonjour la compagnie je cherche à intégrer un activeX ou une dll dans la barre d'outils de Borland C++, alors je trimme.Cette ocx ou en version Dll au Création et utilisation d'une dll explicit cad sans .lib [ par dev2004 ] Bonjour,Je recherche un exemple de création et d'utilisation d'une dll chargée explicitement sous VC++6.0 (LoadLibrary & GetProcAddress) ou la signifi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales