Share via


Méthode IBindCtx ::RegisterObjectBound (objidl.h)

Inscrit un objet avec le contexte de liaison pour s’assurer que l’objet reste actif jusqu’à ce que le contexte de liaison soit libéré.

Syntaxe

HRESULT RegisterObjectBound(
  [in] IUnknown *punk
);

Paramètres

[in] punk

Pointeur vers l’interface IUnknown sur l’objet inscrit comme lié.

Valeur retournée

Cette méthode peut retourner les valeurs de retour standard E_OUTOFMEMORY et S_OK.

Remarques

Ceux qui écrivent une nouvelle classe moniker (via une implémentation de l’interface IMoniker ) doivent appeler cette méthode chaque fois que l’implémentation active un objet. Cela se produit le plus souvent lors de la liaison d’un moniker, mais cela peut également se produire lors de la récupération du nom d’affichage d’un moniker, de l’analyse d’un nom d’affichage dans un moniker ou de la récupération de l’heure de la dernière modification d’un objet.

RegisterObjectBound appelle AddRef pour créer une référence supplémentaire à l’objet. Toutefois, vous devez toujours libérer votre propre copie du pointeur. L’appel de cette méthode deux fois pour le même objet crée deux références à cet objet. Vous pouvez libérer une référence obtenue via un appel à cette méthode en appelant IBindCtx ::RevokeObjectBound. Toutes les références détenues par le contexte de liaison sont libérées lorsque le contexte de liaison lui-même est libéré.

L’appel de RegisterObjectBound pour inscrire un objet avec un contexte de liaison maintient l’objet actif jusqu’à ce que le contexte de liaison soit libéré. La réutilisation d’un contexte de liaison dans une opération de liaison suivante (soit pour un autre élément du même moniker composite, soit pour un autre moniker) peut rendre l’opération de liaison suivante plus efficace, car elle n’a pas besoin de recharger cet objet. Toutefois, cela améliore les performances uniquement si l’opération de liaison suivante nécessite certains des mêmes objets que l’objet d’origine. Vous devez donc équilibrer l’amélioration des performances possible de la réutilisation d’un contexte de liaison par rapport aux coûts liés à la conservation des objets activés inutilement.

IBindCtx ne fournit pas de méthode pour récupérer un pointeur vers un objet inscrit à l’aide de RegisterObjectBound. En supposant que l’objet s’est inscrit auprès de la table d’objets en cours d’exécution, les implémentations moniker peuvent appeler IRunningObjectTable ::GetObject pour récupérer un pointeur vers l’objet.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête objidl.h

Voir aussi

IBindCtx

IRunningObjectTable ::GetObject