我有一个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);

关于c++ - CComSafeArray的使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9077191/

10-14 09:25