headers: add netcfgx.idl

Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am
index 68221f1..dec5eba 100644
--- a/mingw-w64-headers/Makefile.am
+++ b/mingw-w64-headers/Makefile.am
@@ -164,6 +164,7 @@
   include/napsystemhealthagent.idl \
   include/napsystemhealthvalidator.idl \
   include/naptypes.idl \
+  include/netcfgx.idl \
   include/netfw.idl \
   include/netlistmgr.idl \
   include/objectarray.idl \
diff --git a/mingw-w64-headers/include/netcfgx.idl b/mingw-w64-headers/include/netcfgx.idl
new file mode 100644
index 0000000..7e453a8
--- /dev/null
+++ b/mingw-w64-headers/include/netcfgx.idl
@@ -0,0 +1,249 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+cpp_quote("#include <winapifamily.h>")
+
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+import "wtypes.idl";
+import "prsht.idl";
+#endif
+
+cpp_quote("")
+cpp_quote("#define NETCFG_E_ALREADY_INITIALIZED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa020)")
+cpp_quote("#define NETCFG_E_NOT_INITIALIZED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa021)")
+cpp_quote("#define NETCFG_E_IN_USE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa022)")
+cpp_quote("#define NETCFG_E_NO_WRITE_LOCK MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa024)")
+cpp_quote("#define NETCFG_E_NEED_REBOOT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa025)")
+cpp_quote("#define NETCFG_E_ACTIVE_RAS_CONNECTIONS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa026)")
+cpp_quote("#define NETCFG_E_ADAPTER_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa027)")
+cpp_quote("#define NETCFG_E_COMPONENT_REMOVED_PENDING_REBOOT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa028)")
+cpp_quote("#define NETCFG_E_MAX_FILTER_LIMIT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa029)")
+cpp_quote("#define NETCFG_E_VMSWITCH_ACTIVE_OVER_ADAPTER MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa02a)")
+cpp_quote("#define NETCFG_E_DUPLICATE_INSTANCEID MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xa02b)")
+
+cpp_quote("")
+cpp_quote("#define NETCFG_S_REBOOT MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0xa020)")
+cpp_quote("#define NETCFG_S_DISABLE_QUERY MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0xa022)")
+cpp_quote("#define NETCFG_S_STILL_REFERENCED MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0xa023)")
+cpp_quote("#define NETCFG_S_CAUSED_SETUP_CHANGE MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0xa024)")
+cpp_quote("#define NETCFG_S_COMMIT_NOW MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0xa025)")
+
+cpp_quote("")
+cpp_quote("#define NETCFG_CLIENT_CID_MS_MSClient TEXT(\"ms_msclient\")")
+cpp_quote("#define NETCFG_SERVICE_CID_MS_SERVER TEXT(\"ms_server\")")
+cpp_quote("#define NETCFG_SERVICE_CID_MS_NETBIOS TEXT(\"ms_netbios\")")
+cpp_quote("#define NETCFG_SERVICE_CID_MS_PSCHED TEXT(\"ms_pschedpc\")")
+cpp_quote("#define NETCFG_SERVICE_CID_MS_WLBS TEXT(\"ms_wlbs\")")
+cpp_quote("#define NETCFG_TRANS_CID_MS_APPLETALK TEXT(\"ms_appletalk\")")
+cpp_quote("#define NETCFG_TRANS_CID_MS_NETBEUI TEXT(\"ms_netbeui\")")
+cpp_quote("#define NETCFG_TRANS_CID_MS_NETMON TEXT(\"ms_netmon\")")
+cpp_quote("#define NETCFG_TRANS_CID_MS_NWIPX TEXT(\"ms_nwipx\")")
+cpp_quote("#define NETCFG_TRANS_CID_MS_NWSPX TEXT(\"ms_nwspx\")")
+cpp_quote("#define NETCFG_TRANS_CID_MS_TCPIP TEXT(\"ms_tcpip\")")
+
+cpp_quote("")
+interface IEnumNetCfgBindingInterface;
+interface IEnumNetCfgBindingPath;
+interface IEnumNetCfgComponent;
+interface INetCfg;
+interface INetCfgProperties;
+interface INetCfgLock;
+interface INetCfgBindingInterface;
+interface INetCfgBindingPath;
+interface INetCfgComponentBindings;
+interface INetCfgBindingPath;
+interface INetCfgClass;
+interface INetCfgComponent;
+interface INetCfgIdentification;
+interface INetCfgClassSetup;
+interface INetCfgClassSetup2;
+
+cpp_quote("")
+[local, object, uuid(c0e8ae90-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface IEnumNetCfgBindingInterface : IUnknown {
+  HRESULT Next ([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] INetCfgBindingInterface **rgelt, [out] ULONG *pceltFetched);
+  HRESULT Skip ([in] ULONG celt);
+  HRESULT Reset ();
+  HRESULT Clone ([out] IEnumNetCfgBindingInterface **ppenum);
+};
+
+cpp_quote("")
+[local, object, uuid(c0e8ae91-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface IEnumNetCfgBindingPath : IUnknown {
+  HRESULT Next ([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] INetCfgBindingPath **rgelt, [out] ULONG *pceltFetched);
+  HRESULT Skip ([in] ULONG celt);
+  HRESULT Reset ();
+  HRESULT Clone ([out] IEnumNetCfgBindingPath **ppenum);
+};
+
+cpp_quote("")
+[local, object, uuid(c0e8ae92-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface IEnumNetCfgComponent : IUnknown {
+  HRESULT Next ([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] INetCfgComponent **rgelt, [out] ULONG *pceltFetched);
+  HRESULT Skip ([in] ULONG celt);
+  HRESULT Reset ();
+  HRESULT Clone ([out] IEnumNetCfgComponent **ppenum);
+};
+
+cpp_quote("")
+[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, string] LPCWSTR pszwInfId, [out] INetCfgComponent **pComponent);
+  HRESULT QueryNetCfgClass ([in] const GUID *pguidClass, [in] REFIID riid, [out, iid_is(riid)] void **ppvObject);
+};
+
+cpp_quote("")
+[threading(both), uuid(5b035261-40f9-11d1-aaec-00805fc1270e)]
+coclass CNetCfg {
+  [default] interface INetCfg;
+}
+
+cpp_quote("")
+[local, object, uuid(c0e8ae9f-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface INetCfgLock : IUnknown {
+  HRESULT AcquireWriteLock ([in] DWORD cmsTimeout, [in, string] LPCWSTR pszwClientDescription, [out, string] LPWSTR *ppszwClientDescription);
+  HRESULT ReleaseWriteLock ();
+  HRESULT IsWriteLocked ([out, string] LPWSTR *ppszwClientDescription);
+};
+
+cpp_quote("")
+[local, object, uuid(c0e8ae94-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface INetCfgBindingInterface : IUnknown {
+  HRESULT GetName ([out, string] LPWSTR *ppszwInterfaceName);
+  HRESULT GetUpperComponent ([out] INetCfgComponent **ppnccItem);
+  HRESULT GetLowerComponent ([out] INetCfgComponent **ppnccItem);
+};
+
+cpp_quote("")
+[local, object, uuid(c0e8ae96-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface INetCfgBindingPath : IUnknown {
+  HRESULT IsSamePathAs ([in] INetCfgBindingPath *pPath);
+  HRESULT IsSubPathOf ([in] INetCfgBindingPath *pPath);
+  HRESULT IsEnabled ();
+  HRESULT Enable ([in] WINBOOL fEnable);
+  HRESULT GetPathToken([out, string] LPWSTR *ppszwPathToken);
+  HRESULT GetOwner ([out] INetCfgComponent **ppComponent);
+  HRESULT GetDepth ([out] ULONG *pcInterfaces);
+  HRESULT EnumBindingInterfaces ([out] IEnumNetCfgBindingInterface **ppenumInterface);
+};
+
+cpp_quote("")
+[local, object, uuid(c0e8ae97-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface INetCfgClass : IUnknown {
+  HRESULT FindComponent ([in, string] LPCWSTR pszwInfId, [out] INetCfgComponent **ppnccItem);
+  HRESULT EnumComponents ([out] IEnumNetCfgComponent **ppenumComponent);
+};
+
+cpp_quote("")
+[local, object, uuid(c0e8ae9d-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface INetCfgClassSetup : IUnknown {
+  typedef enum tagOBO_TOKEN_TYPE {
+    OBO_USER = 1,
+    OBO_COMPONENT = 2,
+    OBO_SOFTWARE = 3
+  } OBO_TOKEN_TYPE;
+
+  typedef struct tagOBO_TOKEN {
+    OBO_TOKEN_TYPE Type;
+    INetCfgComponent *pncc;
+    LPCWSTR pszwManufacturer;
+    LPCWSTR pszwProduct;
+    LPCWSTR pszwDisplayName;
+    WINBOOL fRegistered;
+  } OBO_TOKEN;
+
+  HRESULT SelectAndInstall ([in] HWND hwndParent, [in] OBO_TOKEN *pOboToken, [out] INetCfgComponent **ppnccItem);
+  HRESULT Install ([in, string] LPCWSTR pszwInfId, [in] OBO_TOKEN *pOboToken, [in] DWORD dwSetupFlags, [in] DWORD dwUpgradeFromBuildNo, [in, string] LPCWSTR pszwAnswerFile, [in, string] LPCWSTR pszwAnswerSections, [out] INetCfgComponent **ppnccItem);
+  HRESULT DeInstall ([in] INetCfgComponent *pComponent, [in] OBO_TOKEN *pOboToken, [out] LPWSTR *pmszwRefs);
+};
+
+cpp_quote("")
+[local, object, uuid(c0e8aea0-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface INetCfgClassSetup2: INetCfgClassSetup {
+  HRESULT UpdateNonEnumeratedComponent ([in] INetCfgComponent *pIComp, [in] DWORD dwSetupFlags, [in] DWORD dwUpgradeFromBuildNo);
+};
+
+cpp_quote("")
+[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, string] LPWSTR *ppszwDisplayName);
+  HRESULT SetDisplayName ([in, string] LPCWSTR pszwDisplayName);
+  HRESULT GetHelpText ([out, string] LPWSTR *pszwHelpText);
+  HRESULT GetId ([out, string] LPWSTR *ppszwId);
+  HRESULT GetCharacteristics ([out] LPDWORD pdwCharacteristics);
+  HRESULT GetInstanceGuid ([out] GUID *pGuid);
+  HRESULT GetPnpDevNodeId ([out, string] LPWSTR *ppszwDevNodeId);
+  HRESULT GetClassGuid ([out] GUID *pGuid);
+  HRESULT GetBindName ([out, string] LPWSTR *ppszwBindName);
+  HRESULT GetDeviceStatus ([out] ULONG *pulStatus);
+  HRESULT OpenParamKey ([out] HKEY *phkey);
+  HRESULT RaisePropertyUi ([in] HWND hwndParent, [in] DWORD dwFlags, [in] IUnknown *punkContext);
+};
+
+cpp_quote("")
+[local, object, uuid(c0e8ae9e-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface INetCfgComponentBindings : IUnknown {
+  typedef enum tagSUPPORTS_BINDING_INTERFACE_FLAGS {
+    NCF_LOWER = 0x01,
+    NCF_UPPER = 0x02
+  } SUPPORTS_BINDING_INTERFACE_FLAGS;
+
+  typedef enum tagENUM_BINDING_PATHS_FLAGS {
+    EBP_ABOVE = 0x01,
+    EBP_BELOW = 0x02
+  } ENUM_BINDING_PATHS_FLAGS;
+
+  HRESULT BindTo ([in] INetCfgComponent *pnccItem);
+  HRESULT UnbindFrom ([in] INetCfgComponent *pnccItem);
+  HRESULT SupportsBindingInterface ([in] DWORD dwFlags, [in] LPCWSTR pszwInterfaceName);
+  HRESULT IsBoundTo ([in] INetCfgComponent *pnccItem);
+  HRESULT IsBindableTo ([in] INetCfgComponent *pnccItem);
+  HRESULT EnumBindingPaths ([in] DWORD dwFlags, [out] IEnumNetCfgBindingPath **ppIEnum);
+  HRESULT MoveBefore ([in] INetCfgBindingPath *pncbItemSrc, [in] INetCfgBindingPath *pncbItemDest);
+  HRESULT MoveAfter ([in] INetCfgBindingPath *pncbItemSrc, [in] INetCfgBindingPath *pncbItemDest);
+};
+
+cpp_quote("")
+[local, object, uuid(c0e8ae98-306e-11d1-aacf-00805fc1270e), pointer_default(unique)]
+interface INetCfgSysPrep : IUnknown {
+  HRESULT HrSetupSetFirstDword([in, string] LPCWSTR pwszSection, [in, string] LPCWSTR pwszKey, [in] DWORD dwValue);
+  HRESULT HrSetupSetFirstString([in, string] LPCWSTR pwszSection, [in, string] LPCWSTR pwszKey, [in, string] LPCWSTR pwszValue);
+  HRESULT HrSetupSetFirstStringAsBool([in, string] LPCWSTR pwszSection, [in, string] LPCWSTR pwszKey, [in] WINBOOL fValue);
+  HRESULT HrSetupSetFirstMultiSzField([in, string] LPCWSTR pwszSection, [in, string] LPCWSTR pwszKey, [in, string] LPCWSTR pmszValue);
+};
+
+cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")