2.2.1.7 PropertyMeta

The PropertyMeta structure represents the type, size, and meta-properties (specified in this section) of a property in a table.

 typedef struct {
   DWORD dataType;
   ULONG cbSize;
   DWORD flags;
 } PropertyMeta;

dataType: The eDataType (section 2.2.1.2) value that represents the data type of the property.

cbSize: A size, in bytes, associated with the property. The meaning of this value depends on the value of the dataType field and whether the fPROPERTY_FIXEDLENGTH flag is set in the flags field.

 Value of dataType

 fPROPERTY_FIXEDLENGTH set?

 Meaning

eDT_ULONG

-

The fixed size of the property. MUST be set to 0x00000004.

eDT_GUID

-

The fixed size of the property. MUST be set to 0x00000010 (decimal 16).

eDT_BYTES

No

The maximum size of the property. A value of 0xFFFFFFFF indicates the property's size is unconstrained.

eDT_BYTES

Yes

The fixed size of the property.

eDT_LPWSTR

No

The maximum size of the property. A value of 0xFFFFFFFF indicates the property's size is unconstrained.

eDT_LPWSTR

Yes

The fixed size of the property. MUST be set to a multiple of 2.

flags: A bit field specifying the meta-properties of the property. MUST be a combination of zero or more of the following flags.

Value

Meaning

fPROPERTY_PRIMARYKEY

0x00000001

This property is part of the primary key for its table. MUST be set if fPROPERTY_NOTNULLABLE is set.

fPROPERTY_NOTNULLABLE

0x00000002

This property cannot be null.

fPROPERTY_FIXEDLENGTH

0x00000004

This eDT_BYTES or eDT_LPWSTR property has a fixed size. MUST NOT be set for properties of type eDT_ULONG or eDT_GUID.

fPROPERTY_NOTPERSISTABLE

0x00000008

This property contains sensitive data such as passwords that MUST NOT be written in plaintext to persistent storage.

fPROPERTY_CASEINSENSITIVE

0x00000020

This eDT_LPWSTR property MUST be treated as case-insensitive for purposes of comparison. MUST NOT be set for properties of type eDT_ULONG, eDT_GUID, or eDT_BYTES.