//
// File generated by WinMDIDL version 8.00.0014
//

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

// Forward Declare
namespace Windows
{
    namespace System
    {
        typedef enum ShutdownKind ShutdownKind;

        interface IProcessLauncherOptions;

        interface IProcessLauncherStatics;

        interface IProcessLauncherResult;

        interface IShutdownManagerStatics;

        interface ITimeZoneSettingsStatics;

        runtimeclass ProcessLauncherOptions;

        runtimeclass ProcessLauncherResult;

        runtimeclass ProcessLauncher;

        runtimeclass ShutdownManager;

        runtimeclass TimeZoneSettings;
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace System
    {
        [version(0x0A000000)]
        enum ShutdownKind
        {
            Shutdown = 0,
            Restart  = 1
        };

        [exclusiveto(Windows.System.ProcessLauncherOptions)]
        [uuid(3080B9CF-F444-4A83-BEAF-A549A0F3229C)]
        [version(0x0A000000)]
        interface IProcessLauncherOptions : IInspectable
        {
            [propget] HRESULT StandardInput([out] [retval] Windows.Storage.Streams.IInputStream** value);
            [propput] HRESULT StandardInput([in] Windows.Storage.Streams.IInputStream* value);
            [propget] HRESULT StandardOutput([out] [retval] Windows.Storage.Streams.IOutputStream** value);
            [propput] HRESULT StandardOutput([in] Windows.Storage.Streams.IOutputStream* value);
            [propget] HRESULT StandardError([out] [retval] Windows.Storage.Streams.IOutputStream** value);
            [propput] HRESULT StandardError([in] Windows.Storage.Streams.IOutputStream* value);
            [propget] HRESULT WorkingDirectory([out] [retval] HSTRING* value);
            [propput] HRESULT WorkingDirectory([in] HSTRING value);
        }

        [exclusiveto(Windows.System.ProcessLauncher)]
        [uuid(33AB66E7-2D0E-448B-A6A0-C13C3836D09C)]
        [version(0x0A000000)]
        interface IProcessLauncherStatics : IInspectable
        {
            [overload("RunToCompletionAsync")] HRESULT RunToCompletionAsync([in] HSTRING fileName, [in] HSTRING args, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.System.ProcessLauncherResult*>** asyncOperationResult);
            [overload("RunToCompletionAsync")] HRESULT RunToCompletionAsyncWithOptions([in] HSTRING fileName, [in] HSTRING args, [in] Windows.System.ProcessLauncherOptions* options, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.System.ProcessLauncherResult*>** asyncOperationResult);
        }

        [exclusiveto(Windows.System.ProcessLauncherResult)]
        [uuid(544C8934-86D8-4991-8E75-ECE8A43B6B6D)]
        [version(0x0A000000)]
        interface IProcessLauncherResult : IInspectable
        {
            [propget] HRESULT ExitCode([out] [retval] UINT32* value);
        }

        [exclusiveto(Windows.System.ShutdownManager)]
        [uuid(72E247ED-DD5B-4D6C-B1D0-C57A7BBB5F94)]
        [version(0x0A000000)]
        interface IShutdownManagerStatics : IInspectable
        {
            HRESULT BeginShutdown([in] Windows.System.ShutdownKind shutdownKind, [in] Windows.Foundation.TimeSpan timeout);
            HRESULT CancelShutdown();
        }

        [exclusiveto(Windows.System.TimeZoneSettings)]
        [uuid(9B3B2BEA-A101-41AE-9FBD-028728BAB73D)]
        [version(0x0A000000)]
        interface ITimeZoneSettingsStatics : IInspectable
        {
            [propget] HRESULT CurrentTimeZoneDisplayName([out] [retval] HSTRING* value);
            [propget] HRESULT SupportedTimeZoneDisplayNames([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
            [propget] HRESULT CanChangeTimeZone([out] [retval] boolean* value);
            HRESULT ChangeTimeZoneByDisplayName([in] HSTRING timeZoneDisplayName);
        }

        [activatable(0x0A000000)]
        [marshaling_behavior(agile)]
        [threading(both)]
        [version(0x0A000000)]
        runtimeclass ProcessLauncherOptions
        {
            [default] interface Windows.System.IProcessLauncherOptions;
        }

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

        [static(Windows.System.IProcessLauncherStatics, 0x0A000000)]
        [threading(both)]
        [version(0x0A000000)]
        runtimeclass ProcessLauncher
        {
        }

        [static(Windows.System.IShutdownManagerStatics, 0x0A000000)]
        [threading(both)]
        [version(0x0A000000)]
        runtimeclass ShutdownManager
        {
        }

        [static(Windows.System.ITimeZoneSettingsStatics, 0x0A000000)]
        [threading(both)]
        [version(0x0A000000)]
        runtimeclass TimeZoneSettings
        {
        }
    }
}
