darkpoulpo
Messages postés76Date d'inscriptionlundi 21 mars 2005StatutMembreDernière intervention29 novembre 2009
-
26 nov. 2009 à 16:30
darkpoulpo
Messages postés76Date d'inscriptionlundi 21 mars 2005StatutMembreDernière intervention29 novembre 2009
-
26 nov. 2009 à 18:14
bonjour, imaginons que nous avons, une dll avec une fonction qui créer une objet COM et la renvoi au programme X pour être utilisé...
imagine que plus tard, on met a jour cette dll, comment va faire le programme pour retrouver les bons offset qui pointent vers les fonction de cette object?
je pose cette question, parceque en regardant le code assembleur, j'ai vu que l'offset etait definit en dur dans le code... exemple (offset 44h + adresse de l'objet = adresse de la fonction X), donc, si je mets a jour la dll, il faut surtout ne pas toucher a l'ordre des fonctions et des variables déjà écrite c'est bien ca?
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 26 nov. 2009 à 16:53
Salut,
Il n'y aura jamais de problème pour deux raisons:
1- C'est toujours la DLL COM qui se charge de la création des instances des objets (interfaces). Le programme client recevra toujours le bon pointeur sur l'objet voulu quelque soit son emplacement sur la DLL.
2- Chaque objet (interface) dispose d'une table VTable qui contient les adresses de toutes les fonctions (méthodes) implémentés. Le programme client doit se contenter d'interroger cette VTable pour accéder à la méthode voulue. Comme tu l'as deviné, l'ordre des méthodes est fixé dans la VTable et ne doit jamais changer. Les adresses des méthodes peuvent quant à elles changer suite à une mise à jour sans poser le moindre problème.