我正在考虑将MAC地址用作OSX上的机器标识符的一部分。 developer.apple.com上的GetPrimaryMACAddress.c
示例演示了如何获取“主”以太网接口(https://developer.apple.com/library/mac/samplecode/GetPrimaryMACAddress/Listings/GetPrimaryMACAddress_GetPrimaryMACAddress_c.html)的MAC地址。我的问题是“主以太网接口的精确定义是什么?”评论将其描述为“内置”网卡。在具有多个内置接口的系统上会发生什么?例如Mac Pro可以有两个有线插头,而较旧的Macbook Pro有一个有线和无线插孔。
我能找到的唯一文档是IONetworkInterface.h
参考(https://developer.apple.com/library/mac/documentation/Kernel/Reference/IONetworkInterface_header_reference/Reference/reference.html)。它将kIOPrimaryInterface
定义为“接口是主接口还是内置网络接口”。这并没有回答我关于当有多个内置接口时会发生什么的问题。
答案 0 :(得分:0)
Apple位于here
的开源页面我认为您正在寻找此特定代码/* Returns a Base-64 encoded MD5 hash of 'username:primary-mac-address' */。
//------------------------------------------------------------------------------
// Returns true if the receiver of this method is the system's primary
// network interface.
bool IONetworkInterface::isPrimaryInterface() const
{
IOService * provider = _driver;
bool isPrimary = false;
if ( provider ) provider = provider->getProvider();
// Look for the built-in property in the ethernet entry.
if ( provider && provider->getProperty("built-in") && getUnitNumber() == 0)
{
isPrimary = true;
}
return isPrimary;
}