A safearray is actually a structure with more in it than just the data. I think (heard but never tried) that to properly extract the data in a safe array, you have to duplicate the structure of the safearray with a cluster. The structure of the safe array is:
typedef struct tagSAFEARRAY
{
USHORT cDims;
USHORT fFeatures;
ULONG cbElements;
ULONG cLocks;
PVOID pvData;
SAFEARRAYBOUND rgsabound[ 1 ];
} SAFEARRAY;
A USHORT is an unsigned short (U8), and ULONG is unsigned long (U32) and PVOID is a pointer to the data and SAFEARRAYBOUND is another cluster with this structure:
typedef struct tagSAFEARRAYBOUND
{
ULONG cElements;
LONG lLbound;
} SAFEARRAYBOUND;
Here's a web page that describes all the different parameters:
http://ms
dn.microsoft.com/library/wcedoc/wcemfc/struct_25.htm
If this is too difficult, you might have to design a function in C code to extract the data. I wouldn't expect LabVIEW to crash for not converting the data correctly. I'd think that the Variant to G VI would just not return anything, but I suppose stranger things have happened. All the same, you might want to try just wiring the data from the method to a variant indicator and see if it still crashes. If it does, no point in messing around with the safearray structure stuff.