TYPEDESC

Describes the type of a variable, the return type of a function, or the type of a function parameter. It is defined as follows:

typedef struct FARSTRUCT tagTYPEDESC {
    union {
        // VT_PTR|VT_SAFEAEEAY, the pointed-at type.
    struct FARSTRUCT tagTYPEDESC FAR* lptdesc;

        // VT_CARRAY.
    struct FARSTRUCT tagARRAYDESC FAR* lpadesc;

        // VT_USERDEFINED is used to get type information for a 
        // user-defined type.
    HREFTYPE hreftype;

    }UNION_NAME(u);
    VARTYPE vt;
} TYPEDESC;
 

If the variable is VT_SAFEARRAY or VT_PTR, the union portion of the TYPEDESC contains a pointer to a TYPEDESC that specifies the element type.