2009-12-09 5 views
1

Si je reçois un pointeur d'interface présent dans l'autre appartement que le courant, je suis obligé de le maréchal du côté de l'appartement expéditeur et de le démonter du côté réception. Sur le pointeur d'interface ainsi reçu puis-je faire une QueryInterface? Si j'ai fait le QueryInterface, le pointeur ainsi reçu est un pointeur d'interface utilisable ou exige-t-il de nouveau marshaling?Besoin de rediriger les pointeurs d'interface unmarshal reçus via QueryInterface?

Merci F

Répondre

1

Oui, vous pouvez appeler toutes les méthodes sur l'interface, QueryInterface() inclus. Le proxy se comportera exactement de la même manière que s'il s'agissait d'un objet réel - il transférera simplement tous les appels de méthode à l'objet réel. Chaque fois qu'une méthode que vous avez appelée sur un proxy renvoie un pointeur qui est déjà marshallé (ou vous recevez un code d'erreur si elle ne peut pas être rassemblée) puis unmarshalled sur votre côté qui pourrait conduire à un autre proxy en cours de création. Ainsi, lorsque vous appelez le QueryInterface(), vous recevez un pointeur déjà unmarshalled vers un proxy.

+0

Merci beaucoup pour votre réponse. – coolcake

+0

Vous êtes en train de dire que l'objet proxy sera créé, supposons que l'interface pour laquelle nous sommes constitués est un objet COM occupant beaucoup de mémoire et de ressources, ce proxy va-t-il occuper le même ensemble de ressources et de mémoire? – coolcake

+0

Non, un proxy est un objet léger - il ne duplique pas l'objet réel, il transfère uniquement les appels à l'objet réel. Par exemple, vous pouvez avoir un handle de fichier dans l'objet réel - mais le proxy n'a aucune idée de cela, il ne connaît que l'interface de l'objet réel et comment transférer les appels. – sharptooth

2

Vous pouvez faire un QueryInterface et il retournera le pointeur d'interface déjà marshalés (parce que vous appelez QueryInterface pas sur un objet réel, mais sur un objet proxy).

+0

Merci beaucoup Sergius pour votre réponse. – coolcake

Questions connexes