如何以编程方式检索OS X board-id信息

里迪·拉索德(Riddhi Rathod)

如何在C ++中以编程方式检索以下信息:

这是Mac OSX中的终端命令:

ioreg -c IOPlatformExpertDevice | awk '/board-id/ {print $4}' | awk -F '\"' '{print $2}'

我使用IOKit库来检索信息,例如IOPlatformSerialNumber和PlatformUUID信息。但是我找不到“ board-id”的任何对应密钥。

pmdj

如果您在C ++代码中具有的io_service_t句柄,则IOPlatformExpertDevice可以使用该IORegistryEntryCreateCFProperty()函数获取“ board-id”属性。期望接收到一个CFData对象,但是请确保检查null和正确的类型ID。然后,使用常规CFData方法以所需的形式提取数据。

如果还没有IOService句柄,则应该可以使用以下任一方法到达那里IOServiceGetMatchingService()(我希望可以安全地假设只有一个IOPlatformExpertDevice实例。),或者使用它IORegistryGetRootEntry()来获取根,然后遍历IORegistry图到具有IORegistryEntryGetChildEntry()或类似功能的平台专家设备

由于该board-id属性没有命名的符号常量,因此只需对其进行硬编码:

CFTypeRef board_id_property = IORegistryEntryCreateCFProperty(
  platform_expert_device, CFSTR("board-id"), kCFAllocatorDefault, 0);

请注意,属性值可以采取不同的类型,包括CFNumberCFBooleanCFStringCFDataCFArray,和CFDictionary,你需要准备处理,其中类型不匹配您期望,或返回NULL时(如果财产没有一个的情况下存在)。使用检查类型CFGetTypeID(),例如:

if (board_id_property != NULL && CFGetTypeID(board_id_property) == CFDataGetTypeID())
{
    CFDataRef board_id_data = (CFDataRef)board_id_property;
    // safe to use CFData* functions now
    ...

    CFRelease(board_id_property);
}
else
{
    // Unexpected, do error handling.
    ...

    if (board_id_property != NULL)
        CFRelease(board_id_property);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以编程方式检索OS X board-id信息

来自分类Dev

如何以编程方式从组织目录中检索信息?

来自分类Dev

OS X故事板:如何以编程方式显示窗口?

来自分类Dev

如何以编程方式收集网络信息

来自分类Dev

如何以编程方式将OS X“标签”添加到文件?

来自分类Dev

如何以编程方式向OS X应用程序添加交通灯按钮

来自分类Dev

如何以编程方式将标签与x,y坐标对齐

来自分类Dev

Swift如何以编程方式隐藏信息窗口

来自分类Dev

Swift如何以编程方式隐藏信息窗口

来自分类Dev

我们如何以编程方式知道使用目标c在Mac OS X中启用了文件共享?

来自分类Dev

以编程方式获取有关Mac OS X应用程序的信息

来自分类Dev

如何以编程方式访问spring.application.instance_id?

来自分类Dev

如何以编程方式识别GDB中打印的线程ID

来自分类Dev

如何在OS X上以编程方式粘贴?

来自分类Dev

在OS X上如何以编程方式强制对ImageWell中的图像大小进行初始调整,因为ImageWell由于LayoutConstraints而改变了大小

来自分类Dev

如何以编程方式获取X509证书的完整证书链?

来自分类Dev

如何以编程方式绘制ImageButtons的5x5矩阵?

来自分类Dev

如何以编程方式创建X509存储密钥以用于加密?

来自分类Dev

如何以编程方式安排AWS lambda函数在事件发生后运行X倍的时间?

来自分类Dev

如何以编程方式控制X11转发的应用程序?

来自分类Dev

您如何以编程方式使用资产目录图像的切片信息?

来自分类Dev

如何以编程方式在iPhone上启用引导访问(信息亭模式)?

来自分类Dev

如何以编程方式删除实例上的“单身信息”以使其封送?

来自分类Dev

如何以编程方式创建segue以在视图控制器之间传递信息-Swift

来自分类Dev

如何以编程方式获得卡夫卡集群和代理信息在Java中?

来自分类Dev

如何以编程方式删除实例上的“单身信息”以将其编组?

来自分类Dev

如何以编程方式找出打开了哪种“位置信息”模式?

来自分类Dev

如何以编程方式从Wikidata实体获取所有可用信息?

来自分类Dev

如何以编程方式获取android.R.id.content的资源ID?

Related 相关文章

  1. 1

    如何以编程方式检索OS X board-id信息

  2. 2

    如何以编程方式从组织目录中检索信息?

  3. 3

    OS X故事板:如何以编程方式显示窗口?

  4. 4

    如何以编程方式收集网络信息

  5. 5

    如何以编程方式将OS X“标签”添加到文件?

  6. 6

    如何以编程方式向OS X应用程序添加交通灯按钮

  7. 7

    如何以编程方式将标签与x,y坐标对齐

  8. 8

    Swift如何以编程方式隐藏信息窗口

  9. 9

    Swift如何以编程方式隐藏信息窗口

  10. 10

    我们如何以编程方式知道使用目标c在Mac OS X中启用了文件共享?

  11. 11

    以编程方式获取有关Mac OS X应用程序的信息

  12. 12

    如何以编程方式访问spring.application.instance_id?

  13. 13

    如何以编程方式识别GDB中打印的线程ID

  14. 14

    如何在OS X上以编程方式粘贴?

  15. 15

    在OS X上如何以编程方式强制对ImageWell中的图像大小进行初始调整,因为ImageWell由于LayoutConstraints而改变了大小

  16. 16

    如何以编程方式获取X509证书的完整证书链?

  17. 17

    如何以编程方式绘制ImageButtons的5x5矩阵?

  18. 18

    如何以编程方式创建X509存储密钥以用于加密?

  19. 19

    如何以编程方式安排AWS lambda函数在事件发生后运行X倍的时间?

  20. 20

    如何以编程方式控制X11转发的应用程序?

  21. 21

    您如何以编程方式使用资产目录图像的切片信息?

  22. 22

    如何以编程方式在iPhone上启用引导访问(信息亭模式)?

  23. 23

    如何以编程方式删除实例上的“单身信息”以使其封送?

  24. 24

    如何以编程方式创建segue以在视图控制器之间传递信息-Swift

  25. 25

    如何以编程方式获得卡夫卡集群和代理信息在Java中?

  26. 26

    如何以编程方式删除实例上的“单身信息”以将其编组?

  27. 27

    如何以编程方式找出打开了哪种“位置信息”模式?

  28. 28

    如何以编程方式从Wikidata实体获取所有可用信息?

  29. 29

    如何以编程方式获取android.R.id.content的资源ID?

热门标签

归档