VARENUM enumeration (wtypes.h)

Specifies the variant types.

Syntax

typedef enum VARENUM {
  VT_EMPTY = 0,
  VT_NULL = 1,
  VT_I2 = 2,
  VT_I4 = 3,
  VT_R4 = 4,
  VT_R8 = 5,
  VT_CY = 6,
  VT_DATE = 7,
  VT_BSTR = 8,
  VT_DISPATCH = 9,
  VT_ERROR = 10,
  VT_BOOL = 11,
  VT_VARIANT = 12,
  VT_UNKNOWN = 13,
  VT_DECIMAL = 14,
  VT_I1 = 16,
  VT_UI1 = 17,
  VT_UI2 = 18,
  VT_UI4 = 19,
  VT_I8 = 20,
  VT_UI8 = 21,
  VT_INT = 22,
  VT_UINT = 23,
  VT_VOID = 24,
  VT_HRESULT = 25,
  VT_PTR = 26,
  VT_SAFEARRAY = 27,
  VT_CARRAY = 28,
  VT_USERDEFINED = 29,
  VT_LPSTR = 30,
  VT_LPWSTR = 31,
  VT_RECORD = 36,
  VT_INT_PTR = 37,
  VT_UINT_PTR = 38,
  VT_FILETIME = 64,
  VT_BLOB = 65,
  VT_STREAM = 66,
  VT_STORAGE = 67,
  VT_STREAMED_OBJECT = 68,
  VT_STORED_OBJECT = 69,
  VT_BLOB_OBJECT = 70,
  VT_CF = 71,
  VT_CLSID = 72,
  VT_VERSIONED_STREAM = 73,
  VT_BSTR_BLOB = 0xfff,
  VT_VECTOR = 0x1000,
  VT_ARRAY = 0x2000,
  VT_BYREF = 0x4000,
  VT_RESERVED = 0x8000,
  VT_ILLEGAL = 0xffff,
  VT_ILLEGALMASKED = 0xfff,
  VT_TYPEMASK = 0xfff
} ;

Constants

 
VT_EMPTY
Value: 0
Not specified.
VT_NULL
Value: 1
Null.
VT_I2
Value: 2
A 2-byte integer.
VT_I4
Value: 3
A 4-byte integer.
VT_R4
Value: 4
A 4-byte real.
VT_R8
Value: 5
An 8-byte real.
VT_CY
Value: 6
Currency.
VT_DATE
Value: 7
A date.
VT_BSTR
Value: 8
A string.
VT_DISPATCH
Value: 9
An IDispatch pointer.
VT_ERROR
Value: 10
An SCODE value.
VT_BOOL
Value: 11
A Boolean value. True is -1 and false is 0.
VT_VARIANT
Value: 12
A variant pointer.
VT_UNKNOWN
Value: 13
An IUnknown pointer.
VT_DECIMAL
Value: 14
A 16-byte fixed-pointer value.
VT_I1
Value: 16
A character.
VT_UI1
Value: 17
An unsigned character.
VT_UI2
Value: 18
An unsigned short.
VT_UI4
Value: 19
An unsigned long.
VT_I8
Value: 20
A 64-bit integer.
VT_UI8
Value: 21
A 64-bit unsigned integer.
VT_INT
Value: 22
An integer.
VT_UINT
Value: 23
An unsigned integer.
VT_VOID
Value: 24
A C-style void.
VT_HRESULT
Value: 25
An HRESULT value.
VT_PTR
Value: 26
A pointer type.
VT_SAFEARRAY
Value: 27
A safe array. Use VT_ARRAY in VARIANT.
VT_CARRAY
Value: 28
A C-style array.
VT_USERDEFINED
Value: 29
A user-defined type.
VT_LPSTR
Value: 30
A null-terminated string.
VT_LPWSTR
Value: 31
A wide null-terminated string.
VT_RECORD
Value: 36
A user-defined type.
VT_INT_PTR
Value: 37
A signed machine register size width.
VT_UINT_PTR
Value: 38
An unsigned machine register size width.
VT_FILETIME
Value: 64
A FILETIME value.
VT_BLOB
Value: 65
Length-prefixed bytes.
VT_STREAM
Value: 66
The name of the stream follows.
VT_STORAGE
Value: 67
The name of the storage follows.
VT_STREAMED_OBJECT
Value: 68
The stream contains an object.
VT_STORED_OBJECT
Value: 69
The storage contains an object.
VT_BLOB_OBJECT
Value: 70
The blob contains an object.
VT_CF
Value: 71
A clipboard format.
VT_CLSID
Value: 72
A class ID.
VT_VERSIONED_STREAM
Value: 73
A stream with a GUID version.
VT_BSTR_BLOB
Value: 0xfff
Reserved.
VT_VECTOR
Value: 0x1000
A simple counted array.
VT_ARRAY
Value: 0x2000
A SAFEARRAY pointer.
VT_BYREF
Value: 0x4000
A void pointer for local use.
VT_RESERVED
Value: 0x8000
VT_ILLEGAL
Value: 0xffff
VT_ILLEGALMASKED
Value: 0xfff
VT_TYPEMASK
Value: 0xfff

Remarks

The following table shows where these values can be used.

Value VARIANT TYPEDESC Property set Safe array
VT_ARRAY X
VT_BLOB X
VT_BLOB_OBJECT X
VT_BOOL X X X X
VT_BSTR X X X X
VT_BSTR_BLOB
VT_BYREF X
VT_CARRAY X
VT_CF X
VT_CLSID X
VT_CY X X X X
VT_DATE X X X X
VT_DECIMAL X X X
VT_DISPATCH X X X
VT_EMPTY X X
VT_ERROR X X X X
VT_FILETIME X
VT_HRESULT X
VT_I1 X X X X
VT_I2 X X X X
VT_I4 X X X X
VT_I8 X X
VT_INT X X X X
VT_INT_PTR X
VT_LPSTR X X
VT_LPWSTR X X
VT_NULL X X
VT_PTR X
VT_R4 X X X X
VT_R8 X X X X
VT_RECORD X X X
VT_SAFEARRAY X
VT_STORAGE X
VT_STORED_OBJECT X
VT_STREAM X
VT_STREAMED_OBJECT X
VT_UI1 X X X X
VT_UI2 X X X X
VT_UI4 X X X X
VT_UI8 X X
VT_UINT X X X
VT_UINT_PTR X
VT_UNKNOWN X X X
VT_USERDEFINED X
VT_VARIANT X X X X
VT_VECTOR X
VT_VERSIONED_STREAM X
VT_VOID X
 

VT_BSTR_BLOB is reserved for system use.

Requirements

Requirement Value
Header wtypes.h