123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440 |
- /*
- * 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);
- }
|