#pragma namespace("\\\\.\\root\\wmi")

// {09D2CF12-29BB-4fb2-B35B-AD99C670CE9A}
// static const GUID cdp_EventTraceProvider_GUID =
// { 0x9d2cf12, 0x29bb, 0x4fb2, { 0xb3, 0x5b, 0xad, 0x99, 0xc6, 0x70, 0xce, 0x9a } };

[
    dynamic: ToInstance,
    Description( "CDP trace event provider." ),
    Guid( "{09D2CF12-29BB-4fb2-B35B-AD99C670CE9A}" )
]
class cdp_EventTraceProvider : EventTrace
{
};

// {47E915BD-50E0-4dd9-ABDE-E6F98E9F015A}
// static const GUID cdp_EventClass_GUID =
// { 0x47e915bd, 0x50e0, 0x4dd9, { 0xab, 0xde, 0xe6, 0xf9, 0x8e, 0x9f, 0x1, 0x5a } };
[
    dynamic: ToInstance,
    Description( "CDP trace event class." ): Amended,
    Guid("{47E915BD-50E0-4dd9-ABDE-E6F98E9F015A}")
]
class cdp_EventClass : cdp_EventTraceProvider
{
};

[
    dynamic: ToInstance,
    Description("CDP library trace event type class."): Amended,
    EventType( 1 )
]
class cdp_LibraryEventTypeClass : cdp_EventClass
{
    [
        WmiDataId( 1 ),
        Description( "CDP library code." ): Amended, read
    ]
    uint32 Code;

    [
        WmiDataId( 2 ),
        Description( "HRESULT value." ): Amended, read
    ]
    sint32 Result;
};

[
    dynamic: ToInstance,
    Description("CDP library string trace event type class."): Amended,
    EventType( 2 )
]
class cdp_LibraryStringEventTypeClass : cdp_EventClass
{
    [
        WmiDataId( 1 ),
        Description( "Trace String." ): Amended, read, StringTermination("NullTerminated"), Format("w")
    ]
    string StringData;
};


[
    dynamic: ToInstance,
    Description("CDP library perf stage event type class."): Amended,
    EventType( 3 )
]
class cdp_LibraryPerfStateEventTypeClass : cdp_EventClass
{
    [
        WmiDataId( 1 ),
        Description( "CDP library code." ): Amended, read
    ]
    uint32 Stage;

    [
        WmiDataId( 2 ),
        Description( "CDP library code." ): Amended, read
    ]
    uint32 Phase;
};