簡體   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