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 |
---|---|
|
Die obere Grenze wurde erfolgreich zurückgegeben. |
|
Bevor diese Funktion aufgerufen werden kann, muss entweder die Funktion CoInitialize oder OleInitialize aufgerufen werden. |
Hinweise
Diese Funktion führt die folgenden Aufgaben aus:
- Fragt das Objekt nach einem IMarshal-Zeiger ab oder ruft, wenn das Objekt IMarshal nicht implementiert, einen Zeiger auf den Standardmarshaller von COM ab.
- Ruft mithilfe des im vorherigen Element abgerufenen Zeigers IMarshal::GetMarshalSizeMax auf.
- 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.
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 |