IMarshal::UnmarshalInterface メソッド (objidl.h)
インターフェイス ポインターをアンマーシャリングします。
構文
HRESULT UnmarshalInterface(
[in] IStream *pStm,
[in] REFIID riid,
[out] void **ppv
);
パラメーター
[in] pStm
インターフェイス ポインターのマーシャリングを解除するストリームへのポインター。
[in] riid
マーシャリングされないインターフェイスの識別子への参照。
[out] ppv
インターフェイス ポインターを受け取るポインター変数のアドレス。 正常に戻ると、*ppv には、非マーシャリングされるインターフェイスの要求されたインターフェイス ポインターが含まれます。
戻り値
このメソッドは、E_FAIL標準の戻り値と、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
インターフェイス ポインターが正常にアンマーシャリングされました。 |
|
指定されたインターフェイスはサポートされていません。 |
注釈
アンマーシャリングが発生するプロセスの COM ライブラリは、このメソッドのプロキシの実装を呼び出します。
呼び出し元へのメモ
このメソッドを直接呼び出すことはありません。 ただし、 CoUnmarshalInterface の呼び出しによって間接的に呼び出す状況もあります。 たとえば、スタブを実装している場合、スタブがメソッド呼び出しでパラメーターとしてインターフェイス ポインターを受信すると、実装で CoUnmarshalInterface が呼び出されます。実装者へのメモ
プロキシの実装では、元のオブジェクトの 実装である IMarshal::MarshalInterface によってストリームに書き込まれたデータを読み取り、そのデータを使用して、元のオブジェクトの IMarshal::GetUnmarshalClass の実装に対するマーシャリング スタブの呼び出しによって CLSID が返されたプロキシ オブジェクトを初期化する必要があります。適切なインターフェイス ポインターを返すために、プロキシの実装では、riid パラメーターと ppv パラメーターを渡して、単に QueryInterface をそれ自体で呼び出すことができます。 ただし、 UnmarshalInterface の実装では、別のオブジェクトを自由に作成でき、必要に応じて、そのオブジェクトへのポインターを返します。
終了する直前に、エラーで終了した場合でも、実装では、読み取られたデータの最後のバイトの直後にストリーム内のシーク ポインターの位置を変更する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h (ObjIdl.h を含む) |