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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            interface IProcessCpuUsage;

            interface IProcessCpuUsageReport;

            interface IProcessDiagnosticInfo;

            interface IProcessDiagnosticInfoStatics;

            interface IProcessDiskUsage;

            interface IProcessDiskUsageReport;

            interface IProcessMemoryUsage;

            interface IProcessMemoryUsageReport;

            interface ISystemCpuUsage;

            interface ISystemCpuUsageReport;

            interface ISystemDiagnosticInfo;

            interface ISystemDiagnosticInfoStatics;

            interface ISystemMemoryUsage;

            interface ISystemMemoryUsageReport;

            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*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            [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, 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, 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, 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, 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)]
            [threading(both)]
            runtimeclass ProcessDiagnosticInfo
            {
                [default] interface Windows.System.Diagnostics.IProcessDiagnosticInfo;
            }

            [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)]
            [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;
            }
        }
    }
}
