provider Complex Type

Defines a provider and the counters that it provides.

<xs:complexType name="provider">
    <xs:choice
        minOccurs="0"
        maxOccurs="unbounded"
    >
        <xs:element name="counterSet"
            type="man:counterSet"
        >
            <xs:key name="uniqueCounterID">
                <xs:selector
                    xpath="./man:counter"
                 />
                <xs:field
                    xpath="@id"
                 />
            </xs:key>
            <xs:unique name="uniqueCounterName">
                <xs:selector
                    xpath="./man:counter"
                 />
                <xs:field
                    xpath="@name"
                 />
            </xs:unique>
            <xs:keyref name="existBaseID">
                <xs:selector
                    xpath="./man:counter"
                 />
                <xs:field
                    xpath="@baseID"
                 />
            </xs:keyref>
            <xs:keyref name="existPerfTimeID">
                <xs:selector
                    xpath="./man:counter"
                 />
                <xs:field
                    xpath="@perfTimeID"
                 />
            </xs:keyref>
            <xs:keyref name="existPerfFreqID">
                <xs:selector
                    xpath="./man:counter"
                 />
                <xs:field
                    xpath="@perfFreqID"
                 />
            </xs:keyref>
            <xs:keyref name="existMultiCounterID">
                <xs:selector
                    xpath="./man:counter"
                 />
                <xs:field
                    xpath="@multiCounterID"
                 />
            </xs:keyref>
            <xs:key name="uniqueStructNames">
                <xs:selector
                    xpath="./man:structs/man:struct"
                 />
                <xs:field
                    xpath="@name"
                 />
            </xs:key>
            <xs:keyref name="existCounterName">
                <xs:selector
                    xpath="./man:counter"
                 />
                <xs:field
                    xpath="@struct"
                 />
            </xs:keyref>
        </xs:element>
    </xs:choice>
    <xs:attribute name="symbol"
        type="man:CSymbolType"
        use="optional"
     />
    <xs:attribute name="callback"
        use="optional"
        default="default"
    >
        <xs:simpleType>
            <xs:restriction
                base="xs:string"
            >
                <xs:enumeration
                    value="custom"
                 />
                <xs:enumeration
                    value="default"
                 />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="providerGuid"
        type="man:GUIDType"
        use="required"
     />
    <xs:attribute name="applicationIdentity"
        type="xs:string"
        use="required"
     />
    <xs:attribute name="providerType"
        use="optional"
        default="userMode"
    >
        <xs:simpleType>
            <xs:restriction
                base="xs:string"
            >
                <xs:enumeration
                    value="userMode"
                 />
                <xs:enumeration
                    value="kernelMode"
                 />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="providerName"
        type="xs:string"
        use="optional"
        default="Counters"
     />
    <xs:attribute name="resourceBase"
        type="man:UInt32Type"
        use="optional"
     />
</xs:complexType>

Child elements

Element Type Description
counterSet man:counterSet Identifies the counter set that contains one or more logically related counters.

Attributes

Name Type Description
applicationIdentity xs:string The name of the binary file that contains the localized resource strings, either an .exe or .dll file (do not include the path to the binary).
The Lodctr.exe utility uses the path from the optional [path] parameter to search for the binary file. For example, lodctr [/m:manifest [path]]. If you do not include the [path] parameter, Lodctr.exe searches the folder that contains the manifest.
callback This attribute indicates that you want to receive notification when a consumer performs certain actions.
If you include this attribute, the CTRPP tool uses the alternate CounterInitialize function signature, which you use to pass in the name of your function that implements the ControlCallback callback function.
As an alternative to specifying this attribute, you can use the -NotificationCallbackCTRPP argument.
Windows Vista: The only valid value for this attribute is "custom". The CTRPP utility generates the template for a ControlCallback callback function. The template is included in the .c file that CTRPP generated.

providerGuid man:GUIDType String GUID that uniquely identifies the provider in the manifest. The GUID must be unique within the manifest.
You need to provide a new GUID only when the version of the application changes (if you support side-by-side installations).
providerName xs:string The name that is used to create the WMI Win32_PerfRawData class name. If you do not specify a name, "Counters" is used as the name of the class.
providerType Identifies whether the provider is a user-mode provider, kernel-mode provider, or driver provider. Possible values are as follows.
Term Description
userMode
Specify this mode for a user-mode component such as an application, a DLL, or a user-mode driver. The typical extensions for user-mode components are .exe or .dll. This is the default.
kernel
Specify this mode for a kernel-mode component such as a WDM or WDF driver. The typical extension for kernel-mode components is .sys.
Windows Vista and Windows Server 2008: This value is not supported until Windows 7 and Windows Server 2008 R2.

resourceBase man:UInt32Type

Defines the starting resource index value that CTRPP uses to generate the resource identifiers.

symbol man:CSymbolType

A symbolic name that identifies the provider. The CTRPP tool creates a HANDLE variable that you can use when calling functions that require a handle to the provider (for example, PerfSetULongCounterValue). The symbolic name is the name of the variable.

If you include the -prefix argument when calling CTRPP, the prefix string is added to the beginning of the symbolic name.

Requirements

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