C28717
aviso C28717: tipo VARIANT inválido
O campo vt de um struct VARIANT pode ter apenas determinados valores. Atribuir qualquer outro valor a ele é um erro.
O campo vt de um struct VARIANT ou VARIANTARG só pode usar os seguintes valores (possivelmente ORed por VT_BYREF e/ou VT_ARRAY): VT_EMPTY, VT_NULL, VT_I2, VT_I4, VT_R4, VT_R8, VT_CY, VT_DATE, VT_BSTR, VT_DISPATCH, VT_ERROR, VT_BOOL, VT_VARIANT, VT_DECIMAL, VT_RECORD, VT_UNKNOWN, VT_I1, VT_UI1, VT_UI2, VT_UI4, VT_INT, VT_UINT (VT_EMPTY e VT_NULL não podem ser combinados com VT_ARRAY).
Exemplo
PREfast relata o aviso para o exemplo a seguir.
VARIANT var;
var.vt = VT_SAFEARRAY | VT_INT;
O exemplo a seguir evita o erro.
VARIANT var;
var.vt = VT_ARRAY | VT_INT;