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。