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 |
---|---|
|
Der Schnittstellenzeiger wurde erfolgreich entmarshaliert. |
|
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) |