counter Complex Type

Defines a counter.

<xs:complexType name="counter">
    <xs:choice
        minOccurs="0"
        maxOccurs="1"
    >
        <xs:element name="counterAttributes"
            type="man:counterAttributes"
        >
            <xs:key name="uniqueCounterAttributeName">
                <xs:selector
                    xpath="./man:counterAttribute"
                 />
                <xs:field
                    xpath="@name"
                 />
            </xs:key>
        </xs:element>
    </xs:choice>
    <xs:attribute name="symbol"
        type="man:CSymbolType"
        use="optional"
     />
    <xs:attribute name="id"
        type="man:UInt32Type"
        use="required"
     />
    <xs:attribute name="uri"
        type="xs:anyURI"
        use="required"
     />
    <xs:attribute name="name"
        use="optional"
    >
        <xs:simpleType>
            <xs:restriction
                base="xs:string"
            >
                <xs:maxLength
                    value="1023"
                 />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="description"
        type="xs:string"
        use="optional"
     />
    <xs:attribute name="type"
        use="required"
    >
        <xs:simpleType>
            <xs:restriction
                base="xs:string"
            >
                <xs:enumeration
                    value="perf_counter_counter"
                 />
                <xs:enumeration
                    value="perf_counter_timer"
                 />
                <xs:enumeration
                    value="perf_counter_queuelen_type"
                 />
                <xs:enumeration
                    value="perf_counter_large_queuelen_type"
                 />
                <xs:enumeration
                    value="perf_counter_100ns_queuelen_type"
                 />
                <xs:enumeration
                    value="perf_counter_obj_time_queuelen_type"
                 />
                <xs:enumeration
                    value="perf_counter_bulk_count"
                 />
                <xs:enumeration
                    value="perf_counter_text"
                 />
                <xs:enumeration
                    value="perf_counter_rawcount"
                 />
                <xs:enumeration
                    value="perf_counter_large_rawcount"
                 />
                <xs:enumeration
                    value="perf_counter_rawcount_hex"
                 />
                <xs:enumeration
                    value="perf_counter_large_rawcount_hex"
                 />
                <xs:enumeration
                    value="perf_sample_fraction"
                 />
                <xs:enumeration
                    value="perf_sample_counter"
                 />
                <xs:enumeration
                    value="perf_counter_timer_inv"
                 />
                <xs:enumeration
                    value="perf_sample_base"
                 />
                <xs:enumeration
                    value="perf_average_timer"
                 />
                <xs:enumeration
                    value="perf_average_base"
                 />
                <xs:enumeration
                    value="perf_average_bulk"
                 />
                <xs:enumeration
                    value="perf_obj_time_timer"
                 />
                <xs:enumeration
                    value="perf_100nsec_timer"
                 />
                <xs:enumeration
                    value="perf_100nsec_timer_inv"
                 />
                <xs:enumeration
                    value="perf_counter_multi_timer"
                 />
                <xs:enumeration
                    value="perf_counter_multi_timer_inv"
                 />
                <xs:enumeration
                    value="perf_counter_multi_base"
                 />
                <xs:enumeration
                    value="perf_100nsec_multi_timer"
                 />
                <xs:enumeration
                    value="perf_100nsec_multi_timer_inv"
                 />
                <xs:enumeration
                    value="perf_raw_fraction"
                 />
                <xs:enumeration
                    value="perf_large_raw_fraction"
                 />
                <xs:enumeration
                    value="perf_raw_base"
                 />
                <xs:enumeration
                    value="perf_large_raw_base"
                 />
                <xs:enumeration
                    value="perf_elapsed_time"
                 />
                <xs:enumeration
                    value="perf_counter_delta"
                 />
                <xs:enumeration
                    value="perf_counter_large_delta"
                 />
                <xs:enumeration
                    value="perf_precision_system_timer"
                 />
                <xs:enumeration
                    value="perf_precision_100ns_timer"
                 />
                <xs:enumeration
                    value="perf_precision_object_timer"
                 />
                <xs:enumeration
                    value="perf_counter_composite"
                 />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="baseID"
        type="man:UInt32Type"
        use="optional"
     />
    <xs:attribute name="detailLevel"
        use="required"
    >
        <xs:simpleType>
            <xs:restriction
                base="xs:string"
            >
                <xs:enumeration
                    value="standard"
                 />
                <xs:enumeration
                    value="advanced"
                 />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="defaultScale"
        use="optional"
        default="0"
    >
        <xs:simpleType>
            <xs:restriction
                base="xs:integer"
            >
                <xs:minInclusive
                    value="-10"
                 />
                <xs:maxInclusive
                    value="10"
                 />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="aggregate"
        use="optional"
    >
        <xs:simpleType>
            <xs:restriction
                base="xs:string"
            >
                <xs:enumeration
                    value="sum"
                 />
                <xs:enumeration
                    value="avg"
                 />
                <xs:enumeration
                    value="max"
                 />
                <xs:enumeration
                    value="min"
                 />
                <xs:enumeration
                    value="undefined"
                 />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="perfTimeID"
        type="man:UInt32Type"
        use="optional"
     />
    <xs:attribute name="perfFreqID"
        type="man:UInt32Type"
        use="optional"
     />
    <xs:attribute name="multiCounterID"
        type="man:UInt32Type"
        use="optional"
     />
    <xs:attribute name="struct"
        type="man:CSymbolType"
        use="optional"
     />
    <xs:attribute name="field"
        type="man:CSymbolType"
        use="optional"
     />
