分享方式:


FtmBase 類別

代表無限制執行緒封送處理器物件。

語法

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

備註

如需詳細資訊,請參閱 RuntimeClass 類別

成員

公用建構函式

名稱 描述
FtmBase::FtmBase 初始化 FtmBase 類別的新執行個體。

公用方法

名稱 描述
FtmBase::CreateGlobalInterfaceTable 建立全域介面數據表 (GIT)。
FtmBase::D isconnectObject 強制釋放物件的所有外部連接。 對象的伺服器會在關閉之前呼叫對象的這個方法實作。
FtmBase::GetMarshalSizeMax 取得在指定物件上封送處理指定介面指標所需的位元組數目上限。
FtmBase::GetUnmarshalClass 取得 COM 用來尋找包含對應 Proxy 程式代碼的 DLL 的 CLSID。 COM 會載入此 DLL,以建立未初始化的 Proxy 實例。
FtmBase::MarshalInterface 寫入數據流,以在某些用戶端程式中初始化 Proxy 物件所需的數據。
FtmBase::ReleaseMarshalData 終結封送處理的數據封包。
FtmBase::UnmarshalInterface 初始化新建立的 Proxy,並傳回該 Proxy 的介面指標。

公用資料成員

名稱 描述
FtmBase::marshaller_ 保存自由線程封送處理器的參考。

繼承階層架構

FtmBase

需求

標頭: ftm.h

命名空間: Microsoft::WRL

FtmBase::CreateGlobalInterfaceTable

建立全域介面數據表 (GIT)。

static HRESULT CreateGlobalInterfaceTable(
   __out IGlobalInterfaceTable **git
);

參數

git
此作業完成時,全域介面數據表的指標。

傳回值

如果作業成功,會傳送 S_OK;反之則傳送表示錯誤的 HRESULT 值。

備註

如需詳細資訊,請參閱IGlobalInterfaceTable

FtmBase::D isconnectObject

強制釋放物件的所有外部連接。 對象的伺服器會在關閉之前呼叫對象的這個方法實作。

STDMETHODIMP DisconnectObject(
   __in DWORD dwReserved
) override;

參數

dwReserved
保留以備將來之用;必須為零。

傳回值

如果作業成功,會傳送 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
要封送處理之介面標識碼的參考。

光伏
要封送處理的介面指標;可以是 NULL。

dwDestContext
指定介面要取消封殺的目的地內容。

指定一或多個 MSHCTX 列舉值。

目前,取消分界可能發生在目前進程的另一個公寓(MSHCTX_INPROC)或同一部計算機上的另一個進程中(MSHCTX_LOCAL)。

pvDestContext
保留供日後使用;必須是 NULL。

mshlflags
旗標,指出要封送處理的數據是否要傳輸回客戶端進程,也就是一般案例,或寫入至全域數據表,其中可由多個用戶端擷取。 指定一或多個 MSHLFLAGS 列舉值。

pSize
當此作業完成時,要寫入封送處理數據流之數據量上限的指標。

傳回值

如果成功,S_OK;否則,E_FAIL或E_NOINTERFACE。

FtmBase::GetUnmarshalClass

取得 COM 用來尋找包含對應 Proxy 程式代碼的 DLL 的 CLSID。 COM 會載入此 DLL,以建立未初始化的 Proxy 實例。

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

參數

riid
要封送處理之介面標識碼的參考。

光伏
要封送處理之介面的指標;如果呼叫端沒有所需介面的指標,可以是 NULL。

dwDestContext
指定介面要取消封殺的目的地內容。

指定一或多個 MSHCTX 列舉值。

取消分量可能發生在目前進程的另一個 Apartment(MSHCTX_INPROC)或與目前進程相同的電腦上另一個進程(MSHCTX_LOCAL)。

pvDestContext
保留供日後使用;必須是 NULL。

mshlflags
當此作業完成時,要用來在用戶端程式中建立 Proxy 的 CLSID 指標。

pCid

傳回值

如果成功,S_OK;否則,S_FALSE。

FtmBase::MarshalInterface

寫入數據流,以在某些用戶端程式中初始化 Proxy 物件所需的數據。

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 介面。

光伏
要封送處理之介面指標的指標;如果呼叫端沒有所需介面的指標,可以是 NULL。

dwDestContext
指定介面要取消封殺的目的地內容。

指定一或多個 MSHCTX 列舉值。

取消分割可能發生在目前進程的另一個 Apartment(MSHCTX_INPROC)或與目前進程相同電腦上的另一個進程中(MSHCTX_LOCAL)。

pvDestContext
保留以備將來之用;必須為零。

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

初始化新建立的 Proxy,並傳回該 Proxy 的介面指標。

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

參數

pStm
介面指標要取消分流之數據流的指標。

riid
要取消封殺之介面標識碼的參考。

ppv
當此作業完成時,接收riid中所要求介面指標的指標變數位址。 如果這項作業成功,*ppv 會包含要取消封殺之介面的要求介面指標。

傳回值

如果成功,S_OK;否則,E_NOINTERFACE或E_FAIL。