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 |
---|---|
|
La commande s'est correctement terminée. |
|
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 . |
|
Le paramètre pszItem n’identifie pas d’objet dans ce conteneur. |
|
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 |