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 |
---|---|
|
Die IMarshal-instance wurde erfolgreich zurückgegeben. |
|
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:
- Bestimmt, ob pUnk NULL ist.
- Wenn pUnkNULL ist, erstellt im Clientprozess einen Standardschnittstellenproxy für die angegebene Riid und gibt den IMarshal-Zeiger des Proxys zurück.
- 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 |