2010-12-20 55 views
1

我在COM接口的定義中傳遞一個結構數組時遇到了一些問題。例如,我試圖在一個讀取函數中定義一系列變量Ids,並且我期待回覆函數(相同的函數)將返回一個對應於先前定義的變量Ids的值數組:如何在COM接口定義中將參數傳遞給[in,out]參數中的結構數組

[helpstring(「method ReadVariables」)] HRESULT ReadVariables([in] VARIANT varIds,[out] _valStruct * retVals);

對於_valStruct的定義是:

struct _valStruct 
{ 
    int varId; 
    double varVal; 
    int timeStamp; 
    double funcId; 
.... 

} 

我不熟悉COM,我只是知道一些基本類型,如int,雙,等...我真誠一些專家在這裏會給我一些詳細的示例代碼或相關信息。非常感謝您的幫助......謝謝!

回答

0

男人,因爲我做了這樣的事情已經過去了! 無論如何,根據代碼,我從2002年挖出來的,我用SAFEARRAY ..但也許只有對VB的互操作,就像這樣:

[id(9), helpstring("method Keys")] HRESULT Keys([out, retval] SAFEARRAY(ComInt128)* pKeys); 

然後,您可以使用API​​函數,如SafeArrayAllocDescriptorSafeArrayAllocData來創建數組和SafeArrayAccessData/SafeArrayUnAccessData來管理內容。

希望這會有所幫助。

+0

嗨小丑,我很高興能夠讓您的回覆如此迅速。您能否詳細說明您的示例代碼?關於我的問題,我試圖通過COM接口傳遞一個結構數組。坦率地說,我仍然沒有得到如何做到這一點...... – newbieAZ 2010-12-20 23:59:24

相關問題