2010-03-22 70 views
1

我想獲取我的mac的以太網卡的硬件地址。在我看到的所有示例都包含在IOKit/assert.h中。這似乎並不存在於我的系統上。 GCC拋出一個錯誤,說他不知道類型IOEthernetAddress。 assert.h是我的任務所必需的嗎?如果有人給我一個工作樣本,這將是非常好的。 [編輯]這裏是我的代碼,認爲這將有助於理解這一問題:IOKit頭文件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

前綴所有代碼與四個空格,它會很好地打印。 – 2010-03-22 20:03:35

+1

查看Guiyon在頁面末尾撰寫的文章:http://forums.macrumors.com/archive/index.php/t-689645.html – diciu 2010-03-23 10:51:22

+0

謝謝,我不應該忽略它。 。它運行 – Julian 2010-03-23 19:08:54

回答

1

你必須嘗試從用戶空間做到這一點;如果你正在編寫內核,你不會使用main()。但是,這些是內核包含文件。從用戶空間執行此操作的一種方法是查看I/O註冊表,併爲您感興趣的硬件找到IOMACAddress。要開始使用它,請查看I/O Registry Explorer。

另一種方法是使用帶有SIOCSIFLLADDR的ioctl來獲取鏈接級別地址。