IOKit заголовок assert.h пропал? - PullRequest
1 голос
/ 22 марта 2010

Я хочу получить аппаратный адрес сетевой карты моего компьютера Mac. Во всех примерах, которые я видел, есть файл include на 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;
}

1 Ответ

1 голос
/ 31 марта 2010

Вы должны пытаться сделать это из пространства пользователя; вы бы не использовали main (), если бы писали для ядра. однако это файлы включения ядра. Один из способов сделать это из пользовательского пространства - посмотреть реестр I / O и найти адрес IOMACAddress для интересующего вас компонента оборудования. Чтобы начать с этим, взгляните на I / O Registry Explorer.

Другой способ - использовать ioctl с SIOCSIFLLADDR, чтобы получить адрес уровня ссылки.

...