| /* | |
| * Copyright 2014 Hans Leidekker for CodeWeavers | |
| * | |
| * 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 | |
| */ | |
| import "oaidl.idl"; | |
| import "objidl.idl"; | |
| #ifndef __WIDL__ | |
| #define threading(model) | |
| #endif | |
| interface IEnumNetworks; | |
| interface IEnumNetworkConnections; | |
| interface INetwork; | |
| interface INetworkConnection; | |
| interface INetworkConnectionEvents; | |
| interface INetworkCostManager; | |
| interface INetworkEvents; | |
| interface INetworkListManager; | |
| interface INetworkListManagerEvents; | |
| typedef [v1_enum] enum NLM_NETWORK_CLASS | |
| { | |
| NLM_NETWORK_IDENTIFYING = 0x01, | |
| NLM_NETWORK_IDENTIFIED = 0x02, | |
| NLM_NETWORK_UNIDENTIFIED = 0x03 | |
| } NLM_NETWORK_CLASS; | |
| typedef [v1_enum] enum NLM_INTERNET_CONNECTIVITY | |
| { | |
| NLM_INTERNET_CONNECTIVITY_WEBHIJACK = 0x01, | |
| NLM_INTERNET_CONNECTIVITY_PROXIED = 0x02, | |
| NLM_INTERNET_CONNECTIVITY_CORPORATE = 0x04 | |
| } NLM_INTERNET_CONNECTIVITY; | |
| typedef [v1_enum] enum NLM_CONNECTIVITY | |
| { | |
| NLM_CONNECTIVITY_DISCONNECTED = 0x0000, | |
| NLM_CONNECTIVITY_IPV4_NOTRAFFIC = 0x0001, | |
| NLM_CONNECTIVITY_IPV6_NOTRAFFIC = 0x0002, | |
| NLM_CONNECTIVITY_IPV4_SUBNET = 0x0010, | |
| NLM_CONNECTIVITY_IPV4_LOCALNETWORK = 0x0020, | |
| NLM_CONNECTIVITY_IPV4_INTERNET = 0x0040, | |
| NLM_CONNECTIVITY_IPV6_SUBNET = 0x0100, | |
| NLM_CONNECTIVITY_IPV6_LOCALNETWORK = 0x0200, | |
| NLM_CONNECTIVITY_IPV6_INTERNET = 0x0400 | |
| } NLM_CONNECTIVITY; | |
| typedef [v1_enum] enum NLM_DOMAIN_TYPE | |
| { | |
| NLM_DOMAIN_TYPE_NON_DOMAIN_NETWORK = 0x00, | |
| NLM_DOMAIN_TYPE_DOMAIN_NETWORK = 0x01, | |
| NLM_DOMAIN_TYPE_DOMAIN_AUTHENTICATED = 0x02 | |
| } NLM_DOMAIN_TYPE; | |
| typedef [v1_enum] enum NLM_ENUM_NETWORK | |
| { | |
| NLM_ENUM_NETWORK_CONNECTED = 0x01, | |
| NLM_ENUM_NETWORK_DISCONNECTED = 0x02, | |
| NLM_ENUM_NETWORK_ALL = 0x03 | |
| } NLM_ENUM_NETWORK; | |
| typedef [v1_enum] enum NLM_CONNECTION_COST | |
| { | |
| NLM_CONNECTION_COST_UNKNOWN = 0x0, | |
| NLM_CONNECTION_COST_UNRESTRICTED = 0x1, | |
| NLM_CONNECTION_COST_FIXED = 0x2, | |
| NLM_CONNECTION_COST_VARIABLE = 0x4, | |
| NLM_CONNECTION_COST_OVERDATALIMIT = 0x10000, | |
| NLM_CONNECTION_COST_CONGESTED = 0x20000, | |
| NLM_CONNECTION_COST_ROAMING = 0x40000, | |
| NLM_CONNECTION_COST_APPROACHINGDATALIMIT = 0x80000 | |
| } NLM_CONNECTION_COST; | |
| typedef struct NLM_SOCKADDR | |
| { | |
| BYTE data[128]; | |
| } NLM_SOCKADDR; | |
| const UINT32 NLM_UNKNOWN_DATAPLAN_STATUS = 0xffffffff; | |
| typedef struct NLM_USAGE_DATA | |
| { | |
| DWORD UsageInMegabytes; | |
| FILETIME LastSyncTime; | |
| } NLM_USAGE_DATA; | |
| typedef struct NLM_DATAPLAN_STATUS | |
| { | |
| GUID InterfaceGuid; | |
| NLM_USAGE_DATA UsageData; | |
| DWORD DataLimitInMegabytes; | |
| DWORD InboundBandwidthInKbps; | |
| DWORD OutboundBandwidthInKbps; | |
| FILETIME NextBillingCycle; | |
| DWORD MaxTransferSizeInMegabytes; | |
| DWORD Reserved; | |
| } NLM_DATAPLAN_STATUS; | |
| [ | |
| object, | |
| pointer_default(unique), | |
| uuid(dcb00008-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface INetworkCostManager : IUnknown | |
| { | |
| HRESULT GetCost( | |
| [out] DWORD *pCost, | |
| [in, unique] NLM_SOCKADDR *pDestIPAddr); | |
| HRESULT GetDataPlanStatus( | |
| [out] NLM_DATAPLAN_STATUS *pDataPlanStatus, | |
| [in, unique] NLM_SOCKADDR *pDestIPAddr); | |
| HRESULT SetDestinationAddresses( | |
| [in] UINT32 length, | |
| [in, unique, size_is(length)] NLM_SOCKADDR *pDestIPAddrList, | |
| [in] VARIANT_BOOL bAppend); | |
| } | |
| [ | |
| object, | |
| pointer_default(unique), | |
| uuid(dcb0000a-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface INetworkConnectionCost : IUnknown | |
| { | |
| HRESULT GetCost( | |
| [out] DWORD *pCost); | |
| HRESULT GetDataPlanStatus( | |
| [out] NLM_DATAPLAN_STATUS *pDataPlanStatus); | |
| } | |
| [ | |
| object, | |
| pointer_default(unique), | |
| uuid(dcb00009-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface INetworkCostManagerEvents : IUnknown | |
| { | |
| HRESULT CostChanged( | |
| [in] DWORD newCost, | |
| [in, unique] NLM_SOCKADDR *pDestAddr); | |
| HRESULT DataPlanStatusChanged( | |
| [in, unique] NLM_SOCKADDR *pDestAddr); | |
| } | |
| [ | |
| object, | |
| oleautomation, | |
| pointer_default(unique), | |
| dual, | |
| uuid(dcb00003-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface IEnumNetworks : IDispatch | |
| { | |
| [id(DISPID_NEWENUM), propget, hidden, restricted] | |
| HRESULT _NewEnum( | |
| [out, retval] IEnumVARIANT **ppEnumVar); | |
| [id(1)] | |
| HRESULT Next( | |
| [in] ULONG celt, | |
| [out, size_is(celt), length_is(*pceltFetched)] INetwork **rgelt, | |
| [in, out] ULONG *pceltFetched); | |
| [id(2)] | |
| HRESULT Skip( | |
| [in] ULONG celt); | |
| [id(3)] | |
| HRESULT Reset(); | |
| [id(4)] | |
| HRESULT Clone( | |
| [out, retval] IEnumNetworks **ppEnumNetwork); | |
| } | |
| [ | |
| object, | |
| oleautomation, | |
| pointer_default(unique), | |
| dual, | |
| uuid(dcb00006-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface IEnumNetworkConnections : IDispatch | |
| { | |
| [id(DISPID_NEWENUM), propget, hidden, restricted] | |
| HRESULT _NewEnum( | |
| [out, retval] IEnumVARIANT **ppEnumVar); | |
| [id(1)] | |
| HRESULT Next( | |
| [in] ULONG celt, | |
| [out, size_is(celt), length_is(*pceltFetched)] INetworkConnection **rgelt, | |
| [in, out] ULONG *pceltFetched); | |
| [id(2)] | |
| HRESULT Skip( | |
| [in] ULONG celt); | |
| [id(3)] | |
| HRESULT Reset(); | |
| [id(4)] | |
| HRESULT Clone( | |
| [out, retval] IEnumNetworkConnections **ppEnumNetwork); | |
| } | |
| [ | |
| dual, | |
| object, | |
| oleautomation, | |
| pointer_default(unique), | |
| uuid(dcb00000-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface INetworkListManager : IDispatch | |
| { | |
| HRESULT GetNetworks( | |
| [in] NLM_ENUM_NETWORK Flags, | |
| [out, retval] IEnumNetworks **ppEnumNetwork); | |
| HRESULT GetNetwork( | |
| [in] GUID gdNetworkId, | |
| [out, retval] INetwork **ppNetwork); | |
| HRESULT GetNetworkConnections( | |
| [out, retval] IEnumNetworkConnections **ppEnum); | |
| HRESULT GetNetworkConnection( | |
| [in] GUID gdNetworkConnectionId, | |
| [out, retval] INetworkConnection **ppNetworkConnection); | |
| HRESULT IsConnectedToInternet( | |
| [out, retval] VARIANT_BOOL *pbIsConnected); | |
| HRESULT IsConnected( | |
| [out, retval] VARIANT_BOOL *pbIsConnected); | |
| HRESULT GetConnectivity( | |
| [out, retval] NLM_CONNECTIVITY *pConnectivity); | |
| } | |
| [ | |
| threading(both), | |
| uuid(dcb00c01-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| coclass NetworkListManager { interface INetworkListManager; } | |
| [ | |
| object, | |
| oleautomation, | |
| pointer_default(unique), | |
| uuid(DCB00001-570F-4A9B-8D69-199FDBA5723B) | |
| ] | |
| interface INetworkListManagerEvents : IUnknown | |
| { | |
| HRESULT ConnectivityChanged( | |
| [in] NLM_CONNECTIVITY newConnectivity); | |
| } | |
| [ | |
| object, | |
| oleautomation, | |
| pointer_default(unique), | |
| uuid(dcb00007-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface INetworkConnectionEvents : IUnknown | |
| { | |
| typedef enum NLM_CONNECTION_PROPERTY_CHANGE | |
| { | |
| NLM_CONNECTION_PROPERTY_CHANGE_AUTHENTICATION = 1 | |
| } NLM_CONNECTION_PROPERTY_CHANGE; | |
| HRESULT NetworkConnectionConnectivityChanged( | |
| [in] GUID connectionId, | |
| [in] NLM_CONNECTIVITY newConnectivity); | |
| HRESULT NetworkConnectionPropertyChanged( | |
| [in] GUID connectionId, | |
| [in] NLM_CONNECTION_PROPERTY_CHANGE flags); | |
| } | |
| [ | |
| object, | |
| oleautomation, | |
| pointer_default(unique), | |
| dual, | |
| uuid(dcb00005-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface INetworkConnection : IDispatch | |
| { | |
| [id(1)] | |
| HRESULT GetNetwork( | |
| [out, retval] INetwork **ppNetwork); | |
| [propget, id(2)] | |
| HRESULT IsConnectedToInternet( | |
| [out, retval] VARIANT_BOOL *pbIsConnected); | |
| [propget, id(3)] | |
| HRESULT IsConnected( | |
| [out, retval] VARIANT_BOOL *pbIsConnected); | |
| [id(4)] | |
| HRESULT GetConnectivity( | |
| [out, retval] NLM_CONNECTIVITY *pConnectivity); | |
| [id(5)] | |
| HRESULT GetConnectionId( | |
| [out, retval] GUID *pgdConnectionId); | |
| [id(6)] | |
| HRESULT GetAdapterId( | |
| [out, retval] GUID *pgdAdapterId); | |
| [id(7)] | |
| HRESULT GetDomainType( | |
| [out, retval] NLM_DOMAIN_TYPE *pDomainType); | |
| } | |
| [ | |
| object, | |
| oleautomation, | |
| pointer_default(unique), | |
| dual, | |
| uuid(dcb00002-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface INetwork : IDispatch | |
| { | |
| typedef enum NLM_NETWORK_CATEGORY | |
| { | |
| NLM_NETWORK_CATEGORY_PUBLIC = 0x00, | |
| NLM_NETWORK_CATEGORY_PRIVATE = 0x01, | |
| NLM_NETWORK_CATEGORY_DOMAIN_AUTHENTICATED = 0x02 | |
| } NLM_NETWORK_CATEGORY; | |
| [id(1)] | |
| HRESULT GetName( | |
| [out, string, retval] BSTR *pszNetworkName); | |
| [id(2)] | |
| HRESULT SetName( | |
| [in, string] BSTR szNetworkNewName); | |
| [id(3)] | |
| HRESULT GetDescription( | |
| [out, string, retval] BSTR *pszDescription); | |
| [id(4)] | |
| HRESULT SetDescription( | |
| [in, string] BSTR szDescription); | |
| [id(5)] | |
| HRESULT GetNetworkId( | |
| [out, retval] GUID *pgdGuidNetworkId); | |
| [id(6)] | |
| HRESULT GetDomainType( | |
| [out, retval] NLM_DOMAIN_TYPE *pNetworkType); | |
| [id(7)] | |
| HRESULT GetNetworkConnections( | |
| [out, retval] IEnumNetworkConnections **ppEnumNetworkConnection); | |
| [id(8)] | |
| HRESULT GetTimeCreatedAndConnected( | |
| [out] DWORD *pdwLowDateTimeCreated, | |
| [out] DWORD *pdwHighDateTimeCreated, | |
| [out] DWORD *pdwLowDateTimeConnected, | |
| [out] DWORD *pdwHighDateTimeConnected); | |
| [propget, id(9)] | |
| HRESULT IsConnectedToInternet( | |
| [out, retval] VARIANT_BOOL *pbIsConnected); | |
| [propget, id(10)] | |
| HRESULT IsConnected( | |
| [out, retval] VARIANT_BOOL *pbIsConnected); | |
| [id(11)] | |
| HRESULT GetConnectivity( | |
| [out, retval] NLM_CONNECTIVITY *pConnectivity); | |
| [id(12)] | |
| HRESULT GetCategory( | |
| [out, retval] NLM_NETWORK_CATEGORY *pCategory); | |
| [id(13)] | |
| HRESULT SetCategory( | |
| [in] NLM_NETWORK_CATEGORY NewCategory); | |
| } | |
| [ | |
| object, | |
| oleautomation, | |
| pointer_default(unique), | |
| uuid(dcb00004-570f-4a9b-8d69-199fdba5723b) | |
| ] | |
| interface INetworkEvents : IUnknown | |
| { | |
| typedef enum NLM_NETWORK_PROPERTY_CHANGE | |
| { | |
| NLM_NETWORK_PROPERTY_CHANGE_CONNECTION = 0x01, | |
| NLM_NETWORK_PROPERTY_CHANGE_DESCRIPTION = 0x02, | |
| NLM_NETWORK_PROPERTY_CHANGE_NAME = 0x04, | |
| NLM_NETWORK_PROPERTY_CHANGE_ICON = 0x08, | |
| NLM_NETWORK_PROPERTY_CHANGE_CATEGORY_VALUE = 0x10 | |
| } NLM_NETWORK_PROPERTY_CHANGE; | |
| HRESULT NetworkAdded ( | |
| [in] GUID networkId); | |
| HRESULT NetworkDeleted ( | |
| [in] GUID networkId); | |
| HRESULT NetworkConnectivityChanged ( | |
| [in] GUID networkId, | |
| [in] NLM_CONNECTIVITY newConnectivity); | |
| HRESULT NetworkPropertyChanged( | |
| [in] GUID networkId, | |
| [in] NLM_NETWORK_PROPERTY_CHANGE flags); | |
| } |