19#define BUFFER_SIZE 128
21#define DISPLAY_ADRESSES 0x1
22#define DISPLAY_DNS 0x2
24#define SOURCE_UNCHANGED 0
25#define SOURCE_STATIC 1
30#define REGISTER_NONE 1
31#define REGISTER_PRIMARY 2
32#define REGISTER_BOTH 3
106 INetCfg *pNetCfg =
NULL;
107 INetCfgLock *pNetCfgLock =
NULL;
108 INetCfgClass *pNetCfgClass =
NULL;
109 INetCfgComponent *pTcpipComponent =
NULL;
110 INetCfgComponentPrivate *pTcpipComponentPrivate =
NULL;
111 ITcpipProperties *pTcpipProperties =
NULL;
116 DPRINT(
"GetInterfaceProperties()\n");
121 DPRINT1(
"CoInitialize failed\n");
127 CLSCTX_INPROC_SERVER,
132 DPRINT1(
"CoCreateInstance failed\n");
139 (
PVOID*)&pNetCfgLock);
142 DPRINT1(
"QueryInterface failed\n");
151 DPRINT1(
"AcquireWriteLock failed\n");
161 DPRINT1(
"Initialize failed\n");
167 GUID ClassGuid = GUID_DEVCLASS_NETTRANS;
171 DPRINT1(
"INetCfg_QueryNetCfgClass failed!\n");
178 DPRINT1(
"INetCfgClass_FindComponent failed\n");
185 DPRINT1(
"INetCfgComponent_QueryInterface failed\n");
192 DPRINT1(
"INetCfgComponentPrivate_Unknown1 failed\n");
200 DPRINT1(
"ITcpipProperties_Unknown1 failed\n");
204 DPRINT(
"pInfo: %p\n", pInfo);
213 *ppProperties = pInfo;
218 if (pTcpipProperties)
221 if (pTcpipComponentPrivate)
224 if (pTcpipComponent !=
NULL)
227 if (pNetCfgClass !=
NULL)
236 if (pNetCfgLock !=
NULL)
244 DPRINT(
"GetInterfaceProperties() done!\n");
256 INetCfg *pNetCfg =
NULL;
257 INetCfgLock *pNetCfgLock =
NULL;
258 INetCfgClass *pNetCfgClass =
NULL;
259 INetCfgComponent *pTcpipComponent =
NULL;
260 INetCfgComponentPrivate *pTcpipComponentPrivate =
NULL;
261 ITcpipProperties *pTcpipProperties =
NULL;
266 DPRINT(
"SetInterfaceProperties()\n");
276 DPRINT1(
"CoInitialize failed\n");
282 CLSCTX_INPROC_SERVER,
287 DPRINT1(
"CoCreateInstance failed\n");
294 (
PVOID*)&pNetCfgLock);
297 DPRINT1(
"QueryInterface failed\n");
306 DPRINT1(
"AcquireWriteLock failed\n");
316 DPRINT1(
"Initialize failed\n");
322 GUID ClassGuid = GUID_DEVCLASS_NETTRANS;
326 DPRINT1(
"INetCfg_QueryNetCfgClass failed!\n");
333 DPRINT1(
"INetCfgClass_FindComponent failed\n");
340 DPRINT1(
"INetCfgComponent_QueryInterface failed\n");
347 DPRINT1(
"INetCfgComponentPrivate_Unknown1 failed\n");
354 DPRINT1(
"ITcpipProperties_Unknown2 failed\n");
361 DPRINT1(
"INetCfg_Apply failed\n");
366 if (pTcpipProperties)
369 if (pTcpipComponentPrivate)
372 if (pTcpipComponent !=
NULL)
375 if (pNetCfgClass !=
NULL)
384 if (pNetCfgLock !=
NULL)
392 DPRINT(
"SetInterfaceProperties() done!\n");
407 pToken =
wcsstr(pszParameters, pszParameter);
442 PWSTR pToken, pStart, pEnd;
444 pToken =
wcsstr(pszParameters, pszParameter);
469 PWSTR pToken, pStart, pEnd, pValStart, pValEnd;
471 pToken =
wcsstr(pszParameters, pszParameter);
479 pStart = pToken +
wcslen(pszParameter) + 1;
490 if ((pValStart >= pStart) & (pValStart < pEnd))
493 if (*pValEnd ==
L',')
495 else if ((*pValEnd ==
L';') && (*(pValStart - 1) ==
L','))
541 DPRINT(
"IpAddAddress()\n");
546 if (pdwTagType ==
NULL)
560 DPRINT1(
"MatchTagsInCmdLine() failed (Error %lu)\n", dwError);
567 DPRINT(
"Tag %lu: %lu\n",
i, pdwTagType[
i]);
569 switch (pdwTagType[
i])
578 DPRINT1(
"NhGetGuidFromInterfaceName() failed (Error %lu)\n", dwError);
586 DPRINT(
"Interface: {%08lx-%04hx-%04hx-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
587 InterfaceGUID.Data1, InterfaceGUID.Data2, InterfaceGUID.Data3, InterfaceGUID.Data4[0], InterfaceGUID.Data4[1],
588 InterfaceGUID.Data4[2], InterfaceGUID.Data4[3], InterfaceGUID.Data4[4], InterfaceGUID.Data4[5], InterfaceGUID.Data4[6], InterfaceGUID.Data4[7]);
600 DPRINT(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
604 pttTags[pdwTagType[
i]].pwszTag);
608 DPRINT(
"IP Address: %u.%u.%u.%u\n",
611 DPRINT(
"IP Address: %S\n", pszAddress);
623 DPRINT(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
627 pttTags[pdwTagType[
i]].pwszTag);
631 DPRINT(
"Subnet Mask: %u.%u.%u.%u\n",
632 Mask.S_un.S_un_b.s_b1,
Mask.S_un.S_un_b.s_b2,
Mask.S_un.S_un_b.s_b3,
Mask.S_un.S_un_b.s_b4);
634 DPRINT(
"Subnat Mask: %S\n", pszMask);
646 DPRINT(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
650 pttTags[pdwTagType[
i]].pwszTag);
655 DPRINT(
"Gateway: %u.%u.%u.%u\n",
671 DPRINT(
"Metric: %lu\n", dwMetric);
676 DPRINT1(
"Unknown tag type %lu\n", pdwTagType[
i]);
690 if (bHaveName ==
FALSE)
694 if ((bHaveAddress && !bHaveMask) ||
695 (!bHaveAddress && bHaveMask))
699 if ((bHaveGateway && !bHaveMetric) ||
700 (!bHaveGateway && bHaveMetric))
712 if (pszAddress && pszMask)
724 if (pszNewIpAddress ==
NULL)
732 wcscat(pszNewIpAddress, pszAddress);
736 if (pszNewSubnetMask ==
NULL)
743 wcscat(pszNewSubnetMask,
L",");
744 wcscat(pszNewSubnetMask, pszMask);
747 if (pszGateway && pszGwMetric)
753 if (pszNewParameters ==
NULL)
775 if (pszNewSubnetMask)
778 if (pszNewParameters)
784 DPRINT(
"IpAddAddress() done (Error %lu)\n", dwError);
824 if (pdwTagType ==
NULL)
838 DPRINT1(
"MatchTagsInCmdLine() failed (Error %lu)\n", dwError);
845 DPRINT1(
"Tag %lu: %lu\n",
i, pdwTagType[
i]);
847 switch (pdwTagType[
i])
856 DPRINT1(
"NhGetGuidFromInterfaceName() failed (Error %lu)\n", dwError);
864 DPRINT1(
"Interface: {%08lx-%04hx-%04hx-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
865 InterfaceGUID.Data1, InterfaceGUID.Data2, InterfaceGUID.Data3, InterfaceGUID.Data4[0], InterfaceGUID.Data4[1],
866 InterfaceGUID.Data4[2], InterfaceGUID.Data4[3], InterfaceGUID.Data4[4], InterfaceGUID.Data4[5], InterfaceGUID.Data4[6], InterfaceGUID.Data4[7]);
878 DPRINT1(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
882 pttTags[pdwTagType[
i]].pwszTag);
886 DPRINT1(
"IP Address: %u.%u.%u.%u\n",
889 DPRINT1(
"IP Address: %S\n", pszAddress);
898 if ((dwIndex == 0) || (dwIndex > 999))
903 DPRINT1(
"Index: %lu\n", dwIndex);
908 DPRINT1(
"Unknown tag type %lu\n", pdwTagType[
i]);
922 if (bHaveName ==
FALSE)
941 if (pszNewParameters ==
NULL)
958 if (pszNewParameters)
964 DPRINT(
"IpAddDns() done (Error %lu)\n", dwError);
999 DPRINT(
"IpDeleteAddress()\n");
1004 if (pdwTagType ==
NULL)
1018 DPRINT1(
"MatchTagsInCmdLine() failed (Error %lu)\n", dwError);
1025 DPRINT(
"Tag %lu: %lu\n",
i, pdwTagType[
i]);
1027 switch (pdwTagType[
i])
1036 DPRINT1(
"NhGetGuidFromInterfaceName() failed (Error %lu)\n", dwError);
1044 DPRINT(
"Interface: {%08lx-%04hx-%04hx-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
1045 InterfaceGUID.Data1, InterfaceGUID.Data2, InterfaceGUID.Data3, InterfaceGUID.Data4[0], InterfaceGUID.Data4[1],
1046 InterfaceGUID.Data4[2], InterfaceGUID.Data4[3], InterfaceGUID.Data4[4], InterfaceGUID.Data4[5], InterfaceGUID.Data4[6], InterfaceGUID.Data4[7]);
1058 DPRINT(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
1062 pttTags[pdwTagType[
i]].pwszTag);
1066 DPRINT(
"IP Address: %u.%u.%u.%u\n",
1069 DPRINT(
"IP Address: %S\n", pszAddress);
1070 bHaveAddress =
TRUE;
1081 DPRINT(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
1085 pttTags[pdwTagType[
i]].pwszTag);
1090 DPRINT(
"Gateway: %u.%u.%u.%u\n",
1092 bHaveGateway =
TRUE;
1096 DPRINT1(
"Unknown tag type %lu\n", pdwTagType[
i]);
1110 if (bHaveName ==
FALSE)
1122 if (bHaveAddress && pszAddress)
1133 if (pszNewIpAddress ==
NULL)
1144 if (pszNewSubnetMask ==
NULL)
1155 if (bHaveGateway && pszGateway)
1161 if (pszNewParameters ==
NULL)
1172 NewProperties.
dwDhcp = 0;
1180 if (pszNewIpAddress)
1183 if (pszNewSubnetMask)
1186 if (pszNewParameters)
1192 DPRINT(
"IpDeleteAddress() done (Error %lu)\n", dwError);
1217 DPRINT(
"IpDeleteArpCache()\n");
1222 if (pdwTagType ==
NULL)
1236 DPRINT1(
"MatchTagsInCmdLine() failed (Error %lu)\n", dwError);
1243 DPRINT(
"Tag %lu: %lu\n",
i, pdwTagType[
i]);
1245 switch (pdwTagType[
i])
1254 DPRINT(
"NhGetGuidFromInterfaceName() failed (Error %lu)\n", dwError);
1262 DPRINT(
"Interface: {%08lx-%04hx-%04hx-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
1263 InterfaceGUID.Data1, InterfaceGUID.Data2, InterfaceGUID.Data3, InterfaceGUID.Data4[0], InterfaceGUID.Data4[1],
1264 InterfaceGUID.Data4[2], InterfaceGUID.Data4[3], InterfaceGUID.Data4[4], InterfaceGUID.Data4[5], InterfaceGUID.Data4[6], InterfaceGUID.Data4[7]);
1268 DPRINT1(
"Unknown tag type %lu\n", pdwTagType[
i]);
1286 DPRINT1(
"NhpAllocateAndGetInterfaceInfoFromStack() failed (Error %lu)\n", dwError);
1290 DPRINT(
"\nEntries: %lu\n", dwCount);
1292 for (
i = 0;
i < dwCount;
i++)
1312 DPRINT(
"IpDeleteArpCache() done (Error %lu)\n", dwError);
1352 if (pdwTagType ==
NULL)
1366 DPRINT1(
"MatchTagsInCmdLine() failed (Error %lu)\n", dwError);
1373 DPRINT1(
"Tag %lu: %lu\n",
i, pdwTagType[
i]);
1375 switch (pdwTagType[
i])
1384 DPRINT1(
"NhGetGuidFromInterfaceName() failed (Error %lu)\n", dwError);
1392 DPRINT1(
"Interface: {%08lx-%04hx-%04hx-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
1393 InterfaceGUID.Data1, InterfaceGUID.Data2, InterfaceGUID.Data3, InterfaceGUID.Data4[0], InterfaceGUID.Data4[1],
1394 InterfaceGUID.Data4[2], InterfaceGUID.Data4[3], InterfaceGUID.Data4[4], InterfaceGUID.Data4[5], InterfaceGUID.Data4[6], InterfaceGUID.Data4[7]);
1418 DPRINT1(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
1422 pttTags[pdwTagType[
i]].pwszTag);
1427 DPRINT1(
"IP Address: %u.%u.%u.%u\n",
1430 DPRINT1(
"IP Address: %S\n", pszAddress);
1432 bHaveAddress =
TRUE;
1436 DPRINT1(
"Unknown tag type %lu\n", pdwTagType[
i]);
1450 if (bHaveName ==
FALSE)
1469 if (pszNewParameters ==
NULL)
1478 NewProperties.
dwDhcp = 0;
1486 if (pszNewParameters)
1492 DPRINT(
"IpDeleteDns() done (Error %lu)\n", dwError);
1534 DPRINT(
"IpSetAddress()\n");
1539 if (pdwTagType ==
NULL)
1553 DPRINT1(
"MatchTagsInCmdLine() failed (Error %lu)\n", dwError);
1560 DPRINT(
"Tag %lu: %lu\n",
i, pdwTagType[
i]);
1562 switch (pdwTagType[
i])
1571 DPRINT(
"NhGetGuidFromInterfaceName() failed (Error %lu)\n", dwError);
1579 DPRINT(
"Interface: {%08lx-%04hx-%04hx-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
1580 InterfaceGUID.Data1, InterfaceGUID.Data2, InterfaceGUID.Data3, InterfaceGUID.Data4[0], InterfaceGUID.Data4[1],
1581 InterfaceGUID.Data4[2], InterfaceGUID.Data4[3], InterfaceGUID.Data4[4], InterfaceGUID.Data4[5], InterfaceGUID.Data4[6], InterfaceGUID.Data4[7]);
1594 DPRINT(
"MatchEnumTag() failed (Error %lu)\n", dwError);
1598 pttTags[pdwTagType[
i]].pwszTag);
1602 DPRINT(
"Source: %lu\n", dwSource);
1614 DPRINT(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
1618 pttTags[pdwTagType[
i]].pwszTag);
1622 DPRINT(
"IP Address: %u.%u.%u.%u\n",
1625 DPRINT(
"IP Address: %S\n", pszAddress);
1626 bHaveAddress =
TRUE;
1637 DPRINT(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
1641 pttTags[pdwTagType[
i]].pwszTag);
1645 DPRINT(
"Subnet Mask: %u.%u.%u.%u\n",
1646 Mask.S_un.S_un_b.s_b1,
Mask.S_un.S_un_b.s_b2,
Mask.S_un.S_un_b.s_b3,
Mask.S_un.S_un_b.s_b4);
1648 DPRINT(
"Subnat Mask: %S\n", pszMask);
1673 DPRINT(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
1677 pttTags[pdwTagType[
i]].pwszTag);
1682 DPRINT(
"Gateway: %u.%u.%u.%u\n",
1685 bHaveGateway =
TRUE;
1693 if (dwMetric > 9999)
1699 DPRINT(
"Metric: %lu\n", dwMetric);
1704 DPRINT1(
"Unknown tag type %lu\n", pdwTagType[
i]);
1718 if (bHaveName ==
FALSE)
1722 if ((bHaveAddress && !bHaveMask) ||
1723 (!bHaveAddress && bHaveMask))
1727 if (bHaveAddress && !bHaveSource)
1731 if ((bHaveGateway && !bHaveMetric) ||
1732 (!bHaveGateway && bHaveMetric))
1736 if ((dwSource ==
SOURCE_STATIC) && !bHaveAddress && !bHaveGateway)
1749 if (pszParameterBuffer ==
NULL)
1758 NewProperties.
dwDhcp = 0;
1766 L"DefGw=%s;GwMetric=%s;",
1767 pszGateway, pszGwMetric);
1772 L"DefGw=%s;GwMetric=%s;",
1787 NewProperties.
dwDhcp = 1;
1793 L"DefGw=%s;GwMetric=%s;",
1800 if (pszParameterBuffer)
1806 DPRINT(
"IpSetAddress() done (Error %lu)\n", dwError);
1853 if (pdwTagType ==
NULL)
1867 DPRINT1(
"MatchTagsInCmdLine() failed (Error %lu)\n", dwError);
1874 DPRINT(
"Tag %lu: %lu\n",
i, pdwTagType[
i]);
1876 switch (pdwTagType[
i])
1885 DPRINT(
"NhGetGuidFromInterfaceName() failed (Error %lu)\n", dwError);
1893 DPRINT(
"Interface: {%08lx-%04hx-%04hx-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
1894 InterfaceGUID.Data1, InterfaceGUID.Data2, InterfaceGUID.Data3, InterfaceGUID.Data4[0], InterfaceGUID.Data4[1],
1895 InterfaceGUID.Data4[2], InterfaceGUID.Data4[3], InterfaceGUID.Data4[4], InterfaceGUID.Data4[5], InterfaceGUID.Data4[6], InterfaceGUID.Data4[7]);
1908 DPRINT(
"MatchEnumTag() failed (Error %lu)\n", dwError);
1912 pttTags[pdwTagType[
i]].pwszTag);
1916 DPRINT(
"Source: %lu\n", dwSource);
1928 DPRINT(
"RtlIpv4StringToAddressW() failed (Status 0x%08lx)\n",
Status);
1932 pttTags[pdwTagType[
i]].pwszTag);
1936 DPRINT(
"IP Address: %u.%u.%u.%u\n",
1939 DPRINT(
"IP Address: %S\n", pszAddress);
1940 bHaveAddress =
TRUE;
1952 DPRINT(
"MatchEnumTag() failed (Error %lu)\n", dwError);
1956 pttTags[pdwTagType[
i]].pwszTag);
1960 DPRINT(
"Register: %lu\n", dwRegister);
1965 DPRINT1(
"Unknown tag type %lu\n", pdwTagType[
i]);
1979 if (!bHaveName || !bHaveSource)
2000 if (pszParameterBuffer ==
NULL)
2007 L"DNS=%s;DynamicUpdate=%s;NameRegistration=%s;",
2008 (pszAddress) ? pszAddress :
L"",
2020 if (pszParameterBuffer)
2039 WCHAR szFriendlyName[80];
2040 DWORD dwFriendlyNameSize;
2051 DPRINT1(
"NhpAllocateAndGetInterfaceInfoFromStack() failed (Error %lu)\n", dwError);
2055 DPRINT(
"\nEntries: %lu\n", dwCount);
2057 for (
i = 0;
i < dwCount;
i++)
2067 dwFriendlyNameSize =
sizeof(szFriendlyName);
2070 &dwFriendlyNameSize,
2074 if ((InterfaceName ==
NULL) ||
MatchToken(InterfaceName, szFriendlyName))
2091 if (pProperties->
dwDhcp == 0)
2136 if (pProperties->
dwDhcp == 0)
2280 WCHAR szFriendlyName[80];
2281 DWORD dwFriendlyNameSize;
2294 DPRINT1(
"NhpAllocateAndGetInterfaceInfoFromStack() failed (Error %lu)\n", dwError);
2304 DPRINT(
"\nEntries: %lu\n", dwCount);
2306 for (
i = 0;
i < dwCount;
i++)
2316 dwFriendlyNameSize =
sizeof(szFriendlyName);
2319 &dwFriendlyNameSize,
2343 PrintMessage(
L"set address name=\"%s\" source=static addr=%s mask=%s\n",
2357 PrintMessage(
L"set dns name=\"%s\" source=static addr=%s\n",
2392 ZeroMemory(&ContextAttributes,
sizeof(ContextAttributes));
2395 ContextAttributes.
guidHelper = GUID_IFMON_IP;
2416 GUID guidParent = GUID_IFMON_INTERFACE;
2418 DPRINT1(
"RegisterIpHelper()\n");
2420 ZeroMemory(&HelperAttributes,
sizeof(HelperAttributes));
VOID PrintMessage(DWORD dwMessage)
#define IDS_DEFAULTGATEWAY
DWORD WINAPI RegisterContext(_In_ const NS_CONTEXT_ATTRIBUTES *pChildContext)
static HINSTANCE hDllInstance
#define ERROR_NOT_ENOUGH_MEMORY
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
void WINAPI CoTaskMemFree(void *ptr)
#define ERROR_INVALID_PARAMETER
#define HeapFree(x, y, z)
static DWORD DWORD * dwLength
static DWORD WINAPI IpStart(_In_ const GUID *pguidParent, _In_ DWORD dwVersion)
static CMD_GROUP_ENTRY IpGroups[]
static HRESULT SetInterfaceProperties(GUID *InterfaceGuid, PTCPIP_PROPERTIES pProperties)
static FN_HANDLE_CMD IpSetAddress
static FN_HANDLE_CMD IpShowAddresses
static HRESULT GetInterfaceProperties(GUID *InterfaceGuid, PTCPIP_PROPERTIES *ppProperties)
static FN_HANDLE_CMD IpDeleteAddress
static FN_HANDLE_CMD IpSetDns
DWORD WINAPI RegisterIpHelper(VOID)
static BOOL DeleteParameterValue(PWSTR pszParameters, PWSTR pszParameter, PWSTR pszValue)
static DWORD IpShowAdapters(_In_ DWORD DisplayFlags, _In_ PWSTR InterfaceName)
static CMD_ENTRY IpShowCommands[]
static DWORD WINAPI IpDumpFn(_In_ LPCWSTR pwszRouter, _In_ LPWSTR *ppwcArguments, _In_ DWORD dwArgCount, _In_ LPCVOID pvData)
static FN_HANDLE_CMD IpShowConfig
static FN_HANDLE_CMD IpAddAddress
static FN_HANDLE_CMD IpDeleteArpCache
static FN_HANDLE_CMD IpReset
static PWSTR ExtractParameterValue(PWSTR pszParameters, PWSTR pszParameter)
static FN_HANDLE_CMD IpAddDns
static CMD_ENTRY IpSetCommands[]
static CMD_ENTRY IpDeleteCommands[]
static FN_HANDLE_CMD IpDeleteDns
static CMD_ENTRY IpTopCommands[]
static CMD_ENTRY IpAddCommands[]
static FN_HANDLE_CMD IpShowDns
static BOOL AppendParameterValue(PWSTR pszParameters, PWSTR pszParameter, PWSTR pszValue)
#define IDS_HLP_IP_DELETE_ADDRESS
#define IDS_GATEWAYMETRIC
#define IDS_HLP_IP_DELETE_ARPCACHE_EX
#define IDS_ERROR_ALREADY_DHCP
#define IDS_ERROR_GET_PROPERTIES
#define IDS_ERROR_BAD_VALUE
#define IDS_HLP_IP_SHOW_DNS
#define IDS_HLP_IP_DELETE_ARPCACHE
#define IDS_DUMP_IP_HEADER
#define IDS_HLP_IP_DELETE_DNS
#define IDS_HLP_IP_SET_ADDRESS
#define IDS_HLP_IP_DELETE_ADDRESS_EX
#define IDS_HLP_IP_RESET_EX
#define IDS_HLP_IP_ADD_ADDRESS
#define IDS_HLP_IP_DELETE_DNS_EX
#define IDS_HLP_IP_SHOW_DNS_EX
#define IDS_HLP_IP_SET_DNS
#define IDS_ERROR_ADD_DHCP_ADDRESS
#define IDS_DUMP_HEADERLINE
#define IDS_ERROR_INVALID_INTERFACE
#define IDS_HLP_IP_ADD_DNS_EX
#define IDS_HLP_IP_SET_ADDRESS_EX
#define IDS_HLP_IP_ADD_ADDRESS_EX
#define IDS_STATICNAMESERVER
#define IDS_ERROR_DELETE_DHCP_ADDRESS
#define IDS_HLP_IP_SET_DNS_EX
#define IDS_DUMP_IP_INTERFACE
#define IDS_HLP_IP_SHOW_CONFIG
#define IDS_HLP_IP_DELETE
#define IDS_DUMP_IP_FOOTER
#define IDS_HLP_IP_SHOW_ADDRESSES
#define IDS_INTERFACEMETRIC
#define IDS_HLP_IP_SHOW_ADDRESSES_EX
#define IDS_HLP_IP_SHOW_CONFIG_EX
#define IDS_HLP_IP_ADD_DNS
_ACRTIMP __msvcrt_ulong __cdecl wcstoul(const wchar_t *, wchar_t **, int)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP wchar_t *__cdecl wcsstr(const wchar_t *, const wchar_t *)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
DWORD WINAPI RegisterHelper(_In_ const GUID *pguidParentHelper, _In_ const NS_HELPER_ATTRIBUTES *pHelperAttributes)
DWORD WINAPI NhGetGuidFromInterfaceName(_In_ PWCHAR pInterfaceName, _Out_ GUID *pInterfaceGUID, DWORD dwUnknown3, DWORD dwUnknown4)
DWORD WINAPI FlushIpNetTable(DWORD dwIfIndex)
DWORD WINAPI NhGetInterfaceNameFromGuid(_In_ const GUID *pInterfaceGUID, _Out_writes_bytes_to_(*pOutBufLen, *pOutBufLen) PWCHAR pInterfaceName, _Inout_ PULONG pOutBufLen, DWORD dwUnknown4, DWORD dwUnknown5)
DWORD WINAPI NhpAllocateAndGetInterfaceInfoFromStack(_Inout_ IP_INTERFACE_NAME_INFO **ppTable, _Inout_ PDWORD pdwCount, _In_ BOOL bOrder, _In_ HANDLE hHeap, _In_ DWORD dwFlags)
NTSYSAPI NTSTATUS NTAPI RtlIpv4StringToAddressW(_In_ PCWSTR String, _In_ BOOLEAN Strict, _Out_ PCWSTR *Terminator, _Out_ struct in_addr *Addr)
#define ITcpipProperties_Unknown1(p, a, b)
#define ITcpipProperties_Unknown2(p, a, b)
EXTERN_C const IID IID_ITcpipProperties
#define ITcpipProperties_Release(p)
#define INetCfgComponent_QueryInterface(p, a, b)
#define INetCfg_Release(p)
#define INetCfgComponent_Release(p)
#define INetCfg_QueryInterface(p, a, b)
#define INetCfg_QueryNetCfgClass(p, a, b, c)
EXTERN_C const IID IID_INetCfgLock
EXTERN_C const IID IID_INetCfgClass
EXTERN_C const GUID CLSID_CNetCfg
#define INetCfgLock_AcquireWriteLock(p, a, b, c)
#define INetCfgLock_ReleaseWriteLock(p)
#define INetCfgClass_Release(p)
#define INetCfg_Uninitialize(p)
#define INetCfgLock_Release(p)
EXTERN_C const IID IID_INetCfg
#define INetCfgClass_FindComponent(p, a, b)
#define INetCfg_Initialize(p, a)
#define INetCfgComponentPrivate_Unknown1(p, a, b)
#define INetCfgComponentPrivate_Release(p)
EXTERN_C const IID IID_INetCfgComponentPrivate
DWORD WINAPI MatchEnumTag(_In_ HANDLE hModule, _In_ LPCWSTR pwcArg, _In_ DWORD dwNumArg, _In_ const TOKEN_VALUE *pEnumTable, _Out_ PDWORD pdwValue)
DWORD WINAPI MatchTagsInCmdLine(_In_ HANDLE hModule, _Inout_ LPWSTR *ppwcArguments, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _Inout_ TAG_TYPE *pttTags, _In_ DWORD dwTagCount, _Out_ DWORD *pdwTagType)
BOOL WINAPI MatchToken(_In_ LPCWSTR pwszUserToken, _In_ LPCWSTR pwszCmdToken)
DWORD CDECL PrintMessageFromModule(_In_ HANDLE hModule, _In_ DWORD dwMsgId,...)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define ERROR_SUPPRESS_OUTPUT
#define ERROR_INVALID_SYNTAX
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
_In_ LPWSTR * ppwcArguments
_In_ LPWSTR _In_ DWORD dwArgCount
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD _In_ LPCVOID _Out_ BOOL * pbDone
_In_ LPWSTR _In_ DWORD dwCurrentIndex
_In_opt_ LPCSTR _In_opt_ LPCSTR pszValue
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
CMD_GROUP_ENTRY * pCmdGroups
PNS_CONTEXT_DUMP_FN pfnDumpFn
PNS_HELPER_STOP_FN pfnStop
PNS_HELPER_START_FN pfnStart
struct in_addr::@1123::@1124 S_un_b
union in_addr::@1123 S_un
static const EHCI_PERIOD pTable[]
_In_ WDFCOLLECTION _In_ ULONG Index
static const GUID InterfaceGuid