我认为这应该是一件很容易的事情,但它现在正在逃避我。大多数示例都处理“如果你有一个 BSD 名称 /dev/disk,你如何找到该设备”,而我刚刚注册了我的设备,并想找到它提供的 BSD 名称。即 /dev/disk2。
我制定标准
class net_lundman_zfs_zvol : public IOService
class net_lundman_zfs_zvol_device : public IOBlockStorageDevice
为新设备创建一个小块;
bool net_lundman_zfs_zvol::createBlockStorageDevice (zvol_state_t *zv)
{
net_lundman_zfs_zvol_device *nub = NULL;
bool result = false;
nub = new net_lundman_zfs_zvol_device;
if (nub == NULL) goto bail;
if (nub->init(zv) == false) goto bail;
if (nub->attach(this) == false) goto bail;
nub->registerService();
}
现在,我想找出我的新节点的 BSDName。如果它在 net_lundman_zfs_zvol 或 net_lundman_zfs_zvol_device 中,对我来说并不重要。
我以为我可以打电话
getProperty(kIOBSDNameKey);
但它始终为 NULL。所以可能我必须找到我的IOMedia *
并从那里打电话getProperty()
?