Partager via


Méthode IMarshal ::UnmarshalInterface (objidl.h)

Désactive un pointeur d’interface.

Syntaxe

HRESULT UnmarshalInterface(
  [in]  IStream *pStm,
  [in]  REFIID  riid,
  [out] void    **ppv
);

Paramètres

[in] pStm

Pointeur vers le flux à partir duquel le pointeur d’interface doit être démarshalé.

[in] riid

Référence à l’identificateur de l’interface à démarshaler.

[out] ppv

Adresse de la variable pointeur qui reçoit le pointeur d’interface. Une fois le retour réussi, *ppv contient le pointeur d’interface demandé de l’interface à démarshaler.

Valeur retournée

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

Code de retour Description
S_OK
Le pointeur d’interface n’a pas été correctement délimité.
E_NOINTERFACE
L’interface spécifiée n’est pas prise en charge.

Remarques

La bibliothèque COM dans le processus où un démarshalage doit se produire appelle l’implémentation du proxy de cette méthode.

Notes aux appelants

Vous n'appelez pas cette méthode directement. Toutefois, il existe certaines situations dans lesquelles vous pouvez l’appeler indirectement par le biais d’un appel à CoUnmarshalInterface. Par exemple, si vous implémentez un stub, votre implémentation appelle CoUnmarshalInterface lorsque le stub reçoit un pointeur d’interface en tant que paramètre dans un appel de méthode.

Notes aux implémenteurs

L’implémentation du proxy doit lire les données écrites dans le flux par l’implémentation de IMarshal ::MarshalInterface de l’objet d’origine et utiliser ces données pour initialiser l’objet proxy dont le CLSID a été retourné par l’appel du stub de marshaling à l’implémentation d’origine de L’objet IMarshal ::GetUnmarshalClass.

Pour retourner le pointeur d’interface approprié, l’implémentation du proxy peut simplement appeler QueryInterface sur elle-même, en passant les paramètres riid et ppv . Toutefois, votre implémentation d’UnmarshalInterface est libre de créer un autre objet et, si nécessaire, de renvoyer un pointeur vers celui-ci.

Juste avant de quitter, même si vous quittez avec une erreur, votre implémentation doit repositionner le pointeur de recherche dans le flux immédiatement après le dernier octet de données lu.

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 (inclure ObjIdl.h)

Voir aussi

CoUnmarshalInterface

IMarshal