2010-12-20 4 views
1

Ich habe einige Probleme bei der Übergabe eines Arrays von Strukturen in der Definition von COM-Schnittstelle. Zum Beispiel versuche ich eine Reihe von Variablen Ids in einer Lesefunktion zu definieren und ich erwarte, dass die Antwortfunktion (die gleiche Funktion) ein Array von Werten zurückbringt, die der zuvor definierten Variablen IDs entsprechen:Wie ein Array der Struktur als [in, out] -Parameter in COM-Schnittstelle Definition übergeben

[helpstring ("Methode ReadVariables")] HRESULT ReadVariables ([in] VARIANT varIDs, [out] _valStruct * retVals);

Für _valStruct, die Definition ist:

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

} 

Ich bin nicht vertraut mit COM und ich weiß, nur einige grundlegende Typen wie int, double, etc ... ich aufrichtig einige Experten hier gibt mir einen detaillierten Beispielcode oder verwandte Informationen. Ihre Hilfe wird sehr geschätzt ... Danke !!!

Antwort

0

Mann, es ist schon ewig her, dass ich sowas gemacht habe! Wie auch immer, nach Code I gegraben haben von 2002 bis benutzte ich SAFEARRAY .. aber vielleicht nur für VB Interoperabilität, etwa so:

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

Sie dann API-Funktionen wie SafeArrayAllocDescriptor und SafeArrayAllocData erstellen Sie Ihre Array verwenden können und SafeArrayAccessData/SafeArrayUnAccessData, um den Inhalt zu verwalten.

Hoffe, das hilft.

+0

Hi Jester, ich bin so froh, deine Antwort so schnell zurück zu bekommen. Könnten Sie bitte Ihren Beispielcode etwas weiter ausarbeiten? In Bezug auf meine Frage versuche ich ein Array von Struktur durch die COM-Schnittstelle zu übergeben. Ehrlich gesagt habe ich immer noch nicht verstanden, wie das geht ... – newbieAZ

Verwandte Themen