繁体   English   中英

CComSafeArray的使用

[英]CComSafeArray use

我有一个Com函数:

GetData (SAFEARRAY ** pRetVal)

我有以下代码:

SAFEARRAY *ppData = NULL;       
hr = pmyInterface->GetData( &ppData );
CComSafeArray<IUnknown*> pSafeArgs;
pSafeArgs.Attach( ppData );

我必须对其进行更改,并删除ppData,并同时删除“附加”命令。

应该是这样的:

CComSafeArray<IUnknown*> pSafeArgs;
hr = pmyInterface->GetData( ((SAFEARRAY**)&pSafeArgs )))

但这是行不通的。 CComArray的发布可能有问题。

我该怎么做?

通常,在创建CComSafeArray时,您将指定将在其中保存的数据类型,例如:

CComSafeArray<char> pSafeArgs;

要将其提供给COM函数,您可以执行以下操作:

HRESULT hr = pmyInterface->GetData((LPSAFEARRAY)pSafeArgs);

尝试使用CComSafeArray :: GetSafeArrayPtr()

// Substitute T with the actual type of items 
// in your SAFEARRAY, e.g. CComSafeArray<BYTE>
CComSafeArray<T> safeArgs;

hr = pmyInterface->GetData( safeArgs.GetSafeArrayPtr() );

(通常,应避免在C ++代码中使用C样式强制转换。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM