2010-03-22 25 views
1

Je veux obtenir l'adresse matérielle de la carte ethernet de mon mac. Dans tous les échantillons j'ai vu dans include sur IOKit/assert.h. Ce qui ne semble pas exister sur mon système. GCC affiche une erreur indiquant qu'il ne connaît pas le type IOEthernetAddress. Est-ce que assert.h est nécessaire pour ma tâche? Ce serait génial si quelqu'un pouvait me donner un échantillon de travail. [modifier] voici mon code, que cela va aider à comprendre le problème:IOKit en-tête assert.h disparu?

#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

Préfixe tout le code avec quatre espaces et il imprimera bien. –

+1

Découvrez le post écrit par Guiyon en fin de page: http://forums.macrumors.com/archive/index.php/t-689645.html – diciu

+0

merci, je n'aurais pas dû omettre de le regarder .. Je l'ai eu en cours d'exécution – Julian

Répondre

1

Vous devez essayer de le faire depuis l'espace utilisateur; vous n'utilisez pas main() si vous écrivez pour le noyau. cependant, ce sont des fichiers d'inclusion du noyau. Une façon de le faire depuis l'espace utilisateur est de regarder le registre des E/S et de trouver l'adresse IOMAC pour le matériel qui vous intéresse. Pour commencer, jetez un coup d'œil à I/O Registry Explorer.

Une autre méthode consiste à utiliser ioctl avec SIOCSIFLLADDR pour obtenir l'adresse de niveau de liaison.