typeInfo

Specifies a property's type information. There should be only one typeInfo element for each propertyDescription. This element has changed for Windows 7.

If there are multiple elements, the last one is used. If no typeInfo element is provided, then the default attribute settings are applied to the property description.

Syntax for Windows 7

<!-- typeInfo for Windows 7-->
<xs:element name="typeInfo">
    <xs:complexType>
        <xs:attribute name="type" default="Any">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Any"/>
                    <xs:enumeration value="Null"/>
                    <xs:enumeration value="String"/>
                    <xs:enumeration value="Boolean"/>
                    <xs:enumeration value="Byte"/>
                    <xs:enumeration value="Buffer"/>
                    <xs:enumeration value="Int16"/>
                    <xs:enumeration value="UInt16"/>
                    <xs:enumeration value="Int32"/>
                    <xs:enumeration value="UInt32"/>
                    <xs:enumeration value="Int64"/>
                    <xs:enumeration value="UInt64"/>
                    <xs:enumeration value="Double"/>
                    <xs:enumeration value="DateTime"/>
                    <xs:enumeration value="Guid"/>
                    <xs:enumeration value="Blob"/>
                    <xs:enumeration value="Stream"/>
                    <xs:enumeration value="Clipboard"/>
                    <xs:enumeration value="Object"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="groupingRange">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Discrete"/>
                    <xs:enumeration value="Alphanumeric"/>
                    <xs:enumeration value="Size"/>
                    <xs:enumeration value="Date"/>
                    <xs:enumeration value="Dynamic"/>
                    <xs:enumeration value="Percent"/>
                    <xs:enumeration value="Enumerated"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="isInnate" type="xs:boolean" default="false"/>
        <xs:attribute name="canBePurged" type="xs:boolean"/>
        <xs:attribute name="multipleValues" type="xs:boolean" default="false"/>
        <xs:attribute name="isGroup" type="xs:boolean" default="false"/>
        <xs:attribute name="aggregationType">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Default"/>
                    <xs:enumeration value="First"/>
                    <xs:enumeration value="Sum"/>
                    <xs:enumeration value="Average"/>
                    <xs:enumeration value="DateRange"/>
                    <xs:enumeration value="Union"/>
                    <xs:enumeration value="Maximum"/>
                    <xs:enumeration value="Minimum"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="isTreeProperty" type="xs:boolean" default="false"/>
        <xs:attribute name="isViewable" type="xs:boolean" default="false"/>
        <xs:attribute name="isQueryable" type="xs:boolean" default="false"/>
        <xs:attribute name="includeInFullTextQuery" type="xs:boolean" default="false"/>
        <xs:attribute name="searchRawValue" type="xs:boolean" default="false"/>
        <xs:attribute name="conditionType">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="None"/>
                    <xs:enumeration value="String"/>
                    <xs:enumeration value="Number"/>
                    <xs:enumeration value="DateTime"/>
                    <xs:enumeration value="Boolean"/>
                    <xs:enumeration value="Size"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultOperation">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Equal"/>
                    <xs:enumeration value="NotEqual"/>
                    <xs:enumeration value="LessThan"/>
                    <xs:enumeration value="GreaterThan"/>
                    <xs:enumeration value="Contains"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
</xs:element>

Element Information

Parent Element Child Elements
propertyDescription None

 

Attributes

Attribute Description
type Public. Optional. Default is "Any". Indicates the type of the property. The following are valid types and their associated variant types are retrieved by IPropertyDescription::GetPropertyType.
Value Meaning
Any Default. The property subsystem will not enforce or coerce the property value. IPropertyDescription::GetPropertyType returns VT_NULL. Independent software vendors (ISVs) are strongly encouraged to provide a type rather than fall back on this default.
Null There is no value for this property. IPropertyDescription::GetPropertyType returns VT_NULL.
String The value must be a VT_LPWSTR, which is a Unicode string terminated by a null reference.
Boolean The value must be a VT_BOOL, which is a boolean.
Byte The value must be a VT_UI1, which is a byte.
Buffer The value must be a VT_UI1 | VT_VECTOR buffer of bytes.
Int16 The value must be a VT_I2, which is a 16-bit integer.
UInt16 The value must be a VT_UI2, which is a 16-bit unsigned integer.
Int32 The value must be a VT_I4, which is a 32-bit integer.
UInt32 The value must be a VT_UI4, which is a 32-bit unsigned integer.
Int64 The value must be a VT_I8, which is a 64-bit integer.
UInt64 The value must be a VT_UI8, which is a 64-bit unsigned integer.
Double The value must be a VT_R8, which is a double.
DateTime The value must be a VT_FILETIME, which is a FILETIME.
Guid The value must be a VT_CLSID, which is a class identifier (CLSID).
Blob The value must be a VT_BLOB, which are length-prefixed bytes.
Stream The value must be a VT_STREAM, which is an object that implements IStream.
Clipboard The value must be a VT_CF, which is a clipboard format.
Object The value must be a VT_UNKNOWN, which is an object that implements IUnknown.

 

groupingRange Optional. Default is "Discrete". Specifies how the property is displayed when a view is grouped by this property. Once set here, these values are retrieved by IPropertyDescription::GetGroupingRange. The following are valid types.
Value Meaning
Discrete Default. Displays individual values.
Alphanumeric Displays static alphanumeric ranges for values.
Size Displays static size ranges for values.
Date Displays month/year groups. Default for properties of type="DateTime".
TimeRelative Displays in time-relative groups.
Dynamic Displays dynamically created ranges for the values.
Percent Displays percent buckets.

 

isInnate Public. Optional. Default is "false". Specifies whether the property is considered innate. An innate property is one which is either calculated from the content of a file, or from other resources or systems. For example, System.Size is an innate property provided by the file system; changing the value of the property in and of itself does nothing. Other examples are System.Image.Dimensions and System.Document.PageCount, which are calculated by programs based upon the content of the file, not based upon a user-changeable setting. Setting isInnate="true" means the user cannot edit this property directly via a property control. This value maps to the PDTF_ISINNATE flag defined in PROPDESC_TYPE_FLAGS and used in IPropertyDescription::GetTypeFlags.
canBePurged Windows Vista with Service Pack 1 (SP1) and later only. Public. Optional. When set to "true", allows an innate property to be deleted. Innate properties, which are calculated from other properties, are read-only by definition. The default value for this attribute depends on the isInnate value.
isInnate canBePurged Default Value
true false
false true

 

Note:
A property whose isInnate value is "false" (meaning that the property is read/write) cannot also set the canBePurged value to "false". This restriction is enforced by the operating system.

 

Although this attribute was introduced in Windows Vista with Service Pack 1 (SP1), a .propdesc file that includes this attribute is compatible with Windows Vista prior to Windows Vista with SP1. The canBePurged attribute is simply ignored in that situation.

multipleValues Public. Optional. Default is "false". Specifies whether this property can have multiple values. This value maps to the PDTF_MULTIPLEVALUES flag defined in PROPDESC_TYPE_FLAGS and used in IPropertyDescription::GetTypeFlags. This also influences whether VT_VECTOR is OR'd to the VARTYPE of the property value.
isGroup Public. Optional. Default is "false". Specifies whether the property is a group heading. A group heading is strictly used in proplists, has no value, is never stored in a file, and should also have <typeInfo type="Null">. Some UI in the system use proplists to indicate the sequence of the properties to display. These proplists may include references to group headings (eg, System.PropGroup.Camera), which tell the UI to start a new group section (eg, "Camera Settings"). A property description with isGroup="true" should specify a <labelInfo label="Some localized label">, otherwise it isn't a useful property. This value maps to the PDTF_ISGROUP flag defined in PROPDESC_TYPE_FLAGS and used in IPropertyDescription::GetTypeFlags.
aggregationType Public. Optional. Default is "Default". Specifies how aggregate properties are displayed when multiple items are selected. Once set here, these values are retrieved by IPropertyDescription::GetAggregationType as an PROPDESC_AGGREGATION_TYPE. The following are valid types.
Value Meaning
Default Default. Displays a Multiple Values placeholder in the UI. This is the default if the type is incompatible with the specified aggregationType.
First Displays the property value of the first item in the selection or collection.
Sum Displays the sum of the numerical values. Useful for properties such as System.Media.Duration or System.Size. This value is not compatible with non-numeric types.
Average Displays the average of the numerical values. Useful for properties such as System.Rating. This value is not compatible with non-numeric types.
DateRange Displays a range of dates. Useful for properties like System.Photo.DateTaken. This value is not compatible with anything except type="DateTime" and is the default for properties of that type.
Union Displays a union of all the values in the selection or collection. The order in which the values are shown is undefined. This value is the default for properties of type="String" and multipleValues="true".
Maximum Displays the maximum value in the collection. Useful for properties like System.DateModified. Not compatible with non-numeric or non-date types.
Minimum Displays the minimum value in the collection. Not compatible with non-numeric or non-date types.

 

isTreeProperty Public. Optional. Default value is "false".
isViewable Public. Optional. Default value is "false". Specifies whether this property is intended to be viewable to the user. For example, the Column Chooser UI only shows the properties that have isViewable="true". The exception is UI that is driven by a proplist, which will always show the property. If you have a property that is only meant to shuttle data between two objects, and never intended to be viewed by the user, this attribute should be false. This value maps to the PDTF_ISVIEWABLE flag defined in PROPDESC_TYPE_FLAGS and used in IPropertyDescription::GetTypeFlags.
isQueryable Windows Vista only. Not supported in Windows 7 and later. Public. Optional. Default value is "false". Specifies whether this property is intended to be available in the Search Query Builder UI. A property must have isViewable="true" before isQueryable="true" is respected. This value maps to the PDTF_ISQUERYABLE flag defined in PROPDESC_TYPE_FLAGS and used in IPropertyDescription::GetTypeFlags.
searchRawValue Windows 7 and later. Public. Optional. Default value is "false".
includeInFullTextQuery Windows Vista only. Not supported in Windows 7 and later. Public. Optional. Default value is "false".
conditionType Public. Optional. Default is "String". Specifies a hint to the Search Query Builder UI so that it can determine the list of possible condition operators inside a predicate. The following are recognized values.
Value Meaning
String Default. The following operators will be used: "is", "is not", "<", ">", "<=", ">=", "starts with", "ends with", "contains", "doesn't contain", "is like".
Number Default for numeric properties. The following operators will be used: "equals", "doesn't equal", "is less than", "is greater than", "is less than or equal to", "is greater than or equal to".
DateTime Default for properties of type="DateTime". The following operators will be used: "is", "is not", "is before", "is after", "is before but includes", "is after but includes".
Boolean Default for properties of type="Boolean". Same as Number.
Size Same as Number.

 

defaultOperation Public. Optional. Default is "Equal". Specifies a hint to the Search Query Builder tool so that it can determine the default operator. The possible values are as follows:
Value Meaning
Equal Default. Indicates equivalent.
NotEqual Indicates not equivalent.
LessThan Indicates less than.
GreaterThan Default for properties of conditionType="Size". Indicates greater than.
Contains Default for properties of conditionType="String". Indicates inclusion.