Tuesday, February 14, 2012

UCHAR array ( or BYTE array ) to variant type

UCHAR szBuf[8];
szBuf50[0] = 0;
szBuf50[1] = 0;
szBuf50[2] = 0;
szBuf50[3] = 1;
szBuf50[4] = 0;
szBuf50[5] = 0;
szBuf50[6] = 3;
szBuf50[7] = 231;

VARIANT data;
SAFEARRAY * safeArray;
UCHAR *safeArrayData;
safeArray = SafeArrayCreateVector( VT_UI1, 0, 8 );

SafeArrayAccessData( safeArray, ( void ** ) &safeArrayData );
CopyMemory( safeArrayData, szBuf, 8 );
SafeArrayUnaccessData( safeArray );

VariantInit( &data );
data.vt = VT_ARRAY | VT_UI1;
data.parray = safeArray;
//after using the data delete it if no longer needed..
VariantClear( &data );