1

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;
}
4

1 に答える 1

1

ユーザー空間からこれを行おうとしているに違いありません。カーネル用に書いている場合は、main() を使用しないでしょう。ただし、これらはカーネル インクルード ファイルです。ユーザー空間からこれを行う 1 つの方法は、I/O レジストリを調べて、関心のあるハードウェアの IOMACAddress を見つけることです。これを開始するには、I/O Registry Explorer を見てください。

もう 1 つの方法は、ioctl を SIOCSIFLLADDR とともに使用して、リンク レベルのアドレスを取得することです。

于 2010-03-31T19:05:44.380 に答える