SAFEARRAY von strukturen von c nach c# übergeben

Hallo,

ich habe eine c# dll mit

 [ComVisible(true)] 
 public struct testStruct
 {
 public int a;
 public string b;
 }


 public int Test(testStruct[] tests)
{
 .....
}

ich möchte aus c diese funktion aufrufen und einen array von strukruren als parameter übergeben

in C

 SAFEARRAY \*psa;
 SAFEARRAYBOUND sab[1];
 sab[0].lLbound = 0;
 sab[0].cElements = 2;
 testStruct \*pTest;
 HRESULT hr2;
 IRecordInfo \*pRI;

 hr2 = GetRecordInfoFromGuids(\_\_uuid("42b35618-0582-4a95-bf8d-9f961d5b9f7b"), 1, 0, 0x409, \_\_uuidof(testStep), &pRI);

 //SafeArrayGetRecordInfo()

 psa = SafeArrayCreateEx(VT\_RECORD, 1, sab,pRI);
 //if (psa == NULL)
 //return E\_OUTOFMEMORY;


 hr2 = SafeArrayAccessData(psa, (void\*\*)&pTest);
 if (FAILED(hr)) {
 SafeArrayDestroy(psa);
 return hr;
 }

 // safearray füllen mit daten
 pTest[0].a= 1;
 strcpy(pTestStep[0].b, "test1");
 pTest[1].a= 2;
 strcpy(pTestStep[1].b, "test2");

 hr = SafeArrayUnaccessData(psa);

 // funktion aufrufen
 dllPrt-\>Test(psa);

woher bekomme ich den GUUID von der TypLib( erste parameter)?
oder habt ihr einfachere lösung