begin process at 2012 05 30 07:28:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Autre

 > 

Question sur GetProcAddress et LockResource


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

Question sur GetProcAddress et LockResource

mardi 31 octobre 2006 à 10:59:29 | Question sur GetProcAddress et LockResource

skirby

Bonjour tout le monde.

J'ai rencontré un truc étrange en faisant un test.
J'essaye de récupérer l'adresse de la fonction LockResource depuis la dll Kernerl32.

Voici le petit bout de code que j'utilise :

/******************************/
#include <windows.h>

typedef LPVOID (__stdcall* apiLockResource) (HGLOBAL hResData);
apiLockResource MyLockResource;

int main()
{
  HMODULE hmod;
  hmod = LoadLibrary("kernel32.dll");

  MyLockResource = (apiLockResource)GetProcAddress(hmod, "LockResource");

  FreeLibrary(hmod);

  return 0;
}
/******************************/

Et voici ce que j'obtient lors du debug de l'application :
[URL=http://img87.imageshack.us/my.php?image=pbod7.png][IMG]http://img87.imageshack.us/img87/1794/pbod7.th.png[/img][/URL]

Pour information :
- j'ai fait le test sous Windows 2000 et XP
- j'ai utilisé GCC GNU Compiler avec code bloc et Pelles C

J'obtient le même résultatà chaque fois.

Ma question est donc la suivante : Pourquoi le debugger affiche l'adresse d'une autre fonction de l'API Windows ?

Merci de m'éclairer si vous avez une petite idée car j'aimerais bien comprendre histoire de me coucher moins bête ce soir
mardi 31 octobre 2006 à 11:13:47 | Re : Question

vecchio56

Administrateur CodeS-SourceS
Je confirme le problème:

#include <windows.h>

typedef LPVOID (__stdcall* apiLockResource) (HGLOBAL hResData);
apiLockResource MyLockResource1;
apiLockResource MyLockResource2;
apiLockResource MyLockResource3;

int main()
{
  HMODULE hmod;
  hmod = LoadLibrary("kernel32.dll");

  MyLockResource1 = (apiLockResource)GetProcAddress(hmod, "LockResource");
  MyLockResource2 = (apiLockResource)GetProcAddress(hmod, "SetHandleCount");
  MyLockResource3 = (apiLockResource)GetProcAddress(hmod, "LoadResource");

  FreeLibrary(hmod);

  return 0;
}

Avec ce programme, j'obtiens la même valeur avec MyLockResource1 et MyLockResource2.
Je ne sais pas à quoi sert cette fonction SetHandleCount, elle est décrite comme obsolète.

Tu as essayé d'utiliser malgré tout d'utiliser l'adresse que tu récupères avec GetProcAddress?

_____________________________________
Un éditeur de ressources gratuit pour Windows

mardi 31 octobre 2006 à 13:03:49 | Re : Question

skirby

Salut vecchio56,

Oui j'ai essayé et ça ne semble pas poser problème.

As-tu essayer le bout de code avec Visual C++ (je ne l'ai pas) pour voir si on a la même chose.

Le plus étrange c'est que j'ai la même chose si j'appelle directement la fonction LockResource (cf. capture d'écran)

Avec GetProcAddress :
Avec GetProcAddress

Depuis LockResource directement :
LockResource

C'est vraiment bizarre mais je vais finir par croire que c'est "normal".


ps: y a t'il moyen de modifier le sujet de thread avec le titre suivant : "Question sur GetProcAddress et LockResource"
mardi 31 octobre 2006 à 13:32:19 | Re : Question

vecchio56

Administrateur CodeS-SourceS
J'ai modifié le tire principal
Oui j'ai essayé avec Visual C++. Peut être que SetHandleCount et LockResource servent à faire la même chose


_____________________________________
Un éditeur de ressources gratuit pour Windows

mercredi 1 novembre 2006 à 12:52:23 | Re : Question sur GetProcAddress et LockResource

racpp

Administrateur CodeS-SourceS
Salut,
Je pense que LockResource() est également obsolète. Elle n'est gardée que pour compatibilité avec les anciens Windows (3.1). Il parait que dans les systèmes récents, une ressource chargée en mémoire n'est pas déplaçable donc LockResource ne sert plus à rien. En effet, LoadResource() retourne en réalité un pointeur sur le premier octet de la ressource chargée. Un simple cast vers le type de pointeur voulu résoud le problème. J'utilise toujours cette méthode et je n'ai jamais rencontré de problème.
J'attends confirmation.
J'aimerais bien que notre ami BruNews jette un coup d'oeil sur le code source de LockResource() car apparemment elle ne fait que retourner le pointeur qu'on lui passe comme paramètre.



Cette discussion est classée dans : question, lockresource, hmod, getprocaddress, apilockresource


Répondre à ce message

Sujets en rapport avec ce message

question..... [ par ya-1-bleme ] Comment on fait pour ecrire dans un EDIT la ?? je cherche depuis 2 heures et j'trouve pas;...Merci a ceux qui pourront me renseigner :0) Une petite question [ par C++ ] Je peux savoir pourquoi vous aidez personne ?pourquoi vous faite pas un tutorial bien complet(mfc)?Franchement ce site il pu y a que des sources merdi Arnotic, petite question... [ par NitRic ] J'aimerais simplement savoir s'il va y avoir un ou des défi(s) sur cppfrance comme il y à eu sur vbfrance... ? Question simple [ par SysBreak ] Salut, j'ai Borland C++ 5 v.pro et j'aimerais savoir dans quel répertoire je dois enregistrer mes fichiers sources créés ? Pour les projets j'ai bien visual c ou c++ builder [ par seb ] Bonjour,La question est simple.Lequel de ces deux environnements est le plus adaptes a l'avenir, et quelle librairie entre mes mfc et la vcl est la pl Question sur Windows.h [ par GoldenEye ] Connaissez vous un site qui propose la description des fonctions de Windows.h ( même question pour dos.h )MerciGoldenEye une question toute simple.. aidez moi, stp!!! [ par xose ] Je viens d'installer le Borland C++. Une fois que le programme est compilé, la fenetre noire disparait toute suite!! Je n'arrive pas à voir jamais les la question qui tue ! [ par cedcrow ] Salut,je lance une application windows fille(B) à partir d'une dll d'une appli windows mère(A). Pour cela je fait un spawn avec le paramètre _P_WAIT p Flux de sortie... [ par MorZong ] B'jour,Alors moi j'ai une question pour un champion :Est-ce que quelqu'un sait comment définir un mot-clef (ou peu importe comment ca se nomme) qui au la p'tite question pas méchante... [ par cedcrow ] bonjour à tous,je souhaiterais réaliser une appli windows qui n'aurait pas un format de fenetre standard, du style les applications multimédia de lect


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 : 2,527 sec (3)

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