Dll COM question!!! un truc qui me chiffone

darkpoulpo Messages postés 76 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 29 novembre 2009 - 26 nov. 2009 à 16:30
darkpoulpo Messages postés 76 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 29 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?

merci d'avance...

2 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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.
0
darkpoulpo Messages postés 76 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 29 novembre 2009
26 nov. 2009 à 18:14
merci, je pige mieux...
0
Rejoignez-nous