2.2.7 VARIANT Type Constants
The VARENUM enumeration constants are used in the discriminant field, vt, of the VARIANT type specified in section 2.2.29.2. When present, the VT_BYREF flag MUST be in an OR relation with another value to specify the byref argument for the VARIANT. The VT_EMPTY and VT_NULL values MUST NOT be specified with the VT_BYREF bit flag.
The following values are also used in the discriminant field, vt, of the TYPEDESC structure specified in section 2.2.37.
The meaning of each VARIANT type constant is specified as follows. The Context column specifies the context in which each constant is used. A constant MUST NOT be used in a VARIANT unless it is specified with a "V". A constant MUST NOT be used in a SAFEARRAY unless it is specified with an "S". A constant MUST NOT be used in a TYPEDESC unless it is specified with a "T".
typedef enum tagVARENUM
{
VT_EMPTY = 0x0000,
VT_NULL = 0x0001,
VT_I2 = 0x0002,
VT_I4 = 0x0003,
VT_R4 = 0x0004,
VT_R8 = 0x0005,
VT_CY = 0x0006,
VT_DATE = 0x0007,
VT_BSTR = 0x0008,
VT_DISPATCH = 0x0009,
VT_ERROR = 0x000A,
VT_BOOL = 0x000B,
VT_VARIANT = 0x000C,
VT_UNKNOWN = 0x000D,
VT_DECIMAL = 0x000E,
VT_I1 = 0x0010,
VT_UI1 = 0x0011,
VT_UI2 = 0x0012,
VT_UI4 = 0x0013,
VT_I8 = 0x0014,
VT_UI8 = 0x0015,
VT_INT = 0x0016,
VT_UINT = 0x0017,
VT_VOID = 0x0018,
VT_HRESULT = 0x0019,
VT_PTR = 0x001A,
VT_SAFEARRAY = 0x001B,
VT_CARRAY = 0x001C,
VT_USERDEFINED = 0x001D,
VT_LPSTR = 0x001E,
VT_LPWSTR = 0x001F,
VT_RECORD = 0x0024,
VT_INT_PTR = 0x0025,
VT_UINT_PTR = 0x0026,
VT_ARRAY = 0x2000,
VT_BYREF = 0x4000
} VARENUM;
-
VT_EMPTY:
Context
Description
V
The type of the contained field is undefined. When this flag is specified, the VARIANT MUST NOT contain a data field. The VARIANT definition is specified in section 2.2.29.2.
-
VT_NULL:
Context
Description
V
The type of the contained field is NULL. When this flag is specified, the VARIANT MUST NOT contain a data field. The VARIANT definition is specified in section 2.2.29.2.
-
VT_I2:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a 2-byte signed integer.
-
VT_I4:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a 4-byte signed integer.
-
VT_R4:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a 4-byte IEEE floating-point number.
-
VT_R8:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be an 8-byte IEEE floating-point number.
-
VT_CY:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be CURRENCY (see section 2.2.24).
-
VT_DATE:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be DATE (see section 2.2.25).
-
VT_BSTR:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be BSTR (see section 2.2.23).
-
VT_DISPATCH:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a pointer to IDispatch (see section 3.1.4).
-
VT_ERROR:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be HRESULT.
-
VT_BOOL:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be VARIANT_BOOL (see section 2.2.27).
-
VT_VARIANT:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be VARIANT (see section 2.2.29). It MUST appear with the bit flag VT_BYREF.
-
VT_UNKNOWN:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a pointer to IUnknown.
-
VT_DECIMAL:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be DECIMAL (see section 2.2.26).
-
VT_I1:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a 1-byte integer.
-
VT_UI1:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a 1-byte unsigned integer.
-
VT_UI2:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a 2-byte unsigned integer.
-
VT_UI4:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a 4-byte unsigned integer.
-
VT_I8:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be an 8-byte signed integer.
-
VT_UI8:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be an 8-byte unsigned integer.
-
VT_INT:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a 4-byte signed integer.
-
VT_UINT:
Context
Description
V, S, T
Either the specified type, or the type of the element or contained field MUST be a 4-byte unsigned integer.
-
VT_VOID:
Context
Description
T
The specified type MUST be void.
-
VT_HRESULT:
Context
Description
T
The specified type MUST be HRESULT.
-
VT_PTR:
Context
Description
T
The specified type MUST be a unique pointer, as specified in [C706] section 4.2.20.2.
-
VT_SAFEARRAY:
Context
Description
T
The specified type MUST be SAFEARRAY (section 2.2.30).
-
VT_CARRAY:
Context
Description
T
The specified type MUST be a fixed-size array.
-
VT_USERDEFINED:
Context
Description
T
The specified type MUST be user defined.
-
VT_LPSTR:
Context
Description
T
The specified type MUST be a NULL-terminated string, as specified in [C706] section 14.3.4.
-
VT_LPWSTR:
Context
Description
T
The specified type MUST be a zero-terminated string of UNICODE characters, as specified in [C706], section 14.3.4.
-
VT_RECORD:
Context
Description
V, S
The type of the element or contained field MUST be a BRECORD (see section 2.2.28.2).
-
VT_INT_PTR:
Context
Description
T
The specified type MUST be either a 4-byte or an 8-byte signed integer. The size of the integer is platform specific and determines the system pointer size value, as specified in section 2.2.21.
-
VT_UINT_PTR:
Context
Description
T
The specified type MUST be either a 4 byte or an 8 byte unsigned integer. The size of the integer is platform specific and determines the system pointer size value, as specified in section 2.2.21.
-
VT_ARRAY:
Context
Description
V, S
The type of the element or contained field MUST be a SAFEARRAY (see section 2.2.30.10).
-
VT_BYREF:
Context
Description
V, S
The type of the element or contained field MUST be a pointer to one of the types listed in the previous rows of this table. If present, this bit flag MUST appear in a VARIANT discriminant (see section 2.2.28) with one of the previous flags.