Freigeben über


IMarshal::UnmarshalInterface-Methode (objidlbase.h)

Entmarshaliert einen Schnittstellenzeiger.

Syntax

HRESULT UnmarshalInterface(
  [in]  IStream *pStm,
  [in]  REFIID  riid,
  [out] void    **ppv
);

Parameter

[in] pStm

Ein Zeiger auf den Datenstrom, von dem der Schnittstellenzeiger getrennt werden soll.

[in] riid

Ein Verweis auf den Bezeichner der zu entmarshalierten Schnittstelle.

[out] ppv

Die Adresse der Zeigervariable, die den Schnittstellenzeiger empfängt. Nach erfolgreicher Rückgabe enthält *ppv den angeforderten Schnittstellenzeiger der Schnittstelle, die entmarshaliert werden soll.

Rückgabewert

Diese Methode kann den Standardrückgabewert E_FAIL sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Der Schnittstellenzeiger wurde erfolgreich entmarshaliert.
E_NOINTERFACE
Die angegebene Schnittstelle wird nicht unterstützt.

Hinweise

Die COM-Bibliothek in dem Prozess, in dem eine Entmarsung erfolgen soll, ruft die Implementierung dieser Methode durch den Proxy auf.

Hinweise für Anrufer

Diese Methode wird nicht direkt aufgerufen. Es gibt jedoch einige Situationen, in denen Sie es indirekt durch einen Aufruf von CoUnmarshalInterface aufrufen können. Wenn Sie beispielsweise einen Stub implementieren, ruft Ihre Implementierung CoUnmarshalInterface auf, wenn der Stub einen Schnittstellenzeiger als Parameter in einem Methodenaufruf empfängt.

Hinweise für Implementierer

Die Implementierung des Proxys sollte die Daten lesen, die von der IMarshal::MarshalInterface-Implementierung des ursprünglichen Objekts in den Stream geschrieben wurden, und diese Daten verwenden, um das Proxyobjekt zu initialisieren, dessen CLSID durch den Aufruf des Marshallingstubs an die Implementierung von IMarshal::GetUnmarshalClass des ursprünglichen Objekts zurückgegeben wurde.

Um den entsprechenden Schnittstellenzeiger zurückzugeben, kann die Proxyimplementierung einfach QueryInterface für sich selbst aufrufen und die Parameter riid und ppv übergeben. Ihre Implementierung von UnmarshalInterface kann jedoch ein anderes Objekt erstellen und bei Bedarf einen Zeiger darauf zurückgeben.

Kurz vor dem Beenden sollte Ihre Implementierung den Suchzeiger unmittelbar nach dem letzten Gelesenen der Daten im Stream neu positionieren, selbst wenn sie mit einem Fehler beendet wird.

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 objidlbase.h (include ObjIdl.h)

Weitere Informationen

CoUnmarshalInterface

IMarshal