Freigeben über


CoGetMarshalSizeMax-Funktion (combaseapi.h)

Gibt eine Obergrenze für die Anzahl der Bytes zurück, die zum Marshallen des angegebenen Schnittstellenzeigers auf das angegebene Objekt erforderlich sind.

Syntax

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

Parameter

[out] pulSize

Ein Zeiger auf den oberen Grenzwert für die Größe des Datenpakets in Bytes, das in den Marshallingdatenstrom geschrieben werden soll. Wenn dieser Parameter 0 ist, ist die Größe des Pakets unbekannt.

[in] riid

Ein Verweis auf den Bezeichner der Schnittstelle, deren Zeiger gemarshallt werden soll. Diese Schnittstelle muss von der IUnknown-Schnittstelle abgeleitet werden.

[in] pUnk

Ein Zeiger auf die zu marshallende Schnittstelle. Diese Schnittstelle muss von der IUnknown-Schnittstelle abgeleitet werden.

[in] dwDestContext

Der Zielkontext, in dem die angegebene Schnittstelle entmarshaliert werden soll. Werte für dwDestContext stammen aus der Enumeration MSHCTX.

[in, optional] pvDestContext

Dieser Parameter ist reserviert und muss NULL sein.

[in] mshlflags

Gibt an, ob die zu marshallende Daten im Normalfall zurück an den Clientprozess übertragen oder in eine globale Tabelle geschrieben werden sollen, wo sie von mehreren Clients abgerufen werden können. Werte stammen aus der -Enumeration MSHLFLAGS.

Rückgabewert

Diese Funktion kann den Standardrückgabewert E_UNEXPECTED sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die obere Grenze wurde erfolgreich zurückgegeben.
CO_E_NOTINITIALIZED
Bevor diese Funktion aufgerufen werden kann, muss entweder die Funktion CoInitialize oder OleInitialize aufgerufen werden.

Hinweise

Diese Funktion führt die folgenden Aufgaben aus:

  1. Fragt das Objekt nach einem IMarshal-Zeiger ab oder ruft, wenn das Objekt IMarshal nicht implementiert, einen Zeiger auf den Standardmarshaller von COM ab.
  2. Ruft mithilfe des im vorherigen Element abgerufenen Zeigers IMarshal::GetMarshalSizeMax auf.
  3. Fügt dem Wert hinzu, der vom Aufruf von GetMarshalSizeMax zurückgegeben wird, die Größe des Marshalldatenheaders und möglicherweise die der Proxy-CLSID, um die maximale Größe der In den Marshallingdatenstrom zu schreibenden Datenmenge in Byte zu erhalten.
Sie rufen diese Funktion nur explizit auf, wenn Sie IMarshal implementieren. In diesem Fall sollte Ihr Marshallingstub diese Funktion aufrufen, um die richtige Größe des zu marshallenden Datenpakets zu erhalten.

Der von dieser Methode zurückgegebene Wert ist garantiert nur gültig, solange sich der interne Zustand des gemarshallten Objekts nicht ändert. Daher sollte das eigentliche Marshalling unmittelbar nach der Rückgabe dieser Funktion durchgeführt werden, oder der Stub führt das Risiko aus, dass das Objekt aufgrund einer Änderung des Zustands möglicherweise mehr Arbeitsspeicher zum Marshallen benötigt, als ursprünglich angegeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile combaseapi.h (include Objbase.h)
Bibliothek Ole32.lib
DLL Ole32.dll

Weitere Informationen

CoMarshalInterface

IMarshal::GetMarshalSizeMax