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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.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;
    }
}
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            interface IProcessCpuUsage;

            interface IProcessCpuUsageReport;

            interface IProcessDiagnosticInfo;

            interface IProcessDiagnosticInfoStatics;

            interface IProcessDiskUsage;

            interface IProcessDiskUsageReport;

            interface IProcessMemoryUsage;

            interface IProcessMemoryUsageReport;

            runtimeclass ProcessCpuUsage;

            runtimeclass ProcessCpuUsageReport;

            runtimeclass ProcessDiagnosticInfo;

            runtimeclass ProcessDiskUsage;

            runtimeclass ProcessDiskUsageReport;

            runtimeclass ProcessMemoryUsage;

            runtimeclass ProcessMemoryUsageReport;
        }
    }
}

// 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
        {
            [exclusiveto(Windows.System.Diagnostics.ProcessCpuUsage)]
            [uuid(0BBB2472-C8BF-423A-A810-B559AE4354E2)]
            [version(0x0A000000)]
            interface IProcessCpuUsage : IInspectable
            {
                HRESULT GetReport([out] [retval] Windows.System.Diagnostics.ProcessCpuUsageReport** value);
            }

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

            [exclusiveto(Windows.System.Diagnostics.ProcessDiagnosticInfo)]
            [uuid(E830B04B-300E-4EE6-A0AB-5B5F5231B434)]
            [version(0x0A000000)]
            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);
            }

            [exclusiveto(Windows.System.Diagnostics.ProcessDiagnosticInfo)]
            [uuid(2F41B260-B49F-428C-AA0E-84744F49CA95)]
            [version(0x0A000000)]
            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);
            }

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

            [exclusiveto(Windows.System.Diagnostics.ProcessDiskUsageReport)]
            [uuid(401627FD-535D-4C1F-81B8-DA54E1BE635E)]
            [version(0x0A000000)]
            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);
            }

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

            [exclusiveto(Windows.System.Diagnostics.ProcessMemoryUsageReport)]
            [uuid(C2C77CBA-1951-4685-8532-7E749ECF8EEB)]
            [version(0x0A000000)]
            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);
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ProcessCpuUsage
            {
                [default] interface Windows.System.Diagnostics.IProcessCpuUsage;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ProcessCpuUsageReport
            {
                [default] interface Windows.System.Diagnostics.IProcessCpuUsageReport;
            }

            [marshaling_behavior(agile)]
            [static(Windows.System.Diagnostics.IProcessDiagnosticInfoStatics, 0x0A000000)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ProcessDiagnosticInfo
            {
                [default] interface Windows.System.Diagnostics.IProcessDiagnosticInfo;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ProcessDiskUsage
            {
                [default] interface Windows.System.Diagnostics.IProcessDiskUsage;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ProcessDiskUsageReport
            {
                [default] interface Windows.System.Diagnostics.IProcessDiskUsageReport;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ProcessMemoryUsage
            {
                [default] interface Windows.System.Diagnostics.IProcessMemoryUsage;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ProcessMemoryUsageReport
            {
                [default] interface Windows.System.Diagnostics.IProcessMemoryUsageReport;
            }
        }
    }
}
