/* * Copyright 2021 Gijs Vermeulen * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifdef __WIDL__ #pragma winrt ns_prefix #endif import "inspectable.idl"; import "asyncinfo.idl"; import "eventtoken.idl"; import "windowscontracts.idl"; import "windows.storage.streams.idl"; import "windows.foundation.idl"; namespace Windows.Devices.Enumeration { typedef enum DeviceClass DeviceClass; typedef enum DeviceInformationKind DeviceInformationKind; typedef enum DeviceWatcherStatus DeviceWatcherStatus; typedef enum Panel Panel; typedef enum DeviceAccessStatus DeviceAccessStatus; interface IDeviceInformation; interface IDeviceInformationStatics; interface IDeviceInformationStatics2; interface IDeviceInformationUpdate; interface IEnclosureLocation; runtimeclass DeviceInformation; runtimeclass DeviceInformationCollection; runtimeclass DeviceInformationUpdate; runtimeclass DeviceThumbnail; runtimeclass DeviceWatcher; runtimeclass EnclosureLocation; runtimeclass DeviceAccessChangedEventArgs; runtimeclass DeviceAccessInformation; declare { interface Windows.Foundation.Collections.IVectorView; interface Windows.Foundation.Collections.IIterable; interface Windows.Foundation.Collections.IIterator; interface Windows.Foundation.AsyncOperationCompletedHandler; interface Windows.Foundation.AsyncOperationCompletedHandler; interface Windows.Foundation.AsyncOperationCompletedHandler; interface Windows.Foundation.Collections.IMapView; interface Windows.Foundation.IAsyncOperation; interface Windows.Foundation.IAsyncOperation; interface Windows.Foundation.IAsyncOperation; interface Windows.Foundation.TypedEventHandler; interface Windows.Foundation.TypedEventHandler; interface Windows.Foundation.TypedEventHandler; interface Windows.Foundation.TypedEventHandler; } } namespace Windows.Devices.Enumeration { [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, 7.0)] DevicePanel = 8, }; enum DeviceWatcherStatus { Created = 0, Started = 1, EnumerationCompleted = 2, Stopping = 3, Stopped = 4, Aborted = 5, }; enum Panel { Unknown = 0, Front = 1, Back = 2, Top = 3, Bottom = 4, Left = 5, Right = 6, }; [contract(Windows.Foundation.UniversalApiContract, 1.0)] enum DeviceAccessStatus { Unspecified = 0, Allowed = 1, DeniedByUser = 2, DeniedBySystem = 3, }; [ 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 **value); HRESULT Update([in] Windows.Devices.Enumeration.DeviceInformationUpdate *info); HRESULT GetThumbnailAsync([out, retval] Windows.Foundation.IAsyncOperation **operation); HRESULT GetGlyphThumbnailAsync([out, retval] Windows.Foundation.IAsyncOperation **operation); } [ 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 **value); } [ exclusiveto(Windows.Devices.Enumeration.DeviceWatcher), uuid(c9eab97d-8f6b-4f96-a9f4-abc814e22271), ] interface IDeviceWatcher : IInspectable { [eventadd] HRESULT Added([in] Windows.Foundation.TypedEventHandler *handler, [out, retval] EventRegistrationToken *token); [eventremove] HRESULT Added([in] EventRegistrationToken token); [eventadd] HRESULT Updated([in] Windows.Foundation.TypedEventHandler *handler, [out, retval] EventRegistrationToken *token); [eventremove] HRESULT Updated([in] EventRegistrationToken token); [eventadd] HRESULT Removed([in] Windows.Foundation.TypedEventHandler *handler, [out, retval] EventRegistrationToken *token); [eventremove] HRESULT Removed([in] EventRegistrationToken token); [eventadd] HRESULT EnumerationCompleted([in] Windows.Foundation.TypedEventHandler *handler, [out, retval] EventRegistrationToken *token); [eventremove] HRESULT EnumerationCompleted([in] EventRegistrationToken token); [eventadd] HRESULT Stopped([in] Windows.Foundation.TypedEventHandler *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(); } [ 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, 1.0), exclusiveto(Windows.Devices.Enumeration.DeviceInformation), uuid(493b4f34-a84f-45fd-9167-15d1cb1bd1f9) ] interface IDeviceInformationStatics2 : IInspectable { HRESULT GetAqsFilterFromDeviceClass([in] Windows.Devices.Enumeration.DeviceClass device_class, [out, retval] HSTRING *filter); [overload("CreateFromIdAsync")] HRESULT CreateFromIdAsyncWithKindAndAdditionalProperties([in] HSTRING device_id, [in] Windows.Foundation.Collections.IIterable *additional_properties, [in] Windows.Devices.Enumeration.DeviceInformationKind kind, [out, retval] Windows.Foundation.IAsyncOperation **async_operation); [overload("FindAllAsync")] HRESULT FindAllAsyncWithKindAqsFilterAndAdditionalProperties([in] HSTRING filter, [in] Windows.Foundation.Collections.IIterable *additional_properties, [in] Windows.Devices.Enumeration.DeviceInformationKind kind, [out, retval] Windows.Foundation.IAsyncOperation **async_operation); [overload("CreateWatcher")] HRESULT CreateWatcherWithKindAqsFilterAndAdditionalProperties([in] HSTRING filter, [in] Windows.Foundation.Collections.IIterable *additional_properties, [in] Windows.Devices.Enumeration.DeviceInformationKind kind, [out, retval] Windows.Devices.Enumeration.DeviceWatcher **watcher); } [ 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 *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 device_id, [out, retval] Windows.Devices.Enumeration.DeviceAccessInformation **value); HRESULT CreateFromDeviceClassId([in] GUID device_class_id, [out, retval] Windows.Devices.Enumeration.DeviceAccessInformation **value); HRESULT CreateFromDeviceClass([in] Windows.Devices.Enumeration.DeviceClass device_class, [out, retval] Windows.Devices.Enumeration.DeviceAccessInformation **value); } [ 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; interface Windows.Foundation.Collections.IIterable; } [ marshaling_behavior(agile), ] runtimeclass DeviceInformationUpdate { [default] interface Windows.Devices.Enumeration.IDeviceInformationUpdate; interface Windows.Devices.Enumeration.IDeviceInformationUpdate2; } [ 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; } [ marshaling_behavior(agile), ] runtimeclass DeviceWatcher { [default] interface Windows.Devices.Enumeration.IDeviceWatcher; interface Windows.Devices.Enumeration.IDeviceWatcher2; } [ marshaling_behavior(agile) ] runtimeclass EnclosureLocation { [default] interface Windows.Devices.Enumeration.IEnclosureLocation; } [ 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; } }