SPropValue

Applies to: Outlook 2013 | Outlook 2016

Describes a MAPI property.

Property Value
Header file:
Mapidefs.h
Related macros:
CHANGE_PROP_TYPE, MVI_PROP, PROP_ID, PROP_TAG, PROP_TYPE
typedef struct _SPropValue
{
  ULONG ulPropTag;
  ULONG dwAlignPad;
  union _PV Value;
} SPropValue, FAR *LPSPropValue;

Members

ulPropTag

Property tag for the property. Property tags are 32-bit unsigned integers consisting of the property's unique identifier in the high-order 16 bits and the property's type in the low-order 16 bits.

dwAlignPad

Reserved for MAPI; do not use.

Value

Union of data values, the specific value dictated by the property type. The following table lists for each property type, the member of the union that should be used and its associated data type.

Property type Value Data type of Value
PT_I2 or PT_SHORT
i
short int
PT_I4 or PT_LONG
l
LONG
-
ul
ULONG
PT_R4 or PT_FLOAT
flt
float
PT_R8 or PT_DOUBLE
dbl
double
PT_BOOLEAN
b
unsigned short int
PT_CURRENCY
cur
CURRENCY
PT_APPTIME
at
double
PT_SYSTIME
ft
FILETIME
PT_STRING8
lpszA
LPSTR
PT_BINARY
bin
BYTE [array]
PT_UNICODE
lpszW
LPWSTR
PT_CLSID
lpguid
LPGUID
PT_I8 or PT_LONGLONG
li
LARGE_INTEGER
PT_MV_I2
MVi
SShortArray
PT_MV_LONG
MVI
SLongArray
PT_MV_R4
MVflt
SRealArray
PT_MV_DOUBLE
MVdbl
SDoubleArray
PT_MV_CURRENCY
MVcur
SCurrencyArray
PT_MV_APPTIME
MVat
SAppTimeArray
PT_MV_SYSTIME
MVft
SDateTimeArray
PT_MV_BINARY
MVbin
SBinaryArray
PT_MV_STRING8
MVszA
SLPSTRArray
PT_MV_UNICODE
MVszW
SWStringArray
PT_MV_CLSID
MVguid
SGuidArray
PT_MV_I8
MVli
SLargeIntegerArray
PT_ERROR
err
SCODE
PT_NULL or PT_OBJECT
x
LONG
PT_PTR or PT_FILE_HANDLE
lpv
VOID *

Remarks

The ulPropTag member is made up of two parts:

  • An identifier in the high-order 16 bits.

  • A type in the low-order 16 bits.

The identifier is a numeric value within a particular range. MAPI defines ranges for identifiers to describe what the property is used for and who is responsible for maintaining it. MAPI defines constraints for each of the property tags that it supports in the Mapitags.h header file.

The type indicates the format for the property's value. MAPI defines constants for each of the property types that it supports in the Mapidefs.h header file.

For a complete list of the valid property ranges for identifiers and property types, see the Property Identifiers and Types appendix.

The dwAlignPad member is used as padding to make sure proper alignment on computers that require 8-byte alignment for 8-byte values. Developers who write code on such computers should use memory allocation routines that allocate the SPropValue arrays on 8-byte boundaries.

The SPropValue::ul member has no corresponding MAPI property type, since OLE's VT_UI4 is not mapped to MAPI. For more information, see MAPI Property Type Overview and Updating MAPI Properties. When the property type of an SPropValue indicates PT_LONG, the active member of the UPV union is generally l, and accessing ul constitutes undefined behavior per the C standard.

See also

MAPI Structures