次の方法で共有


FtmBase クラス

フリー スレッド マーシャラー オブジェクトを表します。

構文

class FtmBase :
    public Microsoft::WRL::Implements<
        Microsoft::WRL::RuntimeClassFlags<WinRtClassicComMix>,
        Microsoft::WRL::CloakedIid<IMarshal>
    >;

解説

詳細については、「RuntimeClass クラス」を参照してください。

メンバー

パブリック コンストラクター

名前 説明
FtmBase::FtmBase FtmBase クラスの新しいインスタンスを初期化します。

パブリック メソッド

名前 説明
FtmBase::CreateGlobalInterfaceTable グローバル インターフェイス テーブル (GIT) を作成します。
FtmBase::DisconnectObject オブジェクトへの外部接続をすべて強制的に解放します。 オブジェクトのサーバーは、シャットダウン前に、このメソッドのオブジェクトの実装を呼び出します。
FtmBase::GetMarshalSizeMax 指定したオブジェクトの指定したインターフェイス ポインターをマーシャリングするために必要なバイト数の上限を取得します。
FtmBase::GetUnmarshalClass 対応するプロキシ用のコードを含む DLL を特定するために COM が使う CLSID を取得します。 COM では、この DLL を読み込み、プロキシの初期化されていないインスタンスを作成します。
FtmBase::MarshalInterface 一部のクライアント プロセスでプロキシ オブジェクトを初期化するために必要なデータをストリームに書き込みます。
FtmBase::ReleaseMarshalData マーシャリングされたデータ パケットを破棄します。
FtmBase::UnmarshalInterface 新しく作成されたプロキシを初期化し、そのプロキシへのインターフェイス ポインターを返します。

パブリック データ メンバー

名前 説明
FtmBase::marshaller_ フリー スレッド マーシャラーへの参照を保持します。

継承階層

FtmBase

要件

ヘッダー: ftm.h

名前空間: Microsoft::WRL

FtmBase::CreateGlobalInterfaceTable

グローバル インターフェイス テーブル (GIT) を作成します。

static HRESULT CreateGlobalInterfaceTable(
   __out IGlobalInterfaceTable **git
);

パラメーター

git
この操作が完了したときの、グローバル インターフェイス テーブルへのポインター。

戻り値

成功した場合は S_OK、そうでない場合はエラーを示す HRESULT。

解説

詳細については、IGlobalInterfaceTableを参照してください。

FtmBase::DisconnectObject

オブジェクトへの外部接続をすべて強制的に解放します。 オブジェクトのサーバーは、シャットダウン前に、このメソッドのオブジェクトの実装を呼び出します。

STDMETHODIMP DisconnectObject(
   __in DWORD dwReserved
) override;

パラメーター

dwReserved
今後使用するために予約されています。0 にする必要があります。

戻り値

成功した場合は S_OK、そうでない場合はエラーを示す HRESULT。

FtmBase::FtmBase

FtmBase クラスの新しいインスタンスを初期化します。

FtmBase();

FtmBase::GetMarshalSizeMax

指定したオブジェクトの指定したインターフェイス ポインターをマーシャリングするために必要なバイト数の上限を取得します。

STDMETHODIMP GetMarshalSizeMax(
   __in REFIID riid,
   __in_opt void *pv,
   __in DWORD dwDestContext,
   __reserved void *pvDestContext,
   __in DWORD mshlflags,
   __out DWORD *pSize
) override;

パラメーター

riid
マーシャリングするインターフェイスの識別子への参照。

pv
マーシャリングするインターフェイスのポインター。NULL にすることができます。

dwDestContext
指定したインターフェイスのマーシャリングを解除する対象のコンテキスト。

1 つ以上の MSHCTX 列挙値を指定します。

現在、マーシャリングの解除は、現在のプロセスの別のアパートメント (MSHCTX_INPROC) または現在のプロセスと同じコンピューター上の別のプロセス (MSHCTX_LOCAL) のいずれかで発生する可能性があります。

pvDestContext
今後使用するために予約されています。NULL にする必要があります。

mshlflags
マーシャリングするデータをクライアント プロセスに送信するか (通常の場合)、またはグローバル テーブルに書き込んで複数のクライアントから取得できるようにするかを示すフラグ。 1 つ以上の MSHLFLAGS 列挙値を指定します。

pSize
この操作が完了したときの、マーシャリング ストリームに書き込まれるデータ量の上限を示すポインター。

戻り値

成功した場合は S_OK、それ以外の場合は E_FAIL または E_NOINTERFACE です。

FtmBase::GetUnmarshalClass

対応するプロキシ用のコードを含む DLL を特定するために COM が使う CLSID を取得します。 COM では、この DLL を読み込み、プロキシの初期化されていないインスタンスを作成します。

STDMETHODIMP GetUnmarshalClass(
   __in REFIID riid,
   __in_opt void *pv,
   __in DWORD dwDestContext,
   __reserved void *pvDestContext,
   __in DWORD mshlflags,
   __out CLSID *pCid
) override;

パラメーター

riid
マーシャリングするインターフェイスの識別子への参照。

pv
マーシャリングするインターフェイスへのポインター。呼び出し元が目的のインターフェイスへのポインターを持っていない場合は、NULL にすることができます。

dwDestContext
指定したインターフェイスのマーシャリングを解除する対象のコンテキスト。

1 つ以上の MSHCTX 列挙値を指定します。

マーシャリングの解除は、現在のプロセスの別のアパートメント (MSHCTX_INPROC) または現在のプロセスと同じコンピューター上の別のプロセス (MSHCTX_LOCAL) のいずれかで発生する可能性があります。

pvDestContext
今後使用するために予約されています。NULL にする必要があります。

mshlflags
この操作が完了したときの、クライアント プロセスでプロキシを作成するために使われる CLSID へのポインター。

pCid

戻り値

成功した場合は S_OK、それ以外の場合は S_FALSE。

FtmBase::MarshalInterface

一部のクライアント プロセスでプロキシ オブジェクトを初期化するために必要なデータをストリームに書き込みます。

STDMETHODIMP MarshalInterface(
   __in IStream *pStm,
   __in REFIID riid,
   __in_opt void *pv,
   __in DWORD dwDestContext,
   __reserved void *pvDestContext,
   __in DWORD mshlflags
) override;

パラメーター

pStm
マーシャリング中に使われるストリームへのポインター。

riid
マーシャリングするインターフェイスの識別子への参照。 このインターフェイスは、 IUnknown インターフェイスから派生する必要があります。

pv
マーシャリングするインターフェイス ポインターへのポインター。呼び出し元が目的のインターフェイスへのポインターを持っていない場合は、NULL にすることができます。

dwDestContext
指定したインターフェイスのマーシャリングを解除する対象のコンテキスト。

1 つ以上の MSHCTX 列挙値を指定します。

マーシャリングの解除は、現在のプロセスの別のアパートメント (MSHCTX_INPROC) または現在のプロセスと同じコンピューター上の別のプロセス (MSHCTX_LOCAL) のいずれかで発生する可能性があります。

pvDestContext
今後使用するために予約されています。0 にする必要があります。

mshlflags
マーシャリングするデータをクライアント プロセスに送信するか (通常の場合)、またはグローバル テーブルに書き込んで複数のクライアントから取得できるようにするかを指定します。

戻り値

S_OK: インターフェイス ポインターが正常にマーシャリングされました。

E_NOINTERFACE: 指定したインターフェイスはサポートされていません。

STG_E_MEDIUMFULL: ストリームがいっぱいです。

E_FAIL: 操作に失敗しました。

FtmBase::marshaller_

フリー スレッド マーシャラーへの参照を保持します。

Microsoft::WRL::ComPtr<IMarshal> marshaller_; ;

FtmBase::ReleaseMarshalData

マーシャリングされたデータ パケットを破棄します。

STDMETHODIMP ReleaseMarshalData(
   __in IStream *pStm
) override;

パラメーター

pStm
破棄するデータ パケットを格納しているストリームへのポインター。

戻り値

成功した場合は S_OK、そうでない場合はエラーを示す HRESULT。

FtmBase::UnmarshalInterface

新しく作成されたプロキシを初期化し、そのプロキシへのインターフェイス ポインターを返します。

STDMETHODIMP UnmarshalInterface(
   __in IStream *pStm,
   __in REFIID riid,
   __deref_out void **ppv
) override;

パラメーター

pStm
インターフェイス ポインターのマーシャリングを解除するストリームへのポインター。

riid
マーシャリングを解除するインターフェイスの識別子への参照。

ppv
この操作が完了したときの、riid で要求されたインターフェイス ポインターを受け取るポインター変数のアドレス。 この操作が成功した場合、*ppv には、マーシャリングを解除するインターフェイスの要求されたインターフェイス ポインターが格納されます。

戻り値

成功した場合は S_OK、それ以外の場合は E_NOINTERFACE または E_FAIL です。