问题标签 [iphelper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
949 浏览

windows - 检索网络掩码信息的 IPHelper api 是什么?

我的第一个赌注是GetIpAddrTable()有示例代码,但它只支持 IPv4。然后我尝试 GetAdaptersInfo()了,但文件表明它已被GetAdaptersAddresses(). 我应该使用任何使用 GetAdaptersAdresses() 或任何其他 IP Helper API 获取网络掩码的代码示例吗?

0 投票
2 回答
2496 浏览

c++ - 在WinXP及以上版本的c++中获取无线适配器的mac地址

我想拥有以上。我找到了 IP Helper API,它可以工作。唯一的问题是,在比 Vista 更早的系统上,我无法识别适配器是无线的还是普通的以太网。我还需要支持 WinXP 和 Server 2003。

这是文档中的相关引用(IP Helper):

IEEE 802.11 无线网络接口。注意 此适配器类型在 Windows Vista 及更高版本上返回。在 Windows Server 2003 和 >Windows XP 上,IEEE 802.11 无线网络接口返回 >MIB_IF_TYPE_ETHERNET 的适配器类型。

那么在 WinXP/Server2003 及更高版本上识别无线适配器并获取其 MAC 地址的好方法是什么?

0 投票
1 回答
594 浏览

winapi - 针对 x64 时有关 GetOwnerModuleFromTcpEntry 的奇怪问题

由于我是第一次发帖,如果我无意中遗漏了任何关键信息,我深表歉意,但在这里。

背景:我正在做一些测试以找出 MIB_TCPROW_OWNER_MODULE 中未记录的成员数组“OwningModuleInfo”什么以及它如何帮助所述函数确定哪个进程拥有 TCP 端点。我得出的结论是数组中的第一项是正在运行的服务列表中服务的索引,这给我们带来了一个奇怪的问题。我在 Windows 7 上使用 Visual Studio 2012(更新 3)。测试应用程序在 UAC = requireAdministrator 下运行(但是 asInvoker 产生相同的结果)。

问题:当我以 x64 为目标时,对于 tcp 表中的某些条目,GetOwnerModuleFromTcpEntry失败并返回“126 - 找不到指定的模块。”。当我以 Win32 为目标时,这个问题就消失了。因为我知道这仅在条目归服务所有时才会发生,所以我在调用我的测试函数(现在针对 x64)之前尝试了以下虚拟调用:

现在,它工作得很好。再次取消对 OpenSCManager 的调用,但它失败了。告诉我这不是真的搞砸了吗?

  • 我已经查看了我能找到的所有编译器和链接器设置。
  • 我已经仔细检查过,所以我链接到了正确的库。
  • 我创建了一个具有相同代码的 C++/CLI 版本,它适用于 Win32 和 x64。
    • 检查内存/对齐/指针问题。

没有虚拟调用的测试运行的示例输出

带虚拟呼叫

这不是微软的一个错误,我显然错过了一些东西,而且我已经走到了尽头。因此,如果有人可以将我推向正确的方向,了解我可能会错过什么,我将不胜感激。

0 投票
0 回答
3354 浏览

winapi - 如何通过 WinAPI 删除不存在的网络适配器的静态 IP 配置?

当您在当前删除的网络适配器上配置具有特定 IP 地址的网络适配器时,您将失败。

如果您通过 Windows TCP/IP 设置 GUI 执行此操作,您将收到警报并提供删除旧适配器 IP 配置的选项。

您如何通过 WinAPI 获得相同的结果?

如果我使用 IP Helper 函数(GetAdaptersAddressesGetAdaptersInfo),它们只会返回连接的适配器。

如果我通过执行查询来使用Win32_NetworkAdapterConfiguration WMI 类:

我只得到断开连接的设备,这是完美的,但“IPAddress”属性为空。

那么,如何通过 WinAPI 使用另一个网络适配器之前使用的 IP 地址来配置网络适配器,而该网络适配器现在已经不存在了?

0 投票
1 回答
334 浏览

c++ - 为什么删除适配器的默认 IP 时 DeleteIPAddress 失败?

我正在尝试编写一个程序,该程序将在命令上切换所选适配器的 IP。

为此,我使用 GetAdaptersInfo() 函数来获取适配器的索引及其 IP 上下文,然后使用它来删除当前 IP(通过 DeleteIPAddress(context))。

之后,将通过 AddIPAddress() 插入新 IP。

问题是,在尝试删除“默认”IP(未由 AddIPAddress() 设置的 IP)并在删除旧 IP 之前调用 AddIPAddress 时,对 DeleteIPAddress 函数的调用失败,只会使适配器具有两个不同的同时 IP。

DeleteIPAddress 函数失败并出现错误 31(连接到系统的设备未运行)。

是否有另一种方法可以成功更改适配器上的 IP 地址?在没有从 AddIPAddress 获取上下文的情况下,DeleteIPAddress 是否真的可用?

0 投票
1 回答
186 浏览

c# - 任何使用 WMI IPHelper 的标准 C#.NET 方式?

有谁知道是否存在包含等效 WMI IPHelper 函数的现有 C#.NET 命名空间?具体来说,我需要调用 CreateIpForwardEntry 和 DeleteIpForwardEntry。是通过 P/Invoke 的唯一方法吗?(注意:这不是对第三方库的请求,而是对标准 .NET 库的请求)

0 投票
1 回答
7190 浏览

c++ - 从 GetAdapterAddresses() 获取子网掩码

我正在使用该GetAdapterAddresses()方法获取系统上所有接口的IP地址。

我需要找到每个接口的广播地址。我可以使用 IP 地址和子网掩码进行计算,但在 IP_ADAPTER_ADDRESSES 结构中看不到子网掩码。

有没有办法使用检索子网掩码GetAdapterAddresses()

0 投票
1 回答
1371 浏览

c - 列出 windows 路由表

我想列出 Windows 路由表中的条目。与 from 相同的输出route print。我使用GetIpForwardTable2来自 IP Helper API 的函数。但是我得到了一些与路由命令输出不同的奇怪结果。我在 VirtualBox 的 Windows 7 64 位中运行它,我有 3 个网卡(NAT、网桥和内部网络)并在 cygwin 下使用以下命令编译它:

这些只是为了使 Win7 中的功能可用_WIN32_WINNTNTDDI_VERSION为了更简单,我现在只考虑 ipv4。

这是代码:

输出是:

虽然输出route print -4如下:

代码输出中有很多奇怪的东西。许多条目具有未记录的值,例如:

  • Protocol应该在 1-14 范围内(几乎没有条目有这样的值)
  • Luid.IfType不应该是 0(同样几乎所有的都是零)
  • 几乎没有条目给出任何合理的Prefix

这里描述了MIB_IPFORWARD_ROW2和这里NET_LUID

我应该忽略那些无效值吗?如果是这样,有效的在哪里?还是我做错了什么?

我还发现,当我在拔下电缆的情况下启动 Windows 时,它提供的条目更少(这是有道理的)。然后我插入电缆并添加条目。但是当我再次拔掉插头时,它们仍然在那里。route命令按预期工作,当拔下电缆时,条目减少。

当我尝试较旧的功能GetIpForwardTable时,它可以工作。但它不支持 ipv6。

0 投票
0 回答
399 浏览

c# - 从 IP Helper API (iphlpapi.dll) 获取 UDP 连接统计信息

我想计算从 Windows 10 中特定 UDP 连接接收和发送的字节数。

此答案列出了一种使用GetPerTcpConnectionEStats()IP Helper API ( )计算特定 TCP 连接字节数的方法iphlpapi.dll。我想为 UDP 连接镜像这种方法。

IP Helper API 为几乎所有功能(例如 , )提供 UDP 和 TCP 实现GetTcpTable()GetUdpTable()文档未列出 GetPerUdpConnectionEStats(). 这个答案仍然引用了该功能。

是否可以使用 IP Helper API 获取从特定 UDP 连接接收和发送的字节数?

0 投票
1 回答
358 浏览

c++ - 使用 IP Helper 的 Windows 中活动 UDP 连接的远程地址

IP Helper中的函数GetUdpTable()返回一个MIB_UDPROW表。

MIB_UDPROWstruct 不包含任何有关 UDP 连接的远程地址的信息,扩展变体GetUdpTable()pid在返回结构中添加 。

是否可以使用 IP Helper(或任何其他 winapi)获取活动 UDP 连接的远程地址?