Article de reference

Inconnu

En programmation informatique , l' interface IUnknown est l' interface fondamentale du modèle d'objet composant (COM). La spécification COM impose aux objets COM d'implémenter c...

En programmation informatique , l' interface IUnknown est l' interface fondamentale du modèle d'objet composant (COM). La spécification COM impose aux objets COM d'implémenter cette interface. De plus, toutes les autres interfaces COM doivent être dérivées de IUnknown. IUnknown expose deux fonctionnalités essentielles de tous les objets COM : la gestion de la durée de vie des objets via le comptage des références et l'accès aux fonctionnalités des objets via d'autres interfaces .

Une interface IUnknown (ou dérivée de IUnknown) se compose d'un pointeur vers une table de méthodes virtuelles qui contient une liste de pointeurs vers les fonctions qui implémentent les fonctions déclarées dans l'interface, dans l'ordre dans lequel elles sont déclarées dans l'interface. La surcharge d'appel d'invocation en cours de processus est donc identique aux appels de méthodes virtuelles en C++.

Méthodes

L'interface IUnknown expose trois méthodes : QueryInterface, AddRef, et Release:

  • QueryInterfacepermet à l'appelant de récupérer des références aux interfaces implémentées par le composant. Il est similaire à dynamic_cast<>en C++ ou aux casts en Java et C# . Plus précisément, il est utilisé pour obtenir un pointeur vers une autre interface, à partir d'un GUID qui identifie de manière unique cette interface (communément appelé ID d'interface ou IID ). Si l'objet COM n'implémente pas cette interface, une erreur E_NOINTERFACE est renvoyée à la place.
  • AddRefest utilisé pour incrémenter le nombre de références lorsqu'un nouveau client acquiert l'objet. Il renvoie le nouveau nombre de références.
  • Releaseest utilisé pour décrémenter le nombre de références lorsque les clients ont fini d'utiliser l'objet. Il renvoie le nouveau nombre de références. L'objet se supprimera lui-même pendant la libération lorsque le nombre de références atteindra zéro, ce qui signifie que l'appelant ne doit jamais utiliser une interface après avoir appelé Release.
interface IUnknown { virtuel HRESULT QueryInterface ( REFIID riid , void ** ppvObject ) = 0 ; virtuel ULONG AddRef () = 0 ; virtuel ULONG Release () = 0 ; };

L' ID d'interface IUnknown est défini comme un GUID avec la valeur {00000000-0000-0000-C000-000000000046}.

Les interfaces d'un composant COM doivent présenter les propriétés réflexives, symétriques et transitivesQueryInterface . La propriété réflexive fait référence à la capacité de l' appel sur une interface donnée avec l'ID de l'interface à renvoyer la même instance de l'interface. La propriété symétrique exige que lorsque l'interface B est récupérée à partir de l'interface A via QueryInterface, l'interface A soit également récupérable à partir de l'interface B. La propriété transitive exige que si l'interface B est récupérable à partir de l'interface A et que l'interface C est récupérable à partir de l'interface B, alors l'interface C doit être récupérable à partir de l'interface A.

Divers

  • Les composants conçus selon la norme des composants visuels ActiveX doivent, au minimum, implémenter l'interface IUnknown.
  • IUnknown sert de base au framework Core Foundation CFPlugIn de Mac OS X.
  • Dans le modèle de composants XPCOM de Mozilla , cette interface est également connue sous le nom de nsISupports.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index