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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Storage.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(__windows2Estorage_h__)")
cpp_quote("#include <Windows.Storage.h>")
cpp_quote("#endif // !defined(__windows2Estorage_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFolder;

        runtimeclass StorageFile;
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Diagnostics
        {
            typedef enum CausalityTraceLevel CausalityTraceLevel;

            typedef enum CausalitySource CausalitySource;

            typedef enum CausalityRelation CausalityRelation;

            typedef enum CausalitySynchronousWork CausalitySynchronousWork;

            typedef enum ErrorOptions ErrorOptions;

            typedef enum LoggingLevel LoggingLevel;

            interface ITracingStatusChangedEventArgs;

            interface IAsyncCausalityTracerStatics;

            interface IErrorReportingSettings;

            interface ILoggingChannel;

            interface ILoggingChannelFactory;

            interface ILoggingActivity;

            interface ILoggingActivityFactory;

            interface ILoggingSession;

            interface ILoggingSessionFactory;

            interface ILogFileGeneratedEventArgs;

            interface IFileLoggingSession;

            interface IFileLoggingSessionFactory;

            runtimeclass TracingStatusChangedEventArgs;

            runtimeclass AsyncCausalityTracer;

            runtimeclass RuntimeBrokerErrorSettings;

            runtimeclass LoggingChannel;

            runtimeclass LoggingActivity;

            runtimeclass LoggingSession;

            runtimeclass LogFileGeneratedEventArgs;

            runtimeclass FileLoggingSession;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Foundation
    {
        namespace Diagnostics
        {
            declare
            {
                interface Windows.Foundation.EventHandler<Windows.Foundation.Diagnostics.TracingStatusChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Foundation.Diagnostics.IFileLoggingSession*, Windows.Foundation.Diagnostics.LogFileGeneratedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Foundation.Diagnostics.ILoggingChannel*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Foundation
    {
        namespace Diagnostics
        {
            [version(0x06030000)]
            enum CausalityTraceLevel
            {
                Required  = 0,
                Important = 1,
                Verbose   = 2
            };

            [version(0x06030000)]
            enum CausalitySource
            {
                Application = 0,
                Library     = 1,
                System      = 2
            };

            [version(0x06030000)]
            enum CausalityRelation
            {
                AssignDelegate = 0,
                Join           = 1,
                Choice         = 2,
                Cancel         = 3,
                Error          = 4
            };

            [version(0x06030000)]
            enum CausalitySynchronousWork
            {
                CompletionNotification = 0,
                ProgressNotification   = 1,
                Execution              = 2
            };

            [flags]
            [version(0x06020000)]
            enum ErrorOptions
            {
                None                 = 0x0,
                SuppressExceptions   = 0x1,
                ForceExceptions      = 0x2,
                UseSetErrorInfo      = 0x4,
                SuppressSetErrorInfo = 0x8
            };

            [version(0x06030000)]
            enum LoggingLevel
            {
                Verbose     = 0,
                Information = 1,
                Warning     = 2,
                Error       = 3,
                Critical    = 4
            };

            [exclusiveto(Windows.Foundation.Diagnostics.TracingStatusChangedEventArgs)]
            [uuid(410B7711-FF3B-477F-9C9A-D2EFDA302DC3)]
            [version(0x06030000)]
            interface ITracingStatusChangedEventArgs : IInspectable
            {
                [propget] HRESULT Enabled([out] [retval] boolean* enabled);
                [propget] HRESULT TraceLevel([out] [retval] Windows.Foundation.Diagnostics.CausalityTraceLevel* value);
            }

            [exclusiveto(Windows.Foundation.Diagnostics.AsyncCausalityTracer)]
            [uuid(50850B26-267E-451B-A890-AB6A370245EE)]
            [version(0x06030000)]
            interface IAsyncCausalityTracerStatics : IInspectable
            {
                HRESULT TraceOperationCreation([in] Windows.Foundation.Diagnostics.CausalityTraceLevel traceLevel, [in] Windows.Foundation.Diagnostics.CausalitySource source, [in] GUID platformId, [in] UINT64 operationId, [in] HSTRING operationName, [in] UINT64 relatedContext);
                HRESULT TraceOperationCompletion([in] Windows.Foundation.Diagnostics.CausalityTraceLevel traceLevel, [in] Windows.Foundation.Diagnostics.CausalitySource source, [in] GUID platformId, [in] UINT64 operationId, [in] AsyncStatus status);
                HRESULT TraceOperationRelation([in] Windows.Foundation.Diagnostics.CausalityTraceLevel traceLevel, [in] Windows.Foundation.Diagnostics.CausalitySource source, [in] GUID platformId, [in] UINT64 operationId, [in] Windows.Foundation.Diagnostics.CausalityRelation relation);
                HRESULT TraceSynchronousWorkStart([in] Windows.Foundation.Diagnostics.CausalityTraceLevel traceLevel, [in] Windows.Foundation.Diagnostics.CausalitySource source, [in] GUID platformId, [in] UINT64 operationId, [in] Windows.Foundation.Diagnostics.CausalitySynchronousWork work);
                HRESULT TraceSynchronousWorkCompletion([in] Windows.Foundation.Diagnostics.CausalityTraceLevel traceLevel, [in] Windows.Foundation.Diagnostics.CausalitySource source, [in] Windows.Foundation.Diagnostics.CausalitySynchronousWork work);
                [eventadd] HRESULT TracingStatusChanged([in] Windows.Foundation.EventHandler<Windows.Foundation.Diagnostics.TracingStatusChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT TracingStatusChanged([in] EventRegistrationToken cookie);
            }

            [uuid(16369792-B03E-4BA1-8BB8-D28F4AB4D2C0)]
            [version(0x06020000)]
            interface IErrorReportingSettings : IInspectable
            {
                HRESULT SetErrorOptions([in] Windows.Foundation.Diagnostics.ErrorOptions value);
                HRESULT GetErrorOptions([out] [retval] Windows.Foundation.Diagnostics.ErrorOptions* value);
            }

            [uuid(E9A50343-11D7-4F01-B5CA-CF495278C0A8)]
            [version(0x06030000)]
            interface ILoggingChannel : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT Enabled([out] [retval] boolean* value);
                [propget] HRESULT Level([out] [retval] Windows.Foundation.Diagnostics.LoggingLevel* value);
                [overload("LogMessage")] HRESULT LogMessage([in] HSTRING eventString);
                [overload("LogMessage")] HRESULT LogMessageWithLevel([in] HSTRING eventString, [in] Windows.Foundation.Diagnostics.LoggingLevel level);
                [overload("LogValuePair")] HRESULT LogValuePair([in] HSTRING value1, [in] INT32 value2);
                [overload("LogValuePair")] HRESULT LogValuePairWithLevel([in] HSTRING value1, [in] INT32 value2, [in] Windows.Foundation.Diagnostics.LoggingLevel level);
                [eventadd] HRESULT LoggingEnabled([in] Windows.Foundation.TypedEventHandler<Windows.Foundation.Diagnostics.ILoggingChannel*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT LoggingEnabled([in] EventRegistrationToken token);
            }

            [exclusiveto(Windows.Foundation.Diagnostics.LoggingChannel)]
            [uuid(4EDC5B9C-AF80-4A9B-B0DC-398F9AE5207B)]
            [version(0x06030000)]
            interface ILoggingChannelFactory : IInspectable
            {
                HRESULT Create([in] HSTRING name, [out] [retval] Windows.Foundation.Diagnostics.LoggingChannel** result);
            }

            [exclusiveto(Windows.Foundation.Diagnostics.LoggingActivity)]
            [uuid(BC032941-B766-4CB5-9848-97AC6BA6D60C)]
            [version(0x06030000)]
            interface ILoggingActivity : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT Id([out] [retval] GUID* value);
            }

            [exclusiveto(Windows.Foundation.Diagnostics.LoggingActivity)]
            [uuid(6B33B483-E10A-4C58-97D5-10FB451074FB)]
            [version(0x06030000)]
            interface ILoggingActivityFactory : IInspectable
            {
                HRESULT CreateLoggingActivity([in] HSTRING activityName, [in] Windows.Foundation.Diagnostics.ILoggingChannel* loggingChannel, [out] [retval] Windows.Foundation.Diagnostics.LoggingActivity** loggingActivity);
                HRESULT CreateLoggingActivityWithLevel([in] HSTRING activityName, [in] Windows.Foundation.Diagnostics.ILoggingChannel* loggingChannel, [in] Windows.Foundation.Diagnostics.LoggingLevel level, [out] [retval] Windows.Foundation.Diagnostics.LoggingActivity** loggingActivity);
            }

            [uuid(6221F306-9380-4AD7-BAF5-41EA9310D768)]
            [version(0x06030000)]
            interface ILoggingSession : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                HRESULT SaveToFileAsync([in] Windows.Storage.IStorageFolder* folder, [in] HSTRING fileName, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile*>** operation);
                [overload("AddLoggingChannel")] HRESULT AddLoggingChannel([in] Windows.Foundation.Diagnostics.ILoggingChannel* loggingChannel);
                [overload("AddLoggingChannel")] HRESULT AddLoggingChannelWithLevel([in] Windows.Foundation.Diagnostics.ILoggingChannel* loggingChannel, [in] Windows.Foundation.Diagnostics.LoggingLevel maxLevel);
                HRESULT RemoveLoggingChannel([in] Windows.Foundation.Diagnostics.ILoggingChannel* loggingChannel);
            }

            [exclusiveto(Windows.Foundation.Diagnostics.LoggingSession)]
            [uuid(4E937EE5-58FD-45E0-8C2F-A132EFF95C1E)]
            [version(0x06030000)]
            interface ILoggingSessionFactory : IInspectable
            {
                HRESULT Create([in] HSTRING name, [out] [retval] Windows.Foundation.Diagnostics.LoggingSession** result);
            }

            [exclusiveto(Windows.Foundation.Diagnostics.LogFileGeneratedEventArgs)]
            [uuid(269E976F-0D38-4C1A-B53F-B395D881DF84)]
            [version(0x06030000)]
            interface ILogFileGeneratedEventArgs : IInspectable
            {
                [propget] HRESULT File([out] [retval] Windows.Storage.StorageFile** value);
            }

            [uuid(24C74216-FED2-404C-895F-1F9699CB02F7)]
            [version(0x06030000)]
            interface IFileLoggingSession : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [overload("AddLoggingChannel")] HRESULT AddLoggingChannel([in] Windows.Foundation.Diagnostics.ILoggingChannel* loggingChannel);
                [overload("AddLoggingChannel")] HRESULT AddLoggingChannelWithLevel([in] Windows.Foundation.Diagnostics.ILoggingChannel* loggingChannel, [in] Windows.Foundation.Diagnostics.LoggingLevel maxLevel);
                HRESULT RemoveLoggingChannel([in] Windows.Foundation.Diagnostics.ILoggingChannel* loggingChannel);
                HRESULT CloseAndSaveToFileAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile*>** operation);
                [eventadd] HRESULT LogFileGenerated([in] Windows.Foundation.TypedEventHandler<Windows.Foundation.Diagnostics.IFileLoggingSession*, Windows.Foundation.Diagnostics.LogFileGeneratedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT LogFileGenerated([in] EventRegistrationToken token);
            }

            [exclusiveto(Windows.Foundation.Diagnostics.FileLoggingSession)]
            [uuid(EEA08DCE-8447-4DAA-9133-12EB46F697D4)]
            [version(0x06030000)]
            interface IFileLoggingSessionFactory : IInspectable
            {
                HRESULT Create([in] HSTRING name, [out] [retval] Windows.Foundation.Diagnostics.FileLoggingSession** result);
            }

            [marshaling_behavior(agile)]
            [version(0x06030000)]
            runtimeclass TracingStatusChangedEventArgs
            {
                [default] interface Windows.Foundation.Diagnostics.ITracingStatusChangedEventArgs;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Foundation.Diagnostics.IAsyncCausalityTracerStatics, 0x06030000)]
            [version(0x06030000)]
            runtimeclass AsyncCausalityTracer
            {
            }

            [activatable(0x06020000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass RuntimeBrokerErrorSettings
            {
                [default] interface Windows.Foundation.Diagnostics.IErrorReportingSettings;
            }

            [activatable(Windows.Foundation.Diagnostics.ILoggingChannelFactory, 0x06030000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass LoggingChannel
            {
                [default] interface Windows.Foundation.Diagnostics.ILoggingChannel;
                interface Windows.Foundation.IClosable;
            }

            [activatable(Windows.Foundation.Diagnostics.ILoggingActivityFactory, 0x06030000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass LoggingActivity
            {
                [default] interface Windows.Foundation.Diagnostics.ILoggingActivity;
                interface Windows.Foundation.IClosable;
            }

            [activatable(Windows.Foundation.Diagnostics.ILoggingSessionFactory, 0x06030000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass LoggingSession
            {
                [default] interface Windows.Foundation.Diagnostics.ILoggingSession;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass LogFileGeneratedEventArgs
            {
                [default] interface Windows.Foundation.Diagnostics.ILogFileGeneratedEventArgs;
            }

            [activatable(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory, 0x06030000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass FileLoggingSession
            {
                [default] interface Windows.Foundation.Diagnostics.IFileLoggingSession;
                interface Windows.Foundation.IClosable;
            }
        }
    }
}
