2010-11-19 11 views
0

Je suppose qu'il n'y a aucun moyen d'utiliser la ressource de l'exe sans le charger complètement dans la mémoire. Disons que j'ai prévu d'utiliser une grande ressource RC_DATA que je me suis préparée. Est-il acceptable de le trouver dans mon exécutable par analyse de signature et de l'utiliser avec CreateFile et de compenser par la suite?Est-ce valide pour utiliser une ressource dans exe trouvée par le balayage de signature?

Merci

+0

L'hypothèse est fausse. – MSalters

Répondre

0

Je ne sais pas si je vous ai bien compris, mais vous ne chargez pas l'ensemble exe dans la mémoire lorsque vous essayez d'y accéder. Tout ce que vous devez faire est:

HRSRC hres = FindResource(NULL, // Returns the current process as a resource 
          "Name", 
          RT_RCDATA); 

Et puis le charger:

HGLOBAL hglob = LoadResource(NULL, 
          hres); 

Et cela vous donnera le pointeur sur le premier octet:

LPVOID lpFirstByte = LockResource(hglob); 

Hope this helps!

+0

Merci, il semble que j'ai essayé de rendre les choses plus complexes qu'elles ne le sont. On dirait que l'exe entier est déjà mappé en mémoire et il renvoie juste le décalage correspondant pour une ressource sans même le charger dans la mémoire séparée. Le nom de la fonction LoadResource est probablement trompeur en raison du fait que dans Windows 3.1 il était vraiment "chargement" – Maksee