//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            namespace TraceReporting
            {
                typedef enum PlatformDiagnosticActionState PlatformDiagnosticActionState;

                typedef enum PlatformDiagnosticEscalationType PlatformDiagnosticEscalationType;

                typedef enum PlatformDiagnosticEventBufferLatencies PlatformDiagnosticEventBufferLatencies;

                typedef enum PlatformDiagnosticTracePriority PlatformDiagnosticTracePriority;

                typedef enum PlatformDiagnosticTraceSlotState PlatformDiagnosticTraceSlotState;

                typedef enum PlatformDiagnosticTraceSlotType PlatformDiagnosticTraceSlotType;

                interface IPlatformDiagnosticActionsStatics;

                interface IPlatformDiagnosticTraceInfo;

                interface IPlatformDiagnosticTraceRuntimeInfo;

                runtimeclass PlatformDiagnosticActions;

                runtimeclass PlatformDiagnosticTraceInfo;

                runtimeclass PlatformDiagnosticTraceRuntimeInfo;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            namespace TraceReporting
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceInfo*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceInfo*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceInfo*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            namespace TraceReporting
            {
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum PlatformDiagnosticActionState
                {
                    Success                 = 0,
                    FreeNetworkNotAvailable = 1,
                    ACPowerNotAvailable     = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum PlatformDiagnosticEscalationType
                {
                    OnCompletion = 0,
                    OnFailure    = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [flags]
                enum PlatformDiagnosticEventBufferLatencies
                {
                    Normal       = 0x1,
                    CostDeferred = 0x2,
                    Realtime     = 0x4
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum PlatformDiagnosticTracePriority
                {
                    Normal       = 0,
                    UserElevated = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum PlatformDiagnosticTraceSlotState
                {
                    NotRunning = 0,
                    Running    = 1,
                    Throttled  = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum PlatformDiagnosticTraceSlotType
                {
                    Alternative = 0,
                    AlwaysOn    = 1,
                    Mini        = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticActions)]
                [uuid(C1145CFA-9292-4267-890A-9EA3ED072312)]
                interface IPlatformDiagnosticActionsStatics : IInspectable
                {
                    HRESULT IsScenarioEnabled([in] GUID scenarioId, [out] [retval] boolean* isActive);
                    HRESULT TryEscalateScenario([in] GUID scenarioId, [in] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticEscalationType escalationType, [in] HSTRING outputDirectory, [in] boolean timestampOutputDirectory, [in] boolean forceEscalationUpload, [in] Windows.Foundation.Collections.IMapView<HSTRING, HSTRING>* triggers, [out] [retval] boolean* result);
                    HRESULT DownloadLatestSettingsForNamespace([in] HSTRING partner, [in] HSTRING feature, [in] boolean isScenarioNamespace, [in] boolean downloadOverCostedNetwork, [in] boolean downloadOverBattery, [out] [retval] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticActionState* result);
                    HRESULT GetActiveScenarioList([out] [retval] Windows.Foundation.Collections.IVectorView<GUID>** scenarioIds);
                    HRESULT ForceUpload([in] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticEventBufferLatencies latency, [in] boolean uploadOverCostedNetwork, [in] boolean uploadOverBattery, [out] [retval] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticActionState* result);
                    HRESULT IsTraceRunning([in] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceSlotType slotType, [in] GUID scenarioId, [in] UINT64 traceProfileHash, [out] [retval] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceSlotState* slotState);
                    HRESULT GetActiveTraceRuntime([in] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceSlotType slotType, [out] [retval] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceRuntimeInfo** traceRuntimeInfo);
                    HRESULT GetKnownTraceList([in] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceSlotType slotType, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceInfo*>** traceInfo);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceInfo)]
                [uuid(F870ED97-D597-4BF7-88DC-CF5C7DC2A1D2)]
                interface IPlatformDiagnosticTraceInfo : IInspectable
                {
                    [propget] HRESULT ScenarioId([out] [retval] GUID* value);
                    [propget] HRESULT ProfileHash([out] [retval] UINT64* value);
                    [propget] HRESULT IsExclusive([out] [retval] boolean* value);
                    [propget] HRESULT IsAutoLogger([out] [retval] boolean* value);
                    [propget] HRESULT MaxTraceDurationFileTime([out] [retval] INT64* value);
                    [propget] HRESULT Priority([out] [retval] Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTracePriority* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.System.Diagnostics.TraceReporting.PlatformDiagnosticTraceRuntimeInfo)]
                [uuid(3D4D5E2D-01D8-4768-8554-1EB1CA610986)]
                interface IPlatformDiagnosticTraceRuntimeInfo : IInspectable
                {
                    [propget] HRESULT RuntimeFileTime([out] [retval] INT64* value);
                    [propget] HRESULT EtwRuntimeFileTime([out] [retval] INT64* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [static(Windows.System.Diagnostics.TraceReporting.IPlatformDiagnosticActionsStatics, Windows.Foundation.UniversalApiContract, 4.0)]
                [threading(both)]
                runtimeclass PlatformDiagnosticActions
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PlatformDiagnosticTraceInfo
                {
                    [default] interface Windows.System.Diagnostics.TraceReporting.IPlatformDiagnosticTraceInfo;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PlatformDiagnosticTraceRuntimeInfo
                {
                    [default] interface Windows.System.Diagnostics.TraceReporting.IPlatformDiagnosticTraceRuntimeInfo;
                }
            }
        }
    }
}
