/* * * Copyright 2014 Alistair Leslie-Hughes * * 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 "unknwn.idl"; import "wtypes.idl"; #ifndef __WIDL__ #define threading(model) #define progid(str) #define vi_progid(str) #endif cpp_quote("#define NETCFG_E_ALREADY_INITIALIZED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA020)") cpp_quote("#define NETCFG_E_NO_WRITE_LOCK MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA024)") [ local, object, uuid(c0e8ae99-306e-11d1-aacf-00805fc1270e), pointer_default(unique) ] interface INetCfgComponent : IUnknown { typedef enum tagCOMPONENT_CHARACTERISTICS { NCF_VIRTUAL = 0x00000001, NCF_SOFTWARE_ENUMERATED = 0x00000002, NCF_PHYSICAL = 0x00000004, NCF_HIDDEN = 0x00000008, NCF_NO_SERVICE = 0x00000010, NCF_NOT_USER_REMOVABLE = 0x00000020, NCF_MULTIPORT_INSTANCED_ADAPTER = 0x00000040, NCF_HAS_UI = 0x00000080, NCF_SINGLE_INSTANCE = 0x00000100, NCF_FILTER = 0x00000400, NCF_DONTEXPOSELOWER = 0x00001000, NCF_HIDE_BINDING = 0x00002000, NCF_NDIS_PROTOCOL = 0x00004000, NCF_FIXED_BINDING = 0x00020000, NCF_LW_FILTER = 0x00040000 } COMPONENT_CHARACTERISTICS; typedef enum tagNCRP_FLAGS { NCRP_QUERY_PROPERTY_UI = 0x00000001, NCRP_SHOW_PROPERTY_UI = 0x00000002 } NCRP_FLAGS; HRESULT GetDisplayName ([out] LPWSTR* ppszwDisplayName); HRESULT SetDisplayName ([in] LPCWSTR pszwDisplayName); HRESULT GetHelpText ([out] LPWSTR* pszwHelpText); HRESULT GetId ([out] LPWSTR* ppszwId); HRESULT GetCharacteristics ([out] LPDWORD pdwCharacteristics); HRESULT GetInstanceGuid ([out] GUID* pGuid); HRESULT GetPnpDevNodeId ([out] LPWSTR* ppszwDevNodeId); HRESULT GetClassGuid ([out] GUID* pGuid); HRESULT GetBindName ([out] LPWSTR* ppszwBindName); HRESULT GetDeviceStatus ([out] ULONG* pulStatus); HRESULT OpenParamKey ([out] HKEY* phkey); HRESULT RaisePropertyUi ([in] HWND hwndParent, [in] DWORD dwFlags, [in] IUnknown* punkContext); } [ local, object, uuid(c0e8ae92-306e-11d1-aacf-00805fc1270e), pointer_default(unique) ] interface IEnumNetCfgComponent : IUnknown { HRESULT Next ([in] ULONG celt, [out] INetCfgComponent** rgelt, [out] ULONG *pceltFetched); HRESULT Skip ([in] ULONG celt); HRESULT Reset (); HRESULT Clone ([out] IEnumNetCfgComponent** ppenum); } [ local, object, uuid(c0e8ae9f-306e-11d1-aacf-00805fc1270e), pointer_default(unique) ] interface INetCfgLock : IUnknown { HRESULT AcquireWriteLock ([in] DWORD cmsTimeout, [in] LPCWSTR pszwClientDescription, [out] LPWSTR* ppszwClientDescription); HRESULT ReleaseWriteLock (); HRESULT IsWriteLocked ([out] LPWSTR* ppszwClientDescription); } [ local, object, uuid(c0e8ae93-306e-11d1-aacf-00805fc1270e), pointer_default(unique) ] interface INetCfg : IUnknown { HRESULT Initialize ([in] PVOID pvReserved); HRESULT Uninitialize (); HRESULT Apply (); HRESULT Cancel (); HRESULT EnumComponents ([in] const GUID* pguidClass, [out] IEnumNetCfgComponent** ppenumComponent); HRESULT FindComponent ([in] LPCWSTR pszwInfId, [out] INetCfgComponent** pComponent); HRESULT QueryNetCfgClass ([in] const GUID* pguidClass, [in] REFIID riid,[out] void** ppvObject); } [ helpstring("Network Configuration Component Object"), threading(both), uuid(5b035261-40f9-11d1-aaec-00805fc1270e) ] coclass CNetCfg { [default] interface INetCfg; }