Partager via


Révision des règles d’agrégation COM avec des extensions ADSI

Voici un bref examen des règles d’agrégation COM et d’extension ADSI.

  • La méthode CreateInstance retourne un pointeur vers une interface IUnknown , comme suit, qui ne délègue aucun appel de fonction à l’agrégateur.

    La méthode IUnknown::QueryInterface retourne des pointeurs vers les interfaces qu’elle prend en charge et des erreurs pour les interfaces qu’elle ne prend pas en charge.

    La méthode IUnknown::AddRef incrémente le nombre de références sur l’objet d’extension agrégé lui-même.

    La méthode IUnkown::Release décrémente le nombre de références sur l’objet d’extension agrégé lui-même et se détruit lui-même lorsque le nombre de références est 0.

  • L’objet d’extension doit stocker le pointeur IUnknown de l’agrégateur, tel que m_pOuterUnknown, pendant l’implémentation de la méthode CreateInstance .

  • Toutes les interfaces prises en charge par l’objet d’extension, y compris IADsExtension, doivent hériter d’IUnknown, qui délègue tous les appels de fonction à l’agrégateur.

Les rédacteurs d’extensions peuvent choisir n’importe quelle implémentation interne qu’ils préfèrent tant qu’ils respectent les règles d’agrégation COM standard. N’oubliez pas qu’un objet d’extension n’a pas besoin de fonctionner comme un objet autonome. Les extensions sont conçues pour fonctionner comme des agrégats. Toutefois, une extension peut être écrite pour fonctionner à la fois comme un objet autonome et comme agrégat.

En plus de la prise en charge de l’agrégation COM standard, un objet d’extension peut prendre en charge IADsExtension pour des fonctionnalités plus avancées. Si la liaison tardive est prise en charge, l’extension doit :