Je suis en train de faire de l'interopérabilité COM à partir d'une application C# et je n'arrive pas à trouver la réponse à cette question.Documentation pour les implémenteurs d'interfaces COM
Je me demandais où je pourrais trouver dans la documentation Win32 qui concrétisent les implémentations qui existent d'une interface COM. Par exemple, je sais (grâce à goodgle) que IShellLinkW est implémenté par une classe identifiée par CLSID_ShellLink, que IObjectArray est implémenté par CLSID_EnumerableObjectCollection et ainsi de suite.
Cependant, comment dois-je savoir? J'ai la version de Windows SDK (dernière version) installée et je ne peux pas sembler comprendre comment je devais comprendre cela basé sur l'information dans les docs?
Je fais des déclarations d'interopérabilité manuelles mais le plus que je veux savoir, parce que j'aime savoir comment les choses fonctionnent sous les couvertures ... donc la question reste ... prendre une interface com donnée, comment puis-je savoir quelles classes concrètes les implémentent, donc je sais quoi créer .. – TheCodeJunkie
Les images PE activées pour COM ont une ressource à l'intérieur qui décrit les identificateurs CLSIID et IID pris en charge (TypeLib). Des outils comme regsrv peuvent ajouter les informations necessray dans le registre, des outils comme TlbImp l'utilisent pour créer un wrapper lib ou une DLL gérée. Les installateurs contiennent également cette information dans leur base de données (voir http://msdn.microsoft.com/en-us/library/aa372092%28VS.85%29.aspx) et ajoutent l'information encessary au registre. –
Pour l'ensemble du scénario d'interopérabilité gérée, ce n'est pas pertinent pour la question (c'était juste un peu d'arrière-plan) et je sais tout sur les fichiers IDL, typelibs, outils d'importation et ainsi de suite. Développeur C++, connaissez-vous les classes concrètes? Dire que je lis les docs et voir l'interface IShellLinkW et aller "Hmm cooool, je veux utiliser ça!", Alors comment saurais-je pour créer une instance de CLSID_ShellLink? Ou plus obscur, allez à IObjectArray/IObjectColleciton -> CLSID_EnumerableObjectCollection? Il doit être mentionné quelque part dans les documents, mais où? :) merci – TheCodeJunkie