//
// 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.ApplicationModel.Background.idl";
import "Windows.Storage.Streams.idl";
import "Windows.UI.idl";
import "Windows.UI.Popups.idl";

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Background
        {
            runtimeclass DeviceWatcherTrigger;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        runtimeclass Deferral;

        interface IClosable;

        typedef struct Rect Rect;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IContentTypeProvider;

            interface IInputStream;

            interface IOutputStream;

            interface IRandomAccessStream;

            interface IRandomAccessStreamWithContentType;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct Color Color;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Popups
        {
            typedef enum Placement Placement;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            typedef enum DeviceAccessStatus DeviceAccessStatus;

            typedef enum DeviceClass DeviceClass;

            typedef enum DeviceInformationKind DeviceInformationKind;

            typedef enum DevicePairingKinds DevicePairingKinds;

            typedef enum DevicePairingProtectionLevel DevicePairingProtectionLevel;

            typedef enum DevicePairingResultStatus DevicePairingResultStatus;

            typedef enum DevicePickerDisplayStatusOptions DevicePickerDisplayStatusOptions;

            typedef enum DeviceUnpairingResultStatus DeviceUnpairingResultStatus;

            typedef enum DeviceWatcherEventKind DeviceWatcherEventKind;

            typedef enum DeviceWatcherStatus DeviceWatcherStatus;

            typedef enum Panel Panel;

            interface IDeviceAccessChangedEventArgs;

            interface IDeviceAccessChangedEventArgs2;

            interface IDeviceAccessInformation;

            interface IDeviceAccessInformationStatics;

            interface IDeviceConnectionChangeTriggerDetails;

            interface IDeviceDisconnectButtonClickedEventArgs;

            interface IDeviceInformation;

            interface IDeviceInformation2;

            interface IDeviceInformationCustomPairing;

            interface IDeviceInformationPairing;

            interface IDeviceInformationPairing2;

            interface IDeviceInformationPairingStatics;

            interface IDeviceInformationStatics;

            interface IDeviceInformationStatics2;

            interface IDeviceInformationUpdate;

            interface IDeviceInformationUpdate2;

            interface IDevicePairingRequestedEventArgs;

            interface IDevicePairingResult;

            interface IDevicePairingSettings;

            interface IDevicePicker;

            interface IDevicePickerAppearance;

            interface IDevicePickerFilter;

            interface IDeviceSelectedEventArgs;

            interface IDeviceUnpairingResult;

            interface IDeviceWatcher;

            interface IDeviceWatcher2;

            interface IDeviceWatcherEvent;

            interface IDeviceWatcherTriggerDetails;

            interface IEnclosureLocation;

            interface IEnclosureLocation2;

            runtimeclass DeviceAccessChangedEventArgs;

            runtimeclass DeviceAccessInformation;

            runtimeclass DeviceConnectionChangeTriggerDetails;

            runtimeclass DeviceDisconnectButtonClickedEventArgs;

            runtimeclass DeviceInformation;

            runtimeclass DeviceInformationCollection;

            runtimeclass DeviceInformationCustomPairing;

            runtimeclass DeviceInformationPairing;

            runtimeclass DeviceInformationUpdate;

            runtimeclass DevicePairingRequestedEventArgs;

            runtimeclass DevicePairingResult;

            runtimeclass DevicePicker;

            runtimeclass DevicePickerAppearance;

            runtimeclass DevicePickerFilter;

            runtimeclass DeviceSelectedEventArgs;

            runtimeclass DeviceThumbnail;

            runtimeclass DeviceUnpairingResult;

            runtimeclass DeviceWatcher;

            runtimeclass DeviceWatcherEvent;

            runtimeclass DeviceWatcherTriggerDetails;

            runtimeclass EnclosureLocation;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Enumeration.DeviceClass>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Enumeration.DeviceInformation*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Enumeration.DeviceWatcherEvent*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Enumeration.DeviceWatcherEventKind>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Enumeration.DeviceClass>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Enumeration.DeviceInformation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Enumeration.DeviceWatcherEvent*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Enumeration.DeviceWatcherEventKind>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Enumeration.DeviceClass>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Enumeration.DeviceInformation*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Enumeration.DeviceWatcherEvent*>;

                interface Windows.Foundation.Collections.IVector<Windows.Devices.Enumeration.DeviceClass>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceAccessStatus>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformationCollection*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DevicePairingResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceThumbnail*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceUnpairingResult*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceAccessInformation*, Windows.Devices.Enumeration.DeviceAccessChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceInformationCustomPairing*, Windows.Devices.Enumeration.DevicePairingRequestedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DevicePicker*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DevicePicker*, Windows.Devices.Enumeration.DeviceDisconnectButtonClickedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DevicePicker*, Windows.Devices.Enumeration.DeviceSelectedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceWatcher*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceWatcher*, Windows.Devices.Enumeration.DeviceInformation*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceWatcher*, Windows.Devices.Enumeration.DeviceInformationUpdate*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DeviceAccessStatus
            {
                Unspecified    = 0,
                Allowed        = 1,
                DeniedByUser   = 2,
                DeniedBySystem = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DeviceClass
            {
                All                   = 0,
                AudioCapture          = 1,
                AudioRender           = 2,
                PortableStorageDevice = 3,
                VideoCapture          = 4,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                ImageScanner          = 5,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Location              = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DeviceInformationKind
            {
                Unknown                      = 0,
                DeviceInterface              = 1,
                DeviceContainer              = 2,
                Device                       = 3,
                DeviceInterfaceClass         = 4,
                AssociationEndpoint          = 5,
                AssociationEndpointContainer = 6,
                AssociationEndpointService   = 7
            };

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [flags]
            enum DevicePairingKinds
            {
                None            = 0x0,
                ConfirmOnly     = 0x1,
                DisplayPin      = 0x2,
                ProvidePin      = 0x4,
                ConfirmPinMatch = 0x8
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DevicePairingProtectionLevel
            {
                Default                     = 0,
                None                        = 1,
                Encryption                  = 2,
                EncryptionAndAuthentication = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DevicePairingResultStatus
            {
                Paired                       = 0,
                NotReadyToPair               = 1,
                NotPaired                    = 2,
                AlreadyPaired                = 3,
                ConnectionRejected           = 4,
                TooManyConnections           = 5,
                HardwareFailure              = 6,
                AuthenticationTimeout        = 7,
                AuthenticationNotAllowed     = 8,
                AuthenticationFailure        = 9,
                NoSupportedProfiles          = 10,
                ProtectionLevelCouldNotBeMet = 11,
                AccessDenied                 = 12,
                InvalidCeremonyData          = 13,
                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                PairingCanceled              = 14,
                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                OperationAlreadyInProgress   = 15,
                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                RequiredHandlerNotRegistered = 16,
                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                RejectedByHandler            = 17,
                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                RemoteDeviceHasAssociation   = 18,
                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                Failed                       = 19
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum DevicePickerDisplayStatusOptions
            {
                None                 = 0x0,
                ShowProgress         = 0x1,
                ShowDisconnectButton = 0x2,
                ShowRetryButton      = 0x4
            };

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            enum DeviceUnpairingResultStatus
            {
                Unpaired                   = 0,
                AlreadyUnpaired            = 1,
                OperationAlreadyInProgress = 2,
                AccessDenied               = 3,
                Failed                     = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DeviceWatcherEventKind
            {
                Add    = 0,
                Update = 1,
                Remove = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DeviceWatcherStatus
            {
                Created              = 0,
                Started              = 1,
                EnumerationCompleted = 2,
                Stopping             = 3,
                Stopped              = 4,
                Aborted              = 5
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum Panel
            {
                Unknown = 0,
                Front   = 1,
                Back    = 2,
                Top     = 3,
                Bottom  = 4,
                Left    = 5,
                Right   = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceAccessChangedEventArgs)]
            [uuid(DEDA0BCC-4F9D-4F58-9DBA-A9BC800408D5)]
            interface IDeviceAccessChangedEventArgs : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Devices.Enumeration.DeviceAccessStatus* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceAccessChangedEventArgs)]
            [uuid(82523262-934B-4B30-A178-ADC39F2F2BE3)]
            interface IDeviceAccessChangedEventArgs2 : IInspectable
                requires
                    Windows.Devices.Enumeration.IDeviceAccessChangedEventArgs
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceAccessInformation)]
            [uuid(0BAA9A73-6DE5-4915-8DDD-9A0554A6F545)]
            interface IDeviceAccessInformation : IInspectable
            {
                [eventadd] HRESULT AccessChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceAccessInformation*, Windows.Devices.Enumeration.DeviceAccessChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT AccessChanged([in] EventRegistrationToken cookie);
                [propget] HRESULT CurrentStatus([out] [retval] Windows.Devices.Enumeration.DeviceAccessStatus* status);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceAccessInformation)]
            [uuid(574BD3D3-5F30-45CD-8A94-724FE5973084)]
            interface IDeviceAccessInformationStatics : IInspectable
            {
                HRESULT CreateFromId([in] HSTRING deviceId, [out] [retval] Windows.Devices.Enumeration.DeviceAccessInformation** value);
                HRESULT CreateFromDeviceClassId([in] GUID deviceClassId, [out] [retval] Windows.Devices.Enumeration.DeviceAccessInformation** value);
                HRESULT CreateFromDeviceClass([in] Windows.Devices.Enumeration.DeviceClass deviceClass, [out] [retval] Windows.Devices.Enumeration.DeviceAccessInformation** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceConnectionChangeTriggerDetails)]
            [uuid(B8578C0C-BBC1-484B-BFFA-7B31DCC200B2)]
            interface IDeviceConnectionChangeTriggerDetails : IInspectable
            {
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceDisconnectButtonClickedEventArgs)]
            [uuid(8E44B56D-F902-4A00-B536-F37992E6A2A7)]
            interface IDeviceDisconnectButtonClickedEventArgs : IInspectable
            {
                [propget] HRESULT Device([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformation)]
            [uuid(ABA0FB95-4398-489D-8E44-E6130927011F)]
            interface IDeviceInformation : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT IsEnabled([out] [retval] boolean* value);
                [propget] HRESULT IsDefault([out] [retval] boolean* value);
                [propget] HRESULT EnclosureLocation([out] [retval] Windows.Devices.Enumeration.EnclosureLocation** value);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>** value);
                HRESULT Update([in] Windows.Devices.Enumeration.DeviceInformationUpdate* updateInfo);
                HRESULT GetThumbnailAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceThumbnail*>** asyncOp);
                HRESULT GetGlyphThumbnailAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceThumbnail*>** asyncOp);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformation)]
            [uuid(F156A638-7997-48D9-A10C-269D46533F48)]
            interface IDeviceInformation2 : IInspectable
            {
                [propget] HRESULT Kind([out] [retval] Windows.Devices.Enumeration.DeviceInformationKind* value);
                [propget] HRESULT Pairing([out] [retval] Windows.Devices.Enumeration.DeviceInformationPairing** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformationCustomPairing)]
            [uuid(85138C02-4EE6-4914-8370-107A39144C0E)]
            interface IDeviceInformationCustomPairing : IInspectable
            {
                [overload("PairAsync")] HRESULT PairAsync([in] Windows.Devices.Enumeration.DevicePairingKinds pairingKindsSupported, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DevicePairingResult*>** result);
                [overload("PairAsync")] HRESULT PairWithProtectionLevelAsync([in] Windows.Devices.Enumeration.DevicePairingKinds pairingKindsSupported, [in] Windows.Devices.Enumeration.DevicePairingProtectionLevel minProtectionLevel, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DevicePairingResult*>** result);
                [overload("PairAsync")] HRESULT PairWithProtectionLevelAndSettingsAsync([in] Windows.Devices.Enumeration.DevicePairingKinds pairingKindsSupported, [in] Windows.Devices.Enumeration.DevicePairingProtectionLevel minProtectionLevel, [in] Windows.Devices.Enumeration.IDevicePairingSettings* devicePairingSettings, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DevicePairingResult*>** result);
                [eventadd] HRESULT PairingRequested([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceInformationCustomPairing*, Windows.Devices.Enumeration.DevicePairingRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PairingRequested([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformationPairing)]
            [uuid(2C4769F5-F684-40D5-8469-E8DBAAB70485)]
            interface IDeviceInformationPairing : IInspectable
            {
                [propget] HRESULT IsPaired([out] [retval] boolean* value);
                [propget] HRESULT CanPair([out] [retval] boolean* value);
                [overload("PairAsync")] HRESULT PairAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DevicePairingResult*>** result);
                [overload("PairAsync")] HRESULT PairWithProtectionLevelAsync([in] Windows.Devices.Enumeration.DevicePairingProtectionLevel minProtectionLevel, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DevicePairingResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformationPairing)]
            [uuid(F68612FD-0AEE-4328-85CC-1C742BB1790D)]
            interface IDeviceInformationPairing2 : IInspectable
            {
                [propget] HRESULT ProtectionLevel([out] [retval] Windows.Devices.Enumeration.DevicePairingProtectionLevel* value);
                [propget] HRESULT Custom([out] [retval] Windows.Devices.Enumeration.DeviceInformationCustomPairing** value);
                [overload("PairAsync")] HRESULT PairWithProtectionLevelAndSettingsAsync([in] Windows.Devices.Enumeration.DevicePairingProtectionLevel minProtectionLevel, [in] Windows.Devices.Enumeration.IDevicePairingSettings* devicePairingSettings, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DevicePairingResult*>** result);
                [overload("UnpairAsync")] HRESULT UnpairAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceUnpairingResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformationPairing)]
            [uuid(E915C408-36D4-49A1-BF13-514173799B6B)]
            interface IDeviceInformationPairingStatics : IInspectable
            {
                HRESULT TryRegisterForAllInboundPairingRequests([in] Windows.Devices.Enumeration.DevicePairingKinds pairingKindsSupported, [out] [retval] boolean* result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformation)]
            [uuid(C17F100E-3A46-4A78-8013-769DC9B97390)]
            interface IDeviceInformationStatics : IInspectable
            {
                [overload("CreateFromIdAsync")] HRESULT CreateFromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformation*>** asyncOp);
                [overload("CreateFromIdAsync")] HRESULT CreateFromIdAsyncAdditionalProperties([in] HSTRING deviceId, [in] Windows.Foundation.Collections.IIterable<HSTRING>* additionalProperties, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformation*>** asyncOp);
                [overload("FindAllAsync")] HRESULT FindAllAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformationCollection*>** asyncOp);
                [default_overload] [overload("FindAllAsync")] HRESULT FindAllAsyncDeviceClass([in] Windows.Devices.Enumeration.DeviceClass deviceClass, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformationCollection*>** asyncOp);
                [overload("FindAllAsync")] HRESULT FindAllAsyncAqsFilter([in] HSTRING aqsFilter, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformationCollection*>** asyncOp);
                [overload("FindAllAsync")] HRESULT FindAllAsyncAqsFilterAndAdditionalProperties([in] HSTRING aqsFilter, [in] Windows.Foundation.Collections.IIterable<HSTRING>* additionalProperties, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformationCollection*>** asyncOp);
                [overload("CreateWatcher")] HRESULT CreateWatcher([out] [retval] Windows.Devices.Enumeration.DeviceWatcher** watcher);
                [default_overload] [overload("CreateWatcher")] HRESULT CreateWatcherDeviceClass([in] Windows.Devices.Enumeration.DeviceClass deviceClass, [out] [retval] Windows.Devices.Enumeration.DeviceWatcher** watcher);
                [overload("CreateWatcher")] HRESULT CreateWatcherAqsFilter([in] HSTRING aqsFilter, [out] [retval] Windows.Devices.Enumeration.DeviceWatcher** watcher);
                [overload("CreateWatcher")] HRESULT CreateWatcherAqsFilterAndAdditionalProperties([in] HSTRING aqsFilter, [in] Windows.Foundation.Collections.IIterable<HSTRING>* additionalProperties, [out] [retval] Windows.Devices.Enumeration.DeviceWatcher** watcher);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformation)]
            [uuid(493B4F34-A84F-45FD-9167-15D1CB1BD1F9)]
            interface IDeviceInformationStatics2 : IInspectable
            {
                HRESULT GetAqsFilterFromDeviceClass([in] Windows.Devices.Enumeration.DeviceClass deviceClass, [out] [retval] HSTRING* aqsFilter);
                [overload("CreateFromIdAsync")] HRESULT CreateFromIdAsyncWithKindAndAdditionalProperties([in] HSTRING deviceId, [in] Windows.Foundation.Collections.IIterable<HSTRING>* additionalProperties, [in] Windows.Devices.Enumeration.DeviceInformationKind kind, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformation*>** asyncOp);
                [overload("FindAllAsync")] HRESULT FindAllAsyncWithKindAqsFilterAndAdditionalProperties([in] HSTRING aqsFilter, [in] Windows.Foundation.Collections.IIterable<HSTRING>* additionalProperties, [in] Windows.Devices.Enumeration.DeviceInformationKind kind, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformationCollection*>** asyncOp);
                [overload("CreateWatcher")] HRESULT CreateWatcherWithKindAqsFilterAndAdditionalProperties([in] HSTRING aqsFilter, [in] Windows.Foundation.Collections.IIterable<HSTRING>* additionalProperties, [in] Windows.Devices.Enumeration.DeviceInformationKind kind, [out] [retval] Windows.Devices.Enumeration.DeviceWatcher** watcher);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformationUpdate)]
            [uuid(8F315305-D972-44B7-A37E-9E822C78213B)]
            interface IDeviceInformationUpdate : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceInformationUpdate)]
            [uuid(5D9D148C-A873-485E-BAA6-AA620788E3CC)]
            interface IDeviceInformationUpdate2 : IInspectable
            {
                [propget] HRESULT Kind([out] [retval] Windows.Devices.Enumeration.DeviceInformationKind* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Enumeration.DevicePairingRequestedEventArgs)]
            [uuid(F717FC56-DE6B-487F-8376-0180ACA69963)]
            interface IDevicePairingRequestedEventArgs : IInspectable
            {
                [propget] HRESULT DeviceInformation([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
                [propget] HRESULT PairingKind([out] [retval] Windows.Devices.Enumeration.DevicePairingKinds* value);
                [propget] HRESULT Pin([out] [retval] HSTRING* value);
                [overload("Accept")] HRESULT Accept();
                [overload("Accept")] HRESULT AcceptWithPin([in] HSTRING pin);
                HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DevicePairingResult)]
            [uuid(072B02BF-DD95-4025-9B37-DE51ADBA37B7)]
            interface IDevicePairingResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Devices.Enumeration.DevicePairingResultStatus* status);
                [propget] HRESULT ProtectionLevelUsed([out] [retval] Windows.Devices.Enumeration.DevicePairingProtectionLevel* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [uuid(482CB27C-83BB-420E-BE51-6602B222DE54)]
            interface IDevicePairingSettings : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DevicePicker)]
            [uuid(84997AA2-034A-4440-8813-7D0BD479BF5A)]
            interface IDevicePicker : IInspectable
            {
                [propget] HRESULT Filter([out] [retval] Windows.Devices.Enumeration.DevicePickerFilter** filter);
                [propget] HRESULT Appearance([out] [retval] Windows.Devices.Enumeration.DevicePickerAppearance** value);
                [propget] HRESULT RequestedProperties([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                [eventadd] HRESULT DeviceSelected([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DevicePicker*, Windows.Devices.Enumeration.DeviceSelectedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT DeviceSelected([in] EventRegistrationToken token);
                [eventadd] HRESULT DisconnectButtonClicked([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DevicePicker*, Windows.Devices.Enumeration.DeviceDisconnectButtonClickedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT DisconnectButtonClicked([in] EventRegistrationToken token);
                [eventadd] HRESULT DevicePickerDismissed([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DevicePicker*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT DevicePickerDismissed([in] EventRegistrationToken token);
                [overload("Show")] HRESULT Show([in] Windows.Foundation.Rect selection);
                [overload("Show")] HRESULT ShowWithPlacement([in] Windows.Foundation.Rect selection, [in] Windows.UI.Popups.Placement placement);
                [overload("PickSingleDeviceAsync")] HRESULT PickSingleDeviceAsync([in] Windows.Foundation.Rect selection, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformation*>** operation);
                [overload("PickSingleDeviceAsync")] HRESULT PickSingleDeviceAsyncWithPlacement([in] Windows.Foundation.Rect selection, [in] Windows.UI.Popups.Placement placement, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformation*>** operation);
                HRESULT Hide();
                HRESULT SetDisplayStatus([in] Windows.Devices.Enumeration.DeviceInformation* device, [in] HSTRING status, [in] Windows.Devices.Enumeration.DevicePickerDisplayStatusOptions options);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DevicePickerAppearance)]
            [uuid(E69A12C6-E627-4ED8-9B6C-460AF445E56D)]
            interface IDevicePickerAppearance : IInspectable
            {
                [propget] HRESULT Title([out] [retval] HSTRING* value);
                [propput] HRESULT Title([in] HSTRING value);
                [propget] HRESULT ForegroundColor([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT ForegroundColor([in] Windows.UI.Color value);
                [propget] HRESULT BackgroundColor([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT BackgroundColor([in] Windows.UI.Color value);
                [propget] HRESULT AccentColor([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT AccentColor([in] Windows.UI.Color value);
                [propget] HRESULT SelectedForegroundColor([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT SelectedForegroundColor([in] Windows.UI.Color value);
                [propget] HRESULT SelectedBackgroundColor([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT SelectedBackgroundColor([in] Windows.UI.Color value);
                [propget] HRESULT SelectedAccentColor([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT SelectedAccentColor([in] Windows.UI.Color value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DevicePickerFilter)]
            [uuid(91DB92A2-57CB-48F1-9B59-A59B7A1F02A2)]
            interface IDevicePickerFilter : IInspectable
            {
                [propget] HRESULT SupportedDeviceClasses([out] [retval] Windows.Foundation.Collections.IVector<Windows.Devices.Enumeration.DeviceClass>** value);
                [propget] HRESULT SupportedDeviceSelectors([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceSelectedEventArgs)]
            [uuid(269EDADE-1D2F-4940-8402-4156B81D3C77)]
            interface IDeviceSelectedEventArgs : IInspectable
            {
                [propget] HRESULT SelectedDevice([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceUnpairingResult)]
            [uuid(66F44AD3-79D9-444B-92CF-A92EF72571C7)]
            interface IDeviceUnpairingResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Devices.Enumeration.DeviceUnpairingResultStatus* status);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceWatcher)]
            [uuid(C9EAB97D-8F6B-4F96-A9F4-ABC814E22271)]
            interface IDeviceWatcher : IInspectable
            {
                [eventadd] HRESULT Added([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceWatcher*, Windows.Devices.Enumeration.DeviceInformation*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Added([in] EventRegistrationToken token);
                [eventadd] HRESULT Updated([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceWatcher*, Windows.Devices.Enumeration.DeviceInformationUpdate*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Updated([in] EventRegistrationToken token);
                [eventadd] HRESULT Removed([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceWatcher*, Windows.Devices.Enumeration.DeviceInformationUpdate*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Removed([in] EventRegistrationToken token);
                [eventadd] HRESULT EnumerationCompleted([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceWatcher*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT EnumerationCompleted([in] EventRegistrationToken token);
                [eventadd] HRESULT Stopped([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Enumeration.DeviceWatcher*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Stopped([in] EventRegistrationToken token);
                [propget] HRESULT Status([out] [retval] Windows.Devices.Enumeration.DeviceWatcherStatus* status);
                HRESULT Start();
                HRESULT Stop();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceWatcher)]
            [uuid(FF08456E-ED14-49E9-9A69-8117C54AE971)]
            interface IDeviceWatcher2 : IInspectable
            {
                HRESULT GetBackgroundTrigger([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Enumeration.DeviceWatcherEventKind>* requestedEventKinds, [out] [retval] Windows.ApplicationModel.Background.DeviceWatcherTrigger** trigger);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceWatcherEvent)]
            [uuid(74AA9C0B-1DBD-47FD-B635-3CC556D0FF8B)]
            interface IDeviceWatcherEvent : IInspectable
            {
                [propget] HRESULT Kind([out] [retval] Windows.Devices.Enumeration.DeviceWatcherEventKind* value);
                [propget] HRESULT DeviceInformation([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
                [propget] HRESULT DeviceInformationUpdate([out] [retval] Windows.Devices.Enumeration.DeviceInformationUpdate** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.DeviceWatcherTriggerDetails)]
            [uuid(38808119-4CB7-4E57-A56D-776D07CBFEF9)]
            interface IDeviceWatcherTriggerDetails : IInspectable
            {
                [propget] HRESULT DeviceWatcherEvents([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Enumeration.DeviceWatcherEvent*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Enumeration.EnclosureLocation)]
            [uuid(42340A27-5810-459C-AABB-C65E1F813ECF)]
            interface IEnclosureLocation : IInspectable
            {
                [propget] HRESULT InDock([out] [retval] boolean* value);
                [propget] HRESULT InLid([out] [retval] boolean* value);
                [propget] HRESULT Panel([out] [retval] Windows.Devices.Enumeration.Panel* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Devices.Enumeration.EnclosureLocation)]
            [uuid(2885995B-E07D-485D-8A9E-BDF29AEF4F66)]
            interface IEnclosureLocation2 : IInspectable
                requires
                    Windows.Devices.Enumeration.IEnclosureLocation
            {
                [propget] HRESULT RotationAngleInDegreesClockwise([out] [retval] UINT32* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DeviceAccessChangedEventArgs
            {
                [default] interface Windows.Devices.Enumeration.IDeviceAccessChangedEventArgs;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Devices.Enumeration.IDeviceAccessChangedEventArgs2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Enumeration.IDeviceAccessInformationStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass DeviceAccessInformation
            {
                [default] interface Windows.Devices.Enumeration.IDeviceAccessInformation;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DeviceConnectionChangeTriggerDetails
            {
                [default] interface Windows.Devices.Enumeration.IDeviceConnectionChangeTriggerDetails;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DeviceDisconnectButtonClickedEventArgs
            {
                [default] interface Windows.Devices.Enumeration.IDeviceDisconnectButtonClickedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Enumeration.IDeviceInformationStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Devices.Enumeration.IDeviceInformationStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass DeviceInformation
            {
                [default] interface Windows.Devices.Enumeration.IDeviceInformation;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Devices.Enumeration.IDeviceInformation2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DeviceInformationCollection
            {
                [default] interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Enumeration.DeviceInformation*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Enumeration.DeviceInformation*>;
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DeviceInformationCustomPairing
            {
                [default] interface Windows.Devices.Enumeration.IDeviceInformationCustomPairing;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Enumeration.IDeviceInformationPairingStatics, Windows.Foundation.UniversalApiContract, 2.0)]
            [threading(both)]
            runtimeclass DeviceInformationPairing
            {
                [default] interface Windows.Devices.Enumeration.IDeviceInformationPairing;
                [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.Devices.Enumeration.IDeviceInformationPairing2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DeviceInformationUpdate
            {
                [default] interface Windows.Devices.Enumeration.IDeviceInformationUpdate;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Devices.Enumeration.IDeviceInformationUpdate2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DevicePairingRequestedEventArgs
            {
                [default] interface Windows.Devices.Enumeration.IDevicePairingRequestedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DevicePairingResult
            {
                [default] interface Windows.Devices.Enumeration.IDevicePairingResult;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DevicePicker
            {
                [default] interface Windows.Devices.Enumeration.IDevicePicker;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DevicePickerAppearance
            {
                [default] interface Windows.Devices.Enumeration.IDevicePickerAppearance;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DevicePickerFilter
            {
                [default] interface Windows.Devices.Enumeration.IDevicePickerFilter;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DeviceSelectedEventArgs
            {
                [default] interface Windows.Devices.Enumeration.IDeviceSelectedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DeviceThumbnail
            {
                [default] interface Windows.Storage.Streams.IRandomAccessStreamWithContentType;
                interface Windows.Storage.Streams.IContentTypeProvider;
                interface Windows.Storage.Streams.IRandomAccessStream;
                interface Windows.Storage.Streams.IOutputStream;
                interface Windows.Foundation.IClosable;
                interface Windows.Storage.Streams.IInputStream;
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DeviceUnpairingResult
            {
                [default] interface Windows.Devices.Enumeration.IDeviceUnpairingResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DeviceWatcher
            {
                [default] interface Windows.Devices.Enumeration.IDeviceWatcher;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Devices.Enumeration.IDeviceWatcher2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DeviceWatcherEvent
            {
                [default] interface Windows.Devices.Enumeration.IDeviceWatcherEvent;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DeviceWatcherTriggerDetails
            {
                [default] interface Windows.Devices.Enumeration.IDeviceWatcherTriggerDetails;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass EnclosureLocation
            {
                [default] interface Windows.Devices.Enumeration.IEnclosureLocation;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Devices.Enumeration.IEnclosureLocation2;
            }
        }
    }
}
