我想获取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;
}
答案 0 :(得分:1)
您必须尝试从用户空间执行此操作;如果您正在为内核编写,则不会使用main()。但是,这些是内核包含文件。从用户空间执行此操作的一种方法是查看I / O注册表,并找到您感兴趣的硬件的IOMACAddress。要开始使用它,请查看I / O Registry Explorer。
另一种方法是使用带有SIOCSIFLLADDR的ioctl来获取链路级地址。