CoGetStandardMarshal-Funktion (combaseapi.h)

Erstellt je nach Aufrufer ein Standard- oder Standard-Marshallingobjekt im Client- oder Serverprozess und gibt einen Zeiger auf die IMarshal-Implementierung dieses Objekts zurück.

Syntax

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

Parameter

[in] riid

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

[in] pUnk

Ein Zeiger auf die zu marshallende Schnittstelle.

[in] dwDestContext

Der Zielkontext, in dem die angegebene Schnittstelle aufgehoben werden soll. Werte stammen aus der Enumeration MSHCTX. Die Entkopplung kann entweder in einer anderen Wohnung des aktuellen Prozesses (MSHCTX_INPROC) oder in einem anderen Prozess auf demselben Computer wie der aktuelle Prozess (MSHCTX_LOCAL) erfolgen.

[in, optional] pvDestContext

Dieser Parameter ist reserviert und muss NULL sein.

[in] mshlflags

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

[out] ppMarshal

Die Adresse der IMarshal* -Zeigervariable, die den Schnittstellenzeiger auf den Standardmarschaller empfängt.

Rückgabewert

Diese Funktion kann die Standardrückgabewerte E_FAIL, E_OUTOFMEMORY und E_UNEXPECTED sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die IMarshal-instance wurde erfolgreich zurückgegeben.
CO_E_NOTINITIALIZED
Bevor diese Funktion aufgerufen werden kann, muss die CoInitialize - oder OleInitialize-Funktion im aktuellen Thread aufgerufen werden.

Hinweise

Die CoGetStandardMarshal-Funktion erstellt ein Standard- oder Standard-Marshallobjekt entweder im Clientprozess oder im Serverprozess, je nach Bedarf, und gibt den IMarshal-Zeiger dieses Objekts auf den Aufrufer zurück. Wenn Sie IMarshal implementieren, möchten Sie möglicherweise, dass Ihre Implementierung CoGetStandardMarshal aufruft , um alle Zielkontexte, die Sie nicht vollständig verstehen oder behandeln möchten, an die Standardimplementierung von COM zu delegieren. Andernfalls können Sie diese Funktion ignorieren, die COM im Rahmen der internen Marshallverfahren aufruft.

Wenn die COM-Bibliothek im Clientprozess einen gemarschten Schnittstellenzeiger empfängt, sucht sie nach einer CLSID, die zum Erstellen eines Proxys zum Aufheben der Verbindung des Pakets verwendet werden soll. Wenn das Paket keine CLSID für den Proxy enthält, ruft COM CoGetStandardMarshal auf und übergibt einen NULL-pUnk-Wert. Diese Funktion erstellt einen Standardproxy im Clientprozess und gibt einen Zeiger auf die Implementierung von IMarshal dieses Proxys zurück. COM verwendet diesen Zeiger, um CoUnmarshalInterface aufzurufen, um den Zeiger auf die angeforderte Schnittstelle abzurufen.

Wenn die Implementierung von IMarshal ihrer OLE-Serveranwendung CoGetStandardMarshal aufruft, sollten Sie sowohl die IID von (riid) als auch einen Zeiger auf (pUnk) übergeben, die angeforderte Schnittstelle.

Diese Funktion führt die folgenden Aufgaben aus:

  1. Bestimmt, ob pUnk NULL ist.
  2. Wenn pUnkNULL ist, erstellt im Clientprozess einen Standardschnittstellenproxy für die angegebene Riid und gibt den IMarshal-Zeiger des Proxys zurück.
  3. Wenn pUnk nicht NULL ist, überprüft, ob bereits ein Marshaller für das Objekt vorhanden ist, erstellt ggf. einen neuen und gibt den IMarshal-Zeiger des Marshallers zurück.

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

IMarshal