【问题标题】:Network interface settings in embedded Windows XP嵌入式 Windows XP 中的网络接口设置
【发布时间】:2008-12-19 13:38:03
【问题描述】:

在给定设备描述(即出现在“设备属性 -> 连接方式:”文本框中的字符串)的情况下,我们如何获得网络接口名称(即出现在“网络连接”对话框中的名称)?

我们必须使用纯 C/C++ 语言,或通过一些标准命令行工具(例如 netsh、ipconfig...),或两者结合。

我们不能使用 .NET API,因为部署问题(应用程序必须在没有 .NET Framework 的嵌入式 XP 上运行)。

SDK API GetIfTable 和 GetIfEntry 看起来很有希望,但在我们的系统上,所有 MIB_IFROW 字段都已正确填写,除了 "wszName" 字段未初始化。

【问题讨论】:

    标签: c++ c winapi networking windows-xp-embedded


    【解决方案1】:

    我可以通过注册表做到这一点。 使用提供 IP_ADAPTER_INFO 输出的 GetAdaptersInfo(),获取 AdapterName 字符串。这应该是适配器的 GUID。对于(至少 ipv4),在 HKLM\SYSTEM\CurrentControlSet\Control\Network{4D36E972-E325-11CE-BFC1-08002BE10318}\{INSERT GUID HERE}\Connection 下,值 Name 应该包含“友好”的网络名称。

    【讨论】:

      【解决方案2】:

      我将不得不仔细检查,但我认为这可能在注册表中的某个地方......我会回到这个。

      hklm/system/currentcontrolset/control/network

      可能会有所帮助。

      虽然我没有找到我想的那样,抱歉

      编辑 这也可能有帮助:

      http://www.java2s.com/Tutorial/CSharp/0520__Windows/Getthenetworkdevicenamedeviceservicename.htm

      具体来说: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\

      我不知道这是否可以保证未来,或者不是“批准”的方法,但它似乎有你需要的信息。

      【讨论】:

        【解决方案3】:

        最好的办法是使用统称为“IP Helper”的 Win32 API 调用。这将为您提供从 CLI 调用“ipconfig”可以获得的所有相同信息。

        特别是,我将首先查看“GetAdaptersInfo”函数。

        当然,由于 Win32 API 的这一部分,您可以使用纯 C/C++ 而无需解析来自外部实用程序的输出。

        【讨论】:

        • 问题指出他使用了GetIfTable和GetIfEntry,它们都是IP Helper API的一部分。我也看到了 wszName 未初始化的情况,我认为这是原始发帖人遇到的问题的症结所在。
        猜你喜欢
        • 2011-01-17
        • 1970-01-01
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多