1

我想获取我的 mac 以太网卡的硬件地址。在我在 IOKit/assert.h 中看到的所有示例中。我的系统上似乎不存在。GCC 抛出一个错误,说他不知道类型 IOEthernetAddress。我的任务需要 assert.h 吗?如果有人能给我一个工作样本,那就太好了。[编辑] 这是我的代码,认为这将有助于理解问题:

#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;
}
4

1 回答 1

1

您必须尝试从用户空间执行此操作;如果您正在为内核编写代码,您将不会使用 main()。但是,这些是内核包含文件。从用户空间执行此操作的一种方法是查看 I/O 注册表,并找到您感兴趣的硬件的 IOMACAddress。要开始使用此功能,请查看 I/O Registry Explorer。

另一种方法是将 ioctl 与 SIOCSIFLLADDR 一起使用,以获取链接级地址。

于 2010-03-31T19:05:44.380 回答