CoUnmarshalInterface-Funktion (combaseapi.h)
Initialisiert einen neu erstellten Proxy mithilfe von Daten, die von einem vorherigen Aufruf der CoMarshalInterface-Funktion in den Stream geschrieben wurden, und gibt einen Schnittstellenzeiger auf diesen Proxy zurück.
Syntax
HRESULT CoUnmarshalInterface(
[in] LPSTREAM pStm,
[in] REFIID riid,
[out] LPVOID *ppv
);
Parameter
[in] pStm
Ein Zeiger auf den Datenstrom, von dem die Schnittstelle getrennt werden soll.
[in] riid
Ein Verweis auf den Bezeichner der zu entmarshalierten Schnittstelle. Bei IID_NULL ist die zurückgegebene Schnittstelle die vom Stream definierte Schnittstelle objref.iid.
[out] ppv
Die Adresse der Zeigervariable, die den in riid angeforderten Schnittstellenzeiger empfängt. Nach erfolgreicher Rückgabe enthält *ppv den angeforderten Schnittstellenzeiger für die nichtmarshalierte Schnittstelle.
Rückgabewert
Diese Funktion kann den Standardrückgabewert E_FAIL, von CoCreateInstance zurückgegebene Fehler und die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Der Schnittstellenzeiger wurde erfolgreich entmarshaliert. |
|
pStm ist ein ungültiger Zeiger. |
|
Die CoInitialize - oder OleInitialize-Funktion wurde nicht im aktuellen Thread aufgerufen, bevor diese Funktion aufgerufen wurde. |
|
Die Objektanwendung wurde vom Remotingsystem getrennt (z. B. als Ergebnis eines Aufrufs der CoDisconnectObject-Funktion ). |
|
Fehler beim Lesen der Registrierungsdatenbank. |
|
Die endgültige QueryInterface dieser Funktion für die angeforderte Schnittstelle, die E_NOINTERFACE zurückgegeben wurde. |
Hinweise
Sicherheitshinweis: Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten ist ein Sicherheitsrisiko. Rufen Sie diese Methode nur mit vertrauenswürdigen Daten auf.
- Liest die CLSID aus dem Stream, die zum Erstellen einer instance des Proxys verwendet werden soll.
- Ruft einen IMarshal-Zeiger auf den Proxy ab, der die Entmarsung durchführen soll. Wenn das Objekt die standardmäßige Marshallingimplementierung von COM verwendet, wird der Zeiger auf eine instance des generischen Proxyobjekts abgerufen. Wenn das Marshalling zwischen zwei Threads im selben Prozess erfolgt, ist der Zeiger auf eine instance des in-process free threaded marshaler. Wenn das Objekt einen eigenen Marshallingcode bereitstellt, ruft CoUnmarshalInterface die CoCreateInstance-Funktion auf und übergibt die CLSID, die es aus dem Marshallingdatenstrom liest. CoCreateInstance erstellt eine instance des Proxys des Objekts und gibt einen IMarshal-Schnittstellenzeiger auf den Proxy zurück.
- Mit dem erworbenen IMarshal-Schnittstellenzeiger ruft die Funktion dann IMarshal::UnmarshalInterface und ggf. IMarshal::ReleaseMarshalData auf.
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 |