Partager via


CoGetMarshalSizeMax, fonction (combaseapi.h)

Retourne une limite supérieure sur le nombre d’octets nécessaires pour marshaler le pointeur d’interface spécifié vers l’objet spécifié.

Syntaxe

HRESULT CoGetMarshalSizeMax(
  [out]          ULONG     *pulSize,
  [in]           REFIID    riid,
  [in]           LPUNKNOWN pUnk,
  [in]           DWORD     dwDestContext,
  [in, optional] LPVOID    pvDestContext,
  [in]           DWORD     mshlflags
);

Paramètres

[out] pulSize

Pointeur vers la valeur de la limite supérieure sur la taille, en octets, du paquet de données à écrire dans le flux de marshaling. Si ce paramètre est 0, la taille du paquet est inconnue.

[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. Cette interface doit être dérivée de l’interface IUnknown .

[in] dwDestContext

Contexte de destination dans lequel l’interface spécifiée doit être démarshalée. Les valeurs de dwDestContext proviennent de l’énumération MSHCTX.

[in, optional] pvDestContext

Ce paramètre est réservé et doit avoir la valeur NULL.

[in] mshlflags

Indique si les données à marshaler doivent être transmises au client traiter le 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.

Valeur retournée

Cette fonction peut retourner la valeur de retour standard E_UNEXPECTED, ainsi que les valeurs suivantes.

Code de retour Description
S_OK
La limite supérieure a été retournée avec succès.
CO_E_NOTINITIALIZED
Avant que cette fonction puisse être appelée, la fonction CoInitialize ou OleInitialize doit être appelée.

Remarques

Cette fonction effectue les tâches suivantes :

  1. Interroge l’objet pour un pointeur IMarshal ou, si l’objet n’implémente pas IMarshal, obtient un pointeur vers le marshaleur standard de COM.
  2. À l’aide du pointeur obtenu dans l’élément précédent, appelle IMarshal ::GetMarshalSizeMax.
  3. Ajoute à la valeur retournée par l’appel à GetMarshalSizeMax la taille de l’en-tête de données de marshaling et, éventuellement, celle du CLSID proxy pour obtenir la taille maximale en octets de la quantité de données à écrire dans le flux de marshaling.
Vous n’appelez pas explicitement cette fonction, sauf si vous implémentez IMarshal, auquel cas votre stub de marshaling doit appeler cette fonction pour obtenir la taille correcte du paquet de données à marshaler.

La valeur retournée par cette méthode est garantie comme valide uniquement tant que l’état interne de l’objet marshalé ne change pas. Par conséquent, le marshaling réel doit être effectué immédiatement après le retour de cette fonction, ou le stub court le risque que l’objet, en raison d’un changement d’état, puisse nécessiter plus de mémoire pour marshaler qu’il ne l’avait initialement indiqué.

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

CoMarshalInterface

IMarshal ::GetMarshalSizeMax