</xs:complexType>

Child elements

Element Type Description
counterAttributes man:counterAttributes Lists the unique attributes that specify how the counter data is displayed in a consumer application.

Attributes

Name Type Description
aggregate The aggregation function to apply if the instances attribute of counterSet is globalAggregate, multipleAggregate, or globalAggregateHistory. The following are the possible aggregation functions that you can apply:
max
The maximum counter value is returned.
min
The minimum counter value is returned.
avg
The average counter value is returned.
sum
The sum of the counter values is returned.
undefined
Do not aggregate this counter.
baseID man:UInt32Type The identifier of another counter within the same counter set, whose value is used to calculate this counter's value. The following counter types require a base counter:
PERF_AVERAGE_TIMER
Requires the PERF_AVERAGE_BASE base counter.
PERF_AVERAGE_BULK
Requires the PERF_AVERAGE_BASE base counter.
PERF_COUNTER_MULTI_TIMER_INV
Requires the PERF_COUNTER_MULTI_BASE base counter.
PERF_LARGE_RAW_FRACTION
Requires the PERF_LARGE_RAW_BASE base counter.
PERF_PRECISION_100NS_TIMER
Requires the PERF_LARGE_RAW_BASE base counter.
PERF_RAW_FRACTION
Requires the PERF_RAW_BASE base counter.
PERF_SAMPLE_FRACTION
Requires the PERF_SAMPLE_BASE base counter.
defaultScale The scale factor to apply to the counter value (factor * counter value). The default is zero if no scale is applied. Valid values range from 10 to 10 (0.0000000001 to 1000000000). If this value is zero, the scale value is 1; if this value is 1, the scale value is 10; if this value is 1, the scale value is .10; and so on.
description xs:string A short description of the counter. You do not have to specify this attribute if the counter includes the noDisplay attribute.
detailLevel Specifies the target audience for the counter details. The following are the possible values:
standard
Display details about the counter that a typical user would understand.
advanced
Display details about the counter that only an advanced user would understand.
field man:CSymbolType The name of a field within the struct that contains the counter value. This attribute is not allowed for user-mode providers.
id man:UInt32Type A unique number that identifies the counter within the counter set.
multiCounterID man:UInt32Type The identifier of another counter within the same counter set, whose multiplier value is used to calculate this counter's value. The following counter types require a multiplier value. The referenced counter must be of type PERF_COUNTER_RAWCOUNT.
  • PERF_COUNTER_MULTI_TIMER
  • PERF_COUNTER_MULTI_TIMER_INV
  • PERF_100NSEC_MULTI_TIMER
  • PERF_100NSEC_MULTI_TIMER_INV
name The name of the counter. The name must be unique and less than 1,024 characters. The name is case-sensitive. You do not have to specify this attribute if the counter includes the noDisplay attribute.
perfFreqID man:UInt32Type The identifier of another counter within the same counter set, whose frequency value is used to calculate this counter's value. The following counter types require a frequency. The PERF_COUNTER_LARGE_RAWCOUNT counter type contains the time stamp value.
  • PERF_COUNTER_OBJECT_TIME_QUEUELEN_TYPE
  • PERF_ELAPSED_TIME
  • PERF_OBJ_TIME_TIMER
  • PERF_PRECISION_OBJECT_TIMER
perfTimeID man:UInt32Type The identifier of another counter within the same counter set, whose time stamp value is used to calculate this counter's value. The following counter types require a time stamp. The PERF_COUNTER_LARGE_RAWCOUNT counter type contains the time stamp value.
  • PERF_COUNTER_OBJECT_TIME_QUEUELEN_TYPE
  • PERF_ELAPSED_TIME
  • PERF_OBJ_TIME_TIMER
  • PERF_PRECISION_OBJECT_TIMER
struct man:CSymbolType The name of a struct element that contains this counter value. This attribute is not allowed for user-mode providers.
symbol man:CSymbolType A symbolic name that identifies the counter. The CTRPP tool creates a constant that you can use when calling functions that require a counter identifier (for example, PerfIncrementULongCounterValue). The name of the constant is the symbolic name.
type The name of the counter type. For possible values, see the above syntax block. For details of each type, see Counter Types in the Windows 2003 Deployment Guide. The name is case-sensitive use lowercase.
uri xs:anyURI A unique uniform resource identifier that lets users retrieve counter values from any location.

Remarks

To provide backwards-compatibility, each counter in the counter set should specify the same perfFreqID and perfTimeID values.

Requirements

Requirement Value
Minimum supported client
Windows Vista [desktop apps only]
Minimum supported server
Windows Server 2008 [desktop apps only]