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 | 获取 COM 用于定位包含相应代理代码的 DLL 的 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
留待将来使用;必须为零。
返回值
如果成功,则为 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
要拆收指定接口的目标上下文。
指定一个或多个 MSHCTX 枚举值。
目前,拆收处理可以发生在当前进程 (MSHCTX_INPROC) 的另一个单元中,也可以发生在与当前进程 (MSHCTX_LOCAL) 相同计算机上的另一个进程中。
pvDestContext
保留供以后使用;必须是 NULL。
mshlflags
指示要封送的数据是否要传输回客户端进程(典型情况),或是否要写入全局表(多个客户端可以在其中检索数据)的标志。 指定一个或多个 MSHLFLAGS 枚举值。
pSize
此操作完成后,指向要写入封送处理流的数据量的上限的指针。
返回值
如果成功,返回值为 S_OK;否则,返回值为 E_FAIL 或 E_NOINTERFACE。
FtmBase::GetUnmarshalClass
获取 COM 用于定位包含相应代理代码的 DLL 的 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
要拆收指定接口的目标上下文。
指定一个或多个 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
要拆收指定接口的目标上下文。
指定一个或多个 MSHCTX 枚举值。
拆收处理可以发生在当前进程 (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
初始化新创建的代理并返回指向该代理的接口指针。
STDMETHODIMP UnmarshalInterface(
__in IStream *pStm,
__in REFIID riid,
__deref_out void **ppv
) override;
参数
pStm
指向要拆收接口指针的流的指针。
riid
对要拆收的接口的标识符的引用。
ppv
此操作完成后,接收“riid”中请求的接口指针的指针变量地址。 如果此操作成功,*“ppv”包含要拆收的接口的请求接口指针。
返回值
如果成功,返回值为 S_OK;否则,返回值为 E_NOINTERFACE 或 E_FAIL。