/* * Copyright (C) 2021 Alistair Leslie-Hughes * Copyright (C) 2023 Mohamad Al-Jaf * * 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.foundation.idl"; import "windows.networking.idl"; import "windows.storage.streams.idl"; namespace Windows.Foundation { interface IClosable; runtimeclass Uri; } namespace Windows.Networking { typedef enum DomainNameType DomainNameType; typedef enum HostNameSortOptions HostNameSortOptions; runtimeclass EndpointPair; runtimeclass HostName; } namespace Windows.Networking.Connectivity { runtimeclass ConnectionCost; runtimeclass ConnectionProfile; runtimeclass DataPlanStatus; runtimeclass DataPlanUsage; runtimeclass DataUsage; runtimeclass IPInformation; runtimeclass LanIdentifier; runtimeclass LanIdentifierData; runtimeclass NetworkAdapter; runtimeclass NetworkInformation; runtimeclass NetworkItem; runtimeclass NetworkSecuritySettings; runtimeclass ProxyConfiguration; typedef enum NetworkAuthenticationType NetworkAuthenticationType; typedef enum NetworkConnectivityLevel NetworkConnectivityLevel; typedef enum NetworkCostType NetworkCostType; typedef enum NetworkEncryptionType NetworkEncryptionType; typedef enum NetworkTypes NetworkTypes; typedef enum RoamingStates RoamingStates; declare { interface Windows.Foundation.AsyncOperationCompletedHandler; interface Windows.Foundation.AsyncOperationCompletedHandler; interface Windows.Foundation.IAsyncOperation; interface Windows.Foundation.IAsyncOperation; interface Windows.Foundation.Collections.IIterable; interface Windows.Foundation.Collections.IVectorView; interface Windows.Foundation.Collections.IVectorView; interface Windows.Foundation.Collections.IVectorView; interface Windows.Foundation.Collections.IVectorView; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), ] enum NetworkAuthenticationType { None = 0, Unknown = 1, Open80211 = 2, SharedKey80211 = 3, Wpa = 4, WpaPsk = 5, WpaNone = 6, Rsna = 7, RsnaPsk = 8, Ihv = 9, }; [ contract(Windows.Foundation.UniversalApiContract, 1.0), ] enum NetworkConnectivityLevel { None = 0, LocalAccess = 1, ConstrainedInternetAccess = 2, InternetAccess = 3, }; [ contract(Windows.Foundation.UniversalApiContract, 1.0), ] enum NetworkCostType { Unknown = 0, Unrestricted = 1, Fixed = 2, Variable = 3, }; [ contract(Windows.Foundation.UniversalApiContract, 1.0), ] enum NetworkEncryptionType { None = 0, Unknown = 1, Wep = 2, Wep40 = 3, Wep104 = 4, Tkip = 5, Ccmp = 6, WpaUseGroup = 7, RsnUseGroup = 8, Ihv = 9, }; [ contract(Windows.Foundation.UniversalApiContract, 1.0), flags, ] enum NetworkTypes { None = 0x0, Internet = 0x1, PrivateNetwork = 0x2, }; [ contract(Windows.Foundation.UniversalApiContract, 1.0), flags, ] enum RoamingStates { None = 0x0, NotRoaming = 0x1, Roaming = 0x2, }; [ contract(Windows.Foundation.UniversalApiContract, 1.0), uuid(71ba143f-598e-49d0-84eb-8febaedcc195), ] delegate HRESULT NetworkStatusChangedEventHandler([in] IInspectable *sender); [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.ConnectionCost), uuid(bad7d829-3416-4b10-a202-bac0b075bdae), ] interface IConnectionCost : IInspectable { [propget] HRESULT NetworkCostType([out, retval] Windows.Networking.Connectivity.NetworkCostType *value); [propget] HRESULT Roaming([out, retval] boolean *value); [propget] HRESULT OverDataLimit([out, retval] boolean *value); [propget] HRESULT ApproachingDataLimit([out, retval] boolean *value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.ConnectionProfile), uuid(71ba143c-598e-49d0-84eb-8febaedcc195), ] interface IConnectionProfile : IInspectable { [propget] HRESULT ProfileName([out, retval] HSTRING *value); HRESULT GetNetworkConnectivityLevel([out, retval] Windows.Networking.Connectivity.NetworkConnectivityLevel *value); HRESULT GetNetworkNames([out, retval] Windows.Foundation.Collections.IVectorView **value); HRESULT GetConnectionCost([out, retval] Windows.Networking.Connectivity.ConnectionCost **value); HRESULT GetDataPlanStatus([out, retval] Windows.Networking.Connectivity.DataPlanStatus **value); [propget] HRESULT NetworkAdapter([out, retval] Windows.Networking.Connectivity.NetworkAdapter **value); HRESULT GetLocalUsage([in] Windows.Foundation.DateTime start, [in] Windows.Foundation.DateTime end, [out, retval] Windows.Networking.Connectivity.DataUsage **value); HRESULT GetLocalUsagePerRoamingStates([in] Windows.Foundation.DateTime start, [in] Windows.Foundation.DateTime end, [in] Windows.Networking.Connectivity.RoamingStates states, [out, retval] Windows.Networking.Connectivity.DataUsage **value); [propget] HRESULT NetworkSecuritySettings([out, retval] Windows.Networking.Connectivity.NetworkSecuritySettings **value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.DataPlanStatus), uuid(977a8b8c-3885-40f3-8851-42cd2bd568bb), ] interface IDataPlanStatus : IInspectable { [propget] HRESULT DataPlanUsage([out, retval] Windows.Networking.Connectivity.DataPlanUsage **value); [propget] HRESULT DataLimitInMegabytes([out, retval] Windows.Foundation.IReference **value); [propget] HRESULT InboundBitsPerSecond([out, retval] Windows.Foundation.IReference **value); [propget] HRESULT OutboundBitsPerSecond([out, retval] Windows.Foundation.IReference **value); [propget] HRESULT NextBillingCycle([out, retval] Windows.Foundation.IReference **value); [propget] HRESULT MaxTransferSizeInMegabytes([out, retval] Windows.Foundation.IReference **value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.DataPlanUsage), uuid(b921492d-3b44-47ff-b361-be59e69ed1b0), ] interface IDataPlanUsage : IInspectable { [propget] HRESULT MegabytesUsed([out, retval] UINT32 *value); [propget] HRESULT LastSyncTime([out, retval] Windows.Foundation.DateTime *value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.DataUsage), uuid(c1431dd3-b146-4d39-b959-0c69b096c512), ] interface IDataUsage : IInspectable { [propget] HRESULT BytesSent([out, retval] UINT64 *value); [propget] HRESULT BytesReceived([out, retval] UINT64 *value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.IPInformation), uuid(d85145e0-138f-47d7-9b3a-36bb488cef33), ] interface IIPInformation : IInspectable { [propget] HRESULT NetworkAdapter([out, retval] Windows.Networking.Connectivity.NetworkAdapter **value); [propget] HRESULT PrefixLength([out, retval] Windows.Foundation.IReference **value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.LanIdentifier), uuid(48aa53aa-1108-4546-a6cb-9a74da4b7ba0), ] interface ILanIdentifier : IInspectable { [propget] HRESULT InfrastructureId([out, retval] Windows.Networking.Connectivity.LanIdentifierData **value); [propget] HRESULT PortId([out, retval] Windows.Networking.Connectivity.LanIdentifierData **value); [propget] HRESULT NetworkAdapterId([out, retval] GUID *value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.LanIdentifierData), uuid(a74e83c3-d639-45be-a36a-c4e4aeaf6d9b), ] interface ILanIdentifierData : IInspectable { [propget] HRESULT Type([out, retval] UINT32 *value); [propget] HRESULT Value([out,retval] Windows.Foundation.Collections.IVectorView **value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.NetworkAdapter), uuid(3b542e03-5388-496c-a8a3-affd39aec2e6), ] interface INetworkAdapter : IInspectable { [propget] HRESULT OutboundMaxBitsPerSecond([out, retval] UINT64 *value); [propget] HRESULT InboundMaxBitsPerSecond([out, retval] UINT64 *value); [propget] HRESULT IanaInterfaceType([out, retval] UINT32 *value); [propget] HRESULT NetworkItem([out, retval] Windows.Networking.Connectivity.NetworkItem **value); [propget] HRESULT NetworkAdapterId([out, retval] GUID *value); HRESULT GetConnectedProfileAsync([out, retval] Windows.Foundation.IAsyncOperation **value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.NetworkInformation), uuid(5074f851-950d-4165-9c15-365619481eea), ] interface INetworkInformationStatics : IInspectable { HRESULT GetConnectionProfiles([out, retval] Windows.Foundation.Collections.IVectorView **value); HRESULT GetInternetConnectionProfile([out, retval] Windows.Networking.Connectivity.ConnectionProfile **value); HRESULT GetLanIdentifiers([out, retval] Windows.Foundation.Collections.IVectorView **value); HRESULT GetHostNames([out, retval] Windows.Foundation.Collections.IVectorView **value); HRESULT GetProxyConfigurationAsync([in] Windows.Foundation.Uri *uri, [out, retval] Windows.Foundation.IAsyncOperation **value); HRESULT GetSortedEndpointPairs([in] Windows.Foundation.Collections.IIterable *endpoint, [in] Windows.Networking.HostNameSortOptions options, [out, retval] Windows.Foundation.Collections.IVectorView **value); [eventadd] HRESULT NetworkStatusChanged([in] Windows.Networking.Connectivity.NetworkStatusChangedEventHandler *handler, [out, retval] EventRegistrationToken *cookie); [eventremove] HRESULT NetworkStatusChanged([in] EventRegistrationToken cookie); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.NetworkInformation), uuid(01bc4d39-f5e0-4567-a28c-42080c831b2b), ] interface INetworkItem : IInspectable { [propget] HRESULT NetworkId([out, retval] GUID *value); HRESULT GetNetworkTypes([out, retval] NetworkTypes *value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.NetworkSecuritySettings), uuid(7ca07e8d-917b-4b5f-b84d-28f7a5ac5402), ] interface INetworkSecuritySettings : IInspectable { [propget] HRESULT NetworkAuthenticationType([out, retval] Windows.Networking.Connectivity.NetworkAuthenticationType *value); [propget] HRESULT NetworkEncryptionType([out, retval] Windows.Networking.Connectivity.NetworkEncryptionType *value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Networking.Connectivity.NetworkSecuritySettings), uuid(ef3a60b4-9004-4dd6-b7d8-b3e502f4aad0), ] interface IProxyConfiguration : IInspectable { [propget] HRESULT ProxyUris([out, retval] Windows.Foundation.Collections.IVectorView **value); [propget] HRESULT CanConnectDirectly([out, retval] boolean *value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass ConnectionCost { [default] interface Windows.Networking.Connectivity.IConnectionCost; [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Connectivity.IConnectionCost2; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass ConnectionProfile { [default] interface Windows.Networking.Connectivity.IConnectionProfile; [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Connectivity.IConnectionProfile2; [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Connectivity.IConnectionProfile3; [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Networking.Connectivity.IConnectionProfile4; [contract(Windows.Foundation.UniversalApiContract, 7.0)] interface Windows.Networking.Connectivity.IConnectionProfile5; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass DataPlanStatus { [default] interface Windows.Networking.Connectivity.IDataPlanStatus; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass DataPlanUsage { [default] interface Windows.Networking.Connectivity.IDataPlanUsage; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass DataUsage { [default] interface Windows.Networking.Connectivity.IDataUsage; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass IPInformation { [default] interface Windows.Networking.Connectivity.IIPInformation; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass LanIdentifier { [default] interface Windows.Networking.Connectivity.ILanIdentifier; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass LanIdentifierData { [default] interface Windows.Networking.Connectivity.ILanIdentifierData; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass NetworkAdapter { [default] interface Windows.Networking.Connectivity.INetworkAdapter; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), static(Windows.Networking.Connectivity.INetworkInformationStatics, Windows.Foundation.UniversalApiContract, 1.0), ] runtimeclass NetworkInformation { } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass NetworkItem { [default] interface Windows.Networking.Connectivity.INetworkItem; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass NetworkSecuritySettings { [default] interface Windows.Networking.Connectivity.INetworkSecuritySettings; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), ] runtimeclass ProxyConfiguration { [default] interface Windows.Networking.Connectivity.IProxyConfiguration; } }