//
// 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";
import "Windows.Data.Json.idl";
import "Windows.System.idl";

// Forward Declare
namespace Windows
{
    namespace Data
    {
        namespace Json
        {
            runtimeclass JsonObject;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            runtimeclass ValueSet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace System
    {
        runtimeclass AppDiagnosticInfo;

        typedef enum ProcessorArchitecture ProcessorArchitecture;

        runtimeclass User;
    }
}
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            typedef enum DiagnosticActionState DiagnosticActionState;

            interface IDiagnosticActionResult;

            interface IDiagnosticInvoker;

            interface IDiagnosticInvoker2;

            interface IDiagnosticInvokerStatics;

            interface IProcessCpuUsage;

            interface IProcessCpuUsageReport;

            interface IProcessDiagnosticInfo;

            interface IProcessDiagnosticInfo2;

            interface IProcessDiagnosticInfoStatics;

            interface IProcessDiagnosticInfoStatics2;

            interface IProcessDiskUsage;

            interface IProcessDiskUsageReport;

            interface IProcessMemoryUsage;

            interface IProcessMemoryUsageReport;

            interface ISystemCpuUsage;

            interface ISystemCpuUsageReport;

            interface ISystemDiagnosticInfo;

            interface ISystemDiagnosticInfoStatics;

            interface ISystemDiagnosticInfoStatics2;

            interface ISystemMemoryUsage;

            interface ISystemMemoryUsageReport;

            runtimeclass DiagnosticActionResult;

            runtimeclass DiagnosticInvoker;

            runtimeclass ProcessCpuUsage;

            runtimeclass ProcessCpuUsageReport;

            runtimeclass ProcessDiagnosticInfo;

            runtimeclass ProcessDiskUsage;

            runtimeclass ProcessDiskUsageReport;

            runtimeclass ProcessMemoryUsage;

            runtimeclass ProcessMemoryUsageReport;

            runtimeclass SystemCpuUsage;

            runtimeclass SystemCpuUsageReport;

            runtimeclass SystemDiagnosticInfo;

            runtimeclass SystemMemoryUsage;

            runtimeclass SystemMemoryUsageReport;
        }
    }
}

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

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

                interface Windows.Foundation.Collections.IVectorView<Windows.System.Diagnostics.ProcessDiagnosticInfo*>;

                interface Windows.Foundation.Collections.IVector<Windows.System.Diagnostics.ProcessDiagnosticInfo*>;

                interface Windows.Foundation.IAsyncOperationWithProgress<Windows.System.Diagnostics.DiagnosticActionResult*, Windows.System.Diagnostics.DiagnosticActionState>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            enum DiagnosticActionState
            {
                Initializing        = 0,
                Downloading         = 1,
                VerifyingTrust      = 2,
                Detecting           = 3,
                Resolving           = 4,
                VerifyingResolution = 5,
                [contract(Windows.Foundation.UniversalApiContract, 11.0)]
                Executing           = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.System.Diagnostics.DiagnosticActionResult)]
            [uuid(C265A296-E73B-4097-B28F-3442F03DD831)]
            interface IDiagnosticActionResult : IInspectable
            {
                [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
                [propget] HRESULT Results([out] [retval] Windows.Foundation.Collections.ValueSet** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.System.Diagnostics.DiagnosticInvoker)]
            [uuid(187B270A-02E3-4F86-84FC-FDD892B5940F)]
            interface IDiagnosticInvoker : IInspectable
            {
                HRESULT RunDiagnosticActionAsync([in] Windows.Data.Json.JsonObject* context, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.System.Diagnostics.DiagnosticActionResult*, Windows.System.Diagnostics.DiagnosticActionState>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.System.Diagnostics.DiagnosticInvoker)]
            [uuid(E3BF945C-155A-4B52-A8EC-070C44F95000)]
            interface IDiagnosticInvoker2 : IInspectable
            {
                HRESULT RunDiagnosticActionFromStringAsync([in] HSTRING context, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.System.Diagnostics.DiagnosticActionResult*, Windows.System.Diagnostics.DiagnosticActionState>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.System.Diagnostics.DiagnosticInvoker)]
            [uuid(5CFAD8DE-F15C-4554-A813-C113C3881B09)]
            interface IDiagnosticInvokerStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.System.Diagnostics.DiagnosticInvoker** result);
                HRESULT GetForUser([in] Windows.System.User* user, [out] [retval] Windows.System.Diagnostics.DiagnosticInvoker** result);
                [propget] HRESULT IsSupported([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessCpuUsage)]
            [uuid(0BBB2472-C8BF-423A-A810-B559AE4354E2)]
            interface IProcessCpuUsage : IInspectable
            {
                HRESULT GetReport([out] [retval] Windows.System.Diagnostics.ProcessCpuUsageReport** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessCpuUsageReport)]
            [uuid(8A6D9CAC-3987-4E2F-A119-6B5FA214F1B4)]
            interface IProcessCpuUsageReport : IInspectable
            {
                [propget] HRESULT KernelTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT UserTime([out] [retval] Windows.Foundation.TimeSpan* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessDiagnosticInfo)]
            [uuid(E830B04B-300E-4EE6-A0AB-5B5F5231B434)]
            interface IProcessDiagnosticInfo : IInspectable
            {
                [propget] HRESULT ProcessId([out] [retval] UINT32* value);
                [propget] HRESULT ExecutableFileName([out] [retval] HSTRING* value);
                [propget] HRESULT Parent([out] [retval] Windows.System.Diagnostics.ProcessDiagnosticInfo** value);
                [propget] HRESULT ProcessStartTime([out] [retval] Windows.Foundation.DateTime* value);
                [propget] HRESULT DiskUsage([out] [retval] Windows.System.Diagnostics.ProcessDiskUsage** value);
                [propget] HRESULT MemoryUsage([out] [retval] Windows.System.Diagnostics.ProcessMemoryUsage** value);
                [propget] HRESULT CpuUsage([out] [retval] Windows.System.Diagnostics.ProcessCpuUsage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessDiagnosticInfo)]
            [uuid(9558CB1A-3D0B-49EC-AB70-4F7A112805DE)]
            interface IProcessDiagnosticInfo2 : IInspectable
            {
                HRESULT GetAppDiagnosticInfos([out] [retval] Windows.Foundation.Collections.IVector<Windows.System.AppDiagnosticInfo*>** result);
                [propget] HRESULT IsPackaged([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessDiagnosticInfo)]
            [uuid(2F41B260-B49F-428C-AA0E-84744F49CA95)]
            interface IProcessDiagnosticInfoStatics : IInspectable
            {
                HRESULT GetForProcesses([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.System.Diagnostics.ProcessDiagnosticInfo*>** processes);
                HRESULT GetForCurrentProcess([out] [retval] Windows.System.Diagnostics.ProcessDiagnosticInfo** processes);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessDiagnosticInfo)]
            [uuid(4A869897-9899-4A44-A29B-091663BE09B6)]
            interface IProcessDiagnosticInfoStatics2 : IInspectable
            {
                HRESULT TryGetForProcessId([in] UINT32 processId, [out] [retval] Windows.System.Diagnostics.ProcessDiagnosticInfo** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessDiskUsage)]
            [uuid(5AD78BFD-7E51-4E53-BFAA-5A6EE1AABBF8)]
            interface IProcessDiskUsage : IInspectable
            {
                HRESULT GetReport([out] [retval] Windows.System.Diagnostics.ProcessDiskUsageReport** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessDiskUsageReport)]
            [uuid(401627FD-535D-4C1F-81B8-DA54E1BE635E)]
            interface IProcessDiskUsageReport : IInspectable
            {
                [propget] HRESULT ReadOperationCount([out] [retval] INT64* value);
                [propget] HRESULT WriteOperationCount([out] [retval] INT64* value);
                [propget] HRESULT OtherOperationCount([out] [retval] INT64* value);
                [propget] HRESULT BytesReadCount([out] [retval] INT64* value);
                [propget] HRESULT BytesWrittenCount([out] [retval] INT64* value);
                [propget] HRESULT OtherBytesCount([out] [retval] INT64* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessMemoryUsage)]
            [uuid(F50B229B-827C-42B7-B07C-0E32627E6B3E)]
            interface IProcessMemoryUsage : IInspectable
            {
                HRESULT GetReport([out] [retval] Windows.System.Diagnostics.ProcessMemoryUsageReport** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.System.Diagnostics.ProcessMemoryUsageReport)]
            [uuid(C2C77CBA-1951-4685-8532-7E749ECF8EEB)]
            interface IProcessMemoryUsageReport : IInspectable
            {
                [propget] HRESULT NonPagedPoolSizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT PageFaultCount([out] [retval] UINT32* value);
                [propget] HRESULT PageFileSizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT PagedPoolSizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT PeakNonPagedPoolSizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT PeakPageFileSizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT PeakPagedPoolSizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT PeakVirtualMemorySizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT PeakWorkingSetSizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT PrivatePageCount([out] [retval] UINT64* value);
                [propget] HRESULT VirtualMemorySizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT WorkingSetSizeInBytes([out] [retval] UINT64* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.System.Diagnostics.SystemCpuUsage)]
            [uuid(6037B3AC-02D6-4234-8362-7FE3ADC81F5F)]
            interface ISystemCpuUsage : IInspectable
            {
                HRESULT GetReport([out] [retval] Windows.System.Diagnostics.SystemCpuUsageReport** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.System.Diagnostics.SystemCpuUsageReport)]
            [uuid(2C26D0B2-9483-4F62-AB57-82B29D9719B8)]
            interface ISystemCpuUsageReport : IInspectable
            {
                [propget] HRESULT KernelTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT UserTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT IdleTime([out] [retval] Windows.Foundation.TimeSpan* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.System.Diagnostics.SystemDiagnosticInfo)]
            [uuid(A290FE05-DFF3-407F-9A1B-0B2B317CA800)]
            interface ISystemDiagnosticInfo : IInspectable
            {
                [propget] HRESULT MemoryUsage([out] [retval] Windows.System.Diagnostics.SystemMemoryUsage** value);
                [propget] HRESULT CpuUsage([out] [retval] Windows.System.Diagnostics.SystemCpuUsage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.System.Diagnostics.SystemDiagnosticInfo)]
            [uuid(D404AC21-FC7D-45F0-9A3F-39203AED9F7E)]
            interface ISystemDiagnosticInfoStatics : IInspectable
            {
                HRESULT GetForCurrentSystem([out] [retval] Windows.System.Diagnostics.SystemDiagnosticInfo** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 11.0)]
            [exclusiveto(Windows.System.Diagnostics.SystemDiagnosticInfo)]
            [uuid(79DED189-6AF9-4DA9-A422-15F73255B3EB)]
            interface ISystemDiagnosticInfoStatics2 : IInspectable
            {
                HRESULT IsArchitectureSupported([in] Windows.System.ProcessorArchitecture type, [out] [retval] boolean* result);
                [propget] HRESULT PreferredArchitecture([out] [retval] Windows.System.ProcessorArchitecture* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.System.Diagnostics.SystemMemoryUsage)]
            [uuid(17FFC595-1702-49CF-AA27-2F0A32591404)]
            interface ISystemMemoryUsage : IInspectable
            {
                HRESULT GetReport([out] [retval] Windows.System.Diagnostics.SystemMemoryUsageReport** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.System.Diagnostics.SystemMemoryUsageReport)]
            [uuid(38663C87-2A9F-403A-BD19-2CF3E8169500)]
            interface ISystemMemoryUsageReport : IInspectable
            {
                [propget] HRESULT TotalPhysicalSizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT AvailableSizeInBytes([out] [retval] UINT64* value);
                [propget] HRESULT CommittedSizeInBytes([out] [retval] UINT64* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DiagnosticActionResult
            {
                [default] interface Windows.System.Diagnostics.IDiagnosticActionResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            [static(Windows.System.Diagnostics.IDiagnosticInvokerStatics, Windows.Foundation.UniversalApiContract, 5.0)]
            [threading(both)]
            runtimeclass DiagnosticInvoker
            {
                [default] interface Windows.System.Diagnostics.IDiagnosticInvoker;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.System.Diagnostics.IDiagnosticInvoker2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProcessCpuUsage
            {
                [default] interface Windows.System.Diagnostics.IProcessCpuUsage;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProcessCpuUsageReport
            {
                [default] interface Windows.System.Diagnostics.IProcessCpuUsageReport;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.System.Diagnostics.IProcessDiagnosticInfoStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.System.Diagnostics.IProcessDiagnosticInfoStatics2, Windows.Foundation.UniversalApiContract, 5.0)]
            [threading(both)]
            runtimeclass ProcessDiagnosticInfo
            {
                [default] interface Windows.System.Diagnostics.IProcessDiagnosticInfo;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.System.Diagnostics.IProcessDiagnosticInfo2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProcessDiskUsage
            {
                [default] interface Windows.System.Diagnostics.IProcessDiskUsage;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProcessDiskUsageReport
            {
                [default] interface Windows.System.Diagnostics.IProcessDiskUsageReport;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProcessMemoryUsage
            {
                [default] interface Windows.System.Diagnostics.IProcessMemoryUsage;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProcessMemoryUsageReport
            {
                [default] interface Windows.System.Diagnostics.IProcessMemoryUsageReport;
            }

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

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

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [static(Windows.System.Diagnostics.ISystemDiagnosticInfoStatics, Windows.Foundation.UniversalApiContract, 4.0)]
            [static(Windows.System.Diagnostics.ISystemDiagnosticInfoStatics2, Windows.Foundation.UniversalApiContract, 11.0)]
            [threading(both)]
            runtimeclass SystemDiagnosticInfo
            {
                [default] interface Windows.System.Diagnostics.ISystemDiagnosticInfo;
            }

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

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