2010-03-22 8 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

모든 코드 앞에 4 개의 공백을 추가하면 멋지게 인쇄됩니다. –

+1

페이지 끝에 Guiyon이 작성한 게시물을 확인하십시오. http://forums.macrumors.com/archive/index.php/t-689645.html – diciu

+0

감사합니다. 나는 그것을 보지 않아도 안됩니다. . 달리기. – Julian

답변

1

당신은 사용자 공간에서이 작업을 수행하는 것을 시도해야한다; 커널에 대해 쓰고 있다면 main()을 사용하지 않을 것이다. 그러나 이들은 커널 포함 파일입니다. 사용자 공간에서이를 수행하는 한 가지 방법은 I/O 레지스트리를보고 관심있는 하드웨어에 대한 IOMACAddress를 찾는 것입니다. 이를 시작하려면 I/O Registry Explorer를 살펴보십시오.

또 다른 방법은 SIOCSIFLLADDR과 함께 ioctl을 사용하여 링크 수준 주소를 얻는 것입니다.

관련 문제