Partager via


CoGetStandardMarshal, fonction (combaseapi.h)

Crée un objet de marshaling standard par défaut dans le processus client ou le processus serveur, selon l’appelant, et retourne un pointeur vers l’implémentation IMarshal de cet objet.

Syntaxe

HRESULT CoGetStandardMarshal(
  [in]           REFIID    riid,
  [in]           LPUNKNOWN pUnk,
  [in]           DWORD     dwDestContext,
  [in, optional] LPVOID    pvDestContext,
  [in]           DWORD     mshlflags,
  [out]          LPMARSHAL *ppMarshal
);

Paramètres

[in] riid

Référence à l’identificateur de l’interface dont le pointeur doit être marshalé. Cette interface doit être dérivée de l’interface IUnknown .

[in] pUnk

Pointeur vers l’interface à marshaler.

[in] dwDestContext

Contexte de destination dans lequel l’interface spécifiée doit être démarshalée. Les valeurs proviennent de l’énumération MSHCTX. Le démarshalation peut se produire dans un autre appartement du processus actuel (MSHCTX_INPROC) ou dans un autre processus sur le même ordinateur que le processus actuel (MSHCTX_LOCAL).

[in, optional] pvDestContext

Ce paramètre est réservé et doit être NULL.

[in] mshlflags

Indique si les données à marshaler doivent être transmises au processus client (cas normal) ou écrites dans une table globale où elles peuvent être récupérées par plusieurs clients. Les valeurs proviennent de l’énumération MSHLFLAGS .

[out] ppMarshal

Adresse de la variable pointeur IMarshal* qui reçoit le pointeur d’interface vers le marshaleur standard.

Valeur retournée

Cette fonction peut retourner les valeurs de retour standard E_FAIL, E_OUTOFMEMORY et E_UNEXPECTED, ainsi que les valeurs suivantes.

Code de retour Description
S_OK
Le instance IMarshal a été retourné avec succès.
CO_E_NOTINITIALIZED
Avant de pouvoir appeler cette fonction, la fonction CoInitialize ou OleInitialize doit être appelée sur le thread actuel.

Remarques

La fonction CoGetStandardMarshal crée un objet de marshaling par défaut ou standard dans le processus client ou le processus serveur, si nécessaire, et retourne le pointeur IMarshal de cet objet vers l’appelant. Si vous implémentez IMarshal, vous souhaiterez peut-être que votre implémentation appelle CoGetStandardMarshal pour déléguer à l’implémentation par défaut de COM tous les contextes de destination que vous ne comprenez pas ou que vous ne souhaitez pas gérer. Sinon, vous pouvez ignorer cette fonction, que COM appelle dans le cadre de ses procédures de marshaling internes.

Lorsque la bibliothèque COM dans le processus client reçoit un pointeur d’interface marshalé, elle recherche un CLSID à utiliser pour créer un proxy afin de démarshaler le paquet. Si le paquet ne contient pas de CLSID pour le proxy, COM appelle CoGetStandardMarshal en passant une valeur pUnkNULL. Cette fonction crée un proxy standard dans le processus client et retourne un pointeur vers l’implémentation de ce proxy d’IMarshal. COM utilise ce pointeur pour appeler CoUnmarshalInterface afin de récupérer le pointeur vers l’interface demandée.

Si l’implémentation d’IMarshal par votre application serveur OLE appelle CoGetStandardMarshal, vous devez passer l’IID de (riid) et un pointeur vers (pUnk), l’interface demandée.

Cette fonction effectue les tâches suivantes :

  1. Détermine si pUnk a la valeur NULL.
  2. Si pUnk a la valeur NULL, crée un proxy d’interface standard dans le processus client pour le riid spécifié et retourne le pointeur IMarshal du proxy.
  3. Si pUnk n’est pas NULL, vérifie si un marshaleur pour l’objet existe déjà, en crée un si nécessaire et retourne le pointeur IMarshal du marshaleur.

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 combaseapi.h (inclure Objbase.h)
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

IMarshal