Définition d’interfaces COM

Microsoft définit de nombreuses interfaces COM. Dans la plupart des cas, vous pouvez réutiliser ces interfaces génériques. Toutefois, certaines applications ont des exigences spécifiques qui rendent souhaitable ou nécessaire de définir vos propres interfaces d’objet.

Toutes les interfaces COM doivent dériver, directement ou indirectement, de l’interface IUnknown . Dans cette contrainte, votre interface personnalisée peut prendre en charge presque n’importe quelle méthode ou paramètre, y compris les méthodes asynchrones. Vous pouvez également générer une bibliothèque de types pour vos interfaces personnalisées afin que les clients puissent accéder aux informations sur les méthodes de votre objet au moment de l’exécution. Après avoir défini une interface, l’avoir décrite dans Microsoft Interface Definition Language (MIDL), la compiler et l’inscrire, vous l’utilisez comme n’importe quelle interface générique. Avec com distribué, les méthodes d’interface sont disponibles à la fois pour les processus distants et pour d’autres processus sur le même ordinateur.

Enfin, la création d’interfaces COM nécessite un environnement de développement qui inclut un compilateur C/C++ et le compilateur Midl.exe.

Les étapes de création d’une interface COM sont les suivantes :

  • Déterminez la façon dont vous souhaitez fournir la prise en charge du marshaling pour votre interface ; soit avec marshaling piloté par la bibliothèque de types, soit avec une DLL proxy/stub. Même les interfaces in-process doivent être marshalées si elles doivent être utilisées au-delà des limites de l’appartement. Il est judicieux de créer une prise en charge du marshaling dans chaque interface COM, même si vous pensez que vous n’en aurez pas besoin. Pour plus d’informations, consultez Marshaling d’interface .
  • Décrire l’interface ou les interfaces dans un fichier de définition d’interface (IDL). En outre, vous pouvez spécifier certains aspects locaux de votre interface dans un fichier de configuration d’application (ACF). Si vous utilisez le marshaling piloté par la bibliothèque de types, ajoutez une instruction de bibliothèque qui référence les interfaces pour lesquelles vous souhaitez générer des informations de type.
  • Utilisez le compilateur MIDL pour générer un fichier de bibliothèque de types et un fichier d’en-tête, ou des fichiers proxy/stub en langage C, un fichier d’identificateur d’interface, un fichier de données DLL et un fichier d’en-tête. Pour plus d’informations, consultez Compilation MIDL .
  • Selon la méthode de marshaling que vous avez choisie, écrivez un fichier de définition de module (DEF), compilez et liez tous les fichiers générés par MIDL dans une SEULE DLL proxy, puis inscrivez l’interface dans le registre système ou inscrivez la bibliothèque de types. Pour plus d’informations, consultez Chargement et inscription d’une bibliothèque de types et Création et inscription d’une DLL proxy .

Anatomie d’un fichier IDL

Clients et serveurs COM

Règles de conception d’interface

COM (Component Object Model)