_variant_t(IDispatch* pSrc, bool fAddRef) 使用一个COM组件的指针构造一个_variant_t类型的对象

来源:互联网 发布:linux卸载mysql数据库 编辑:程序博客网 时间:2024/06/10 13:38

COM interface pointer => _variant_t

 

Constructs a _variant_t object of type VT_DISPATCH from a COM interface pointer. IffAddRef istrue, thenAddRef is called on the supplied interface pointer to match the call toRelease that will occur when the_variant_t object is destroyed. It is up to you to callRelease on the supplied interface pointer. IffAddRef is false, this constructor takes ownership of the supplied interface pointer; do not callRelease on the supplied interface pointer.

 

使用一个COM组件的指针构造一个_variant_t类型的对象。

如果fAddRef为真时,会调用COM组件的AddRef函数为该组件添加一个引用。AddRef函数和Release函数相对应,当_variant_t销毁的时候调用会调用Release函数。至于原来的COM组件调用不掉用Release由你自己决定。如果fAddRef为假时,这个_variant_t对象就取得了这个COM组件的所有权,原来的COM组件就不能再调用Release了。

 

for example:

_ConnectionPtr m_pConnect;
m_pConnect.CreateInstance("ADODB.Connection");

 

// 以下几种情况一样:

1、_variant_t v1 = (_variant_t)(IDispatch*)m_pConnect;

2、_variant_t v2 = _variant_t((IDispatch*)m_pConnect, true);

3、_variant_t v3 = _variant_t((IDispatch*)m_pConnect, false);
    m_pConnect->AddRef();

原创粉丝点击