IOleItemContainer ::GetObject, méthode (oleidl.h)

Récupère un pointeur vers l’objet spécifié.

Syntaxe

HRESULT GetObject(
  [in]  LPOLESTR pszItem,
  [in]  DWORD    dwSpeedNeeded,
  [in]  IBindCtx *pbc,
  [in]  REFIID   riid,
  [out] void     **ppvObject
);

Paramètres

[in] pszItem

Nom du conteneur pour l’objet demandé.

[in] dwSpeedNeeded

Indique approximativement la durée d’attente de l’appelant pour obtenir l’objet. Les valeurs possibles sont extraites de l’énumération BINDSPEED.

[in] pbc

Pointeur vers l’interface IBindCtx sur l’objet de contexte de liaison à utiliser dans cette opération de liaison. Le contexte de liaison met en cache les objets liés pendant le processus de liaison, contient des paramètres qui s’appliquent à toutes les opérations utilisant le contexte de liaison et fournit les moyens par lesquels l’implémentation de liaison doit récupérer des informations sur son environnement.

[in] riid

Référence à l’identificateur du pointeur d’interface demandé.

[out] ppvObject

Adresse de la variable pointeur qui reçoit le pointeur d’interface demandé dans riid. En cas de retour réussi, *ppvObject contient le pointeur d’interface demandé vers l’objet nommé par pszItem. En cas de réussite, l’implémentation doit appeler AddRef sur *ppvObject ; il incombe à l’appelant d’appeler Release. Si une erreur se produit, l’implémentation définit *ppvObject sur NULL.

Valeur retournée

Cette méthode peut retourner la valeur de retour standard E_OUTOFMEMORY, ainsi que les valeurs suivantes.

Code de retour Description
S_OK
La commande s'est correctement terminée.
MK_E_EXCEEDEDDEADLINE
L’opération de liaison n’a pas pu être effectuée dans le délai spécifié par la structure BIND_OPTS du contexte de liaison, ou avec la vitesse indiquée par le paramètre dwSpeedNeeded .
MK_E_NOOBJECT
Le paramètre pszItem n’identifie pas d’objet dans ce conteneur.
E_NOINTERFACE
L’interface demandée n’était pas disponible.

Remarques

L’implémentation du moniker d’élément de IMoniker ::BindToObject appelle cette méthode, en passant le nom stocké dans le moniker d’élément en tant que paramètre pszItem .

Remarques aux implémenteurs

Votre implémentation de IOleItemContainer ::GetObject doit d’abord déterminer si pszItem est un nom valide pour l’un des objets du conteneur. Si ce n’est pas le cas, vous devez retourner MK_E_NOOBJECT.

Si pszItem nomme un objet incorporé ou lié, votre implémentation doit case activée la valeur du paramètre dwSpeedNeeded. Si la valeur est BINDSPEED_IMMEDIATE et que l’objet n’est pas encore chargé, vous devez retourner MK_E_EXCEEDEDDEADLINE. Si l’objet est chargé, votre implémentation doit déterminer si l’objet est en cours d’exécution (par exemple, en appelant la fonction OleIsRunning ). S’il n’est pas en cours d’exécution et que la valeur dwSpeedNeeded est BINDSPEED_MODERATE, votre implémentation doit retourner MK_E_EXCEEDEDDEADLINE. Si l’objet n’est pas en cours d’exécution et que dwSpeedNeeded est BINDSPEED_INDEFINITE, votre implémentation doit appeler la fonction OleRun pour placer l’objet dans l’état d’exécution. Il peut ensuite interroger l’objet pour l’interface demandée. Notez qu’il est important que l’objet soit en cours d’exécution avant d’interroger l’interface.

Si pszItem nomme un pseudo-objet, votre implémentation peut ignorer le paramètre dwSpeedNeeded , car un pseudo-objet est en cours d’exécution chaque fois que son conteneur est en cours d’exécution. Dans ce cas, votre implémentation peut simplement interroger l’interface demandée.

Si vous avez besoin d’informations plus spécifiques sur la limite de temps que celles fournies par dwSpeedNeeded, vous pouvez appeler IBindCtx ::GetBindOptions sur le paramètre pbc pour obtenir le paramètre d’échéance réel.

Configuration requise

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

Voir aussi

IOleItemContainer