1

我认为这应该是一件很容易的事情,但它现在正在逃避我。大多数示例都处理“如果你有一个 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()

4

0 回答 0