//VARIANT类型是一种复合数据类型; //以下是VARIANT变量类型所支持的所有的数据类型; LONGLONG llval; // VT_I8. LONG lVal; // VT_I4. BYTE bVal; // VT_UI1.------Unsigned 1-byte character is stored in bVal; SHORT iVal; // VT_I2. FLOAT fltVal; // VT_R4. DOUBLE dblVal; // VT_R8. VARIANT_BOOL boolVal; // VT_BOOL. _VARIANT_BOOL bool; SCODE scode; // VT_ERROR. CY cyVal; // VT_CY.------A currency value was specified; DATE date; // VT_DATE. BSTR bstrVal; // VT_BSTR.------a string was passed;this pointer must be obtained and freed by the BSTR functions IUnknown * punkVal; // VT_UNKNOWN. IDispatch * pdispVal; // VT_DISPATCH. SAFEARRAY * parray; // VT_ARRAY|*. BYTE * pbVal; // VT_BYREF|VT_UI1. SHORT * piVal; // VT_BYREF|VT_I2. LONG * plVal; // VT_BYREF|VT_I4. LONGLONG * pllVal; // VT_BYREF|VT_I8. FLOAT * pfltVal; // VT_BYREF|VT_R4. DOUBLE * pdblVal; // VT_BYREF|VT_R8. VARIANT_BOOL * pboolVal; // VT_BYREF|VT_BOOL. _VARIANT_BOOL * pbool; SCODE * pscode; // VT_BYREF|VT_ERROR. CY * pcyVal; // VT_BYREF|VT_CY. DATE * pdate; // VT_BYREF|VT_DATE. BSTR * pbstrVal; // VT_BYREF|VT_BSTR. IUnknown ** ppunkVal; // VT_BYREF|VT_UNKNOWN. IDispatch ** ppdispVal; // VT_BYREF|VT_DISPATCH. SAFEARRAY ** pparray; // VT_BYREF|VT_ARRAY. VARIANT * pvarVal; // VT_BYREF|VT_VARIANT. PVOID * byref; // Generic ByRef. CHAR cVal; // VT_I1.------A 1-byte character value is stored in cVal USHORT uiVal; // VT_UI2. ULONG ulVal; // VT_UI4. ULONGLONG ullVal; // VT_UI8. INT intVal; // VT_INT. UINT uintVal; // VT_UINT. DECIMAL * pdecVal // VT_BYREF|VT_DECIMAL. CHAR * pcVal; // VT_BYREF|VT_I1. USHORT * puiVal; // VT_BYREF|VT_UI2. ULONG * pulVal; // VT_BYREF|VT_UI4. ULONGLONG * pullVal; // VT_BYREF|VT_UI8. INT * pintVal; // VT_BYREF|VT_INT. UINT * puintVal; // VT_BYREF|VT_UINT. struct __tagBRECORD { PVOID pvRecord; IRecordInfo *pRecInfo; } __VARIANT_NAME_4; //A BSTR (Basic string or binary string) is a string data type that is used by COM, Automation, and Interop functions.