//
// 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.UI.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct WindowId WindowId;
    }
}
namespace Windows
{
    namespace System
    {
        namespace RemoteDesktop
        {
            namespace Provider
            {
                typedef enum RemoteDesktopConnectionStatus RemoteDesktopConnectionStatus;

                typedef enum RemoteDesktopLocalAction RemoteDesktopLocalAction;

                interface IPerformLocalActionRequestedEventArgs;

                interface IRemoteDesktopConnectionInfo;

                interface IRemoteDesktopConnectionInfo2;

                interface IRemoteDesktopConnectionInfoStatics;

                interface IRemoteDesktopConnectionRemoteInfo;

                interface IRemoteDesktopConnectionRemoteInfoStatics;

                interface IRemoteDesktopInfo;

                interface IRemoteDesktopInfoFactory;

                interface IRemoteDesktopRegistrarStatics;

                runtimeclass PerformLocalActionRequestedEventArgs;

                runtimeclass RemoteDesktopConnectionInfo;

                runtimeclass RemoteDesktopConnectionRemoteInfo;

                runtimeclass RemoteDesktopInfo;

                runtimeclass RemoteDesktopRegistrar;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace System
    {
        namespace RemoteDesktop
        {
            namespace Provider
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.System.RemoteDesktop.Provider.RemoteDesktopInfo*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.System.RemoteDesktop.Provider.RemoteDesktopInfo*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.System.RemoteDesktop.Provider.RemoteDesktopInfo*>;

                    interface Windows.Foundation.Collections.IVector<Windows.System.RemoteDesktop.Provider.RemoteDesktopInfo*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionRemoteInfo*, IInspectable*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionRemoteInfo*, Windows.System.RemoteDesktop.Provider.PerformLocalActionRequestedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace System
    {
        namespace RemoteDesktop
        {
            namespace Provider
            {
                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                enum RemoteDesktopConnectionStatus
                {
                    Connecting      = 0,
                    Connected       = 1,
                    UserInputNeeded = 2,
                    Disconnected    = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                enum RemoteDesktopLocalAction
                {
                    ShowBluetoothSettings     = 0,
                    ShowSystemSoundSettings   = 1,
                    ShowSystemDisplaySettings = 2,
                    ShowSystemAccountSettings = 3,
                    ShowLocalSettings         = 4
                };

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Provider.PerformLocalActionRequestedEventArgs)]
                [uuid(59359F4F-0862-53A3-A3B3-C932FB718CDC)]
                interface IPerformLocalActionRequestedEventArgs : IInspectable
                {
                    [propget] HRESULT Action([out] [retval] Windows.System.RemoteDesktop.Provider.RemoteDesktopLocalAction* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionInfo)]
                [uuid(68BD69D6-6DEA-543B-B737-F347919F5093)]
                interface IRemoteDesktopConnectionInfo : IInspectable
                {
                    HRESULT SetConnectionStatus([in] Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionStatus value);
                    HRESULT SwitchToLocalSession();
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionInfo)]
                [uuid(871C0B26-23BF-5D3C-BC35-A85C405E25E6)]
                interface IRemoteDesktopConnectionInfo2 : IInspectable
                {
                    HRESULT PerformLocalActionFromRemote([in] Windows.System.RemoteDesktop.Provider.RemoteDesktopLocalAction action);
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionInfo)]
                [uuid(4A7DC5A1-3368-5A75-BB78-807DF7EBC439)]
                interface IRemoteDesktopConnectionInfoStatics : IInspectable
                {
                    HRESULT GetForLaunchUri([in] Windows.Foundation.Uri* launchUri, [in] Windows.UI.WindowId windowId, [out] [retval] Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionInfo** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionRemoteInfo)]
                [uuid(2A3DFA7E-A7AB-547E-9A6A-4C565BBB8D71)]
                interface IRemoteDesktopConnectionRemoteInfo : IInspectable
                {
                    HRESULT ReportSwitched();
                    [eventadd] HRESULT SwitchToLocalSessionRequested([in] Windows.Foundation.TypedEventHandler<Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionRemoteInfo*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT SwitchToLocalSessionRequested([in] EventRegistrationToken token);
                    [eventadd] HRESULT PerformLocalActionRequested([in] Windows.Foundation.TypedEventHandler<Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionRemoteInfo*, Windows.System.RemoteDesktop.Provider.PerformLocalActionRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT PerformLocalActionRequested([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionRemoteInfo)]
                [uuid(B590E64A-E4C9-53E8-B83D-A0DB3676246A)]
                interface IRemoteDesktopConnectionRemoteInfoStatics : IInspectable
                {
                    HRESULT IsSwitchSupported([out] [retval] boolean* result);
                    HRESULT GetForLaunchUri([in] Windows.Foundation.Uri* launchUri, [out] [retval] Windows.System.RemoteDesktop.Provider.RemoteDesktopConnectionRemoteInfo** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Provider.RemoteDesktopInfo)]
                [uuid(D185BB25-2F1E-5098-B9E0-F46D6358C5C4)]
                interface IRemoteDesktopInfo : IInspectable
                {
                    [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                    [propget] HRESULT Id([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Provider.RemoteDesktopInfo)]
                [uuid(AD0E8D58-B56F-5A8B-B419-8002EE0C5EE9)]
                interface IRemoteDesktopInfoFactory : IInspectable
                {
                    HRESULT CreateInstance([in] HSTRING id, [in] HSTRING displayName, [out] [retval] Windows.System.RemoteDesktop.Provider.RemoteDesktopInfo** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.System.RemoteDesktop.Provider.RemoteDesktopRegistrar)]
                [uuid(687C2750-46D9-5DE3-8DC3-84A9202CECFB)]
                interface IRemoteDesktopRegistrarStatics : IInspectable
                {
                    [propget] HRESULT DesktopInfos([out] [retval] Windows.Foundation.Collections.IVector<Windows.System.RemoteDesktop.Provider.RemoteDesktopInfo*>** value);
                    HRESULT IsSwitchToLocalSessionEnabled([out] [retval] boolean* result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [marshaling_behavior(agile)]
                runtimeclass PerformLocalActionRequestedEventArgs
                {
                    [default] interface Windows.System.RemoteDesktop.Provider.IPerformLocalActionRequestedEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [marshaling_behavior(agile)]
                [static(Windows.System.RemoteDesktop.Provider.IRemoteDesktopConnectionInfoStatics, Windows.Foundation.UniversalApiContract, 15.0)]
                [threading(both)]
                runtimeclass RemoteDesktopConnectionInfo
                {
                    [default] interface Windows.System.RemoteDesktop.Provider.IRemoteDesktopConnectionInfo;
                    [contract(Windows.Foundation.UniversalApiContract, 15.0)] interface Windows.System.RemoteDesktop.Provider.IRemoteDesktopConnectionInfo2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [marshaling_behavior(agile)]
                [static(Windows.System.RemoteDesktop.Provider.IRemoteDesktopConnectionRemoteInfoStatics, Windows.Foundation.UniversalApiContract, 15.0)]
                [threading(both)]
                runtimeclass RemoteDesktopConnectionRemoteInfo
                {
                    [default] interface Windows.System.RemoteDesktop.Provider.IRemoteDesktopConnectionRemoteInfo;
                    interface Windows.Foundation.IClosable;
                }

                [activatable(Windows.System.RemoteDesktop.Provider.IRemoteDesktopInfoFactory, Windows.Foundation.UniversalApiContract, 15.0)]
                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass RemoteDesktopInfo
                {
                    [default] interface Windows.System.RemoteDesktop.Provider.IRemoteDesktopInfo;
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [marshaling_behavior(agile)]
                [static(Windows.System.RemoteDesktop.Provider.IRemoteDesktopRegistrarStatics, Windows.Foundation.UniversalApiContract, 15.0)]
                [threading(both)]
                runtimeclass RemoteDesktopRegistrar
                {
                }
            }
        }
    }
}
