代码之家  ›  专栏  ›  技术社区  ›  Julian

IOKit头断言。没了?

  •  1
  • Julian  · 技术社区  · 14 年前

    我想得到我的mac的以太网卡的硬件地址。在我在IOKit/assert.h上看到的所有示例中。在我的系统中似乎不存在。GCC抛出一个错误,说他不知道IOEthernetAddress类型。 [编辑]这是我的代码,认为这有助于理解问题:

    #include <IOKit/assert.h>
    #include <IOKit/network/IOEthernetController.h>
    #include <IOKit/network/IOEthernetInterface.h>
    
    int main(){
        IOEthernetAddress addr;
        getHardwareAddress(&addr);
        printf("%x", addr);
        return 0;
    }
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   WhirlWind    14 年前

    您必须尝试从用户空间执行此操作;如果您是为内核编写的,就不会使用main()。但是,这些是内核包含文件。从userspace中执行此操作的一种方法是查看I/O注册表,并找到您感兴趣的硬件的IOMACAddress。要开始使用,请查看I/O注册表资源管理器。

    另一种方法是使用ioctl和SIOCSIFLLADDR来获取链路级地址。