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 |
---|---|
|
Le instance IMarshal a été retourné avec succès. |
|
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 :
- Détermine si pUnk a la valeur NULL.
- 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.
- 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 |