我試圖獲得系統中所有設備的列表及其連接方式。因此,我想實質上克隆IO Kit服務樹的結構(您可以使用IORegistryExplorer
查看)。我如何迭代所有的鍵? (這是令我困惑的原因之一是因爲我不明白io_service
,io_registry
和io_object
之間的區別是什麼)。如何迭代IO Kit的密鑰?
2
A
回答
2
服務,註冊表和對象之間的區別僅在它們被使用的情況下。否則它們是完全一樣。 從IOTypes.h:
typedef io_object_t io_registry_entry_t;
typedef io_object_t io_service_t;
有文檔提供了有關Traversing the I/O Registry,其中還包括在遍歷整個註冊表的信息。 對於每個條目,你將不得不併保存它們與您的註冊表的表示形式。
所以你會使用IORegistryGetRootEntry()
,打印/保存它的名字和屬性,然後遍歷IORegistryEntryGetChildIterator()
的孩子。
您在CFDictionaryGetKeysAndValues()
後獲得IORegistryEntryCreateCFProperties()
的房產。對於這些值,你必須檢查它們打印/保存的類型(或使用CFSHOW)。當你真的想把它克隆到不同的結構(不同類型)時,你必須明確地處理每一個可能的CFTypeID。
我在 創建的工作原型https://gist.github.com/JonnyJD/6126680
編輯:
在another SO answer的(C)源的ioreg
代碼鏈接。這應該是打印/提取缺少的CFTypes的好資源。
相關問題
- 1. 如何迭代密鑰對集合?
- 2. 如何調整iOS密鑰派生迭代密鑰生成?
- 3. python迭代密鑰的列表值
- 4. 從密鑰中迭代LinkedHashMap的值
- 5. 如何通過密鑰對中的字典進行迭代?
- 6. 如何迭代一組來列出所有的密鑰?
- 7. 如何在迭代時從HashMap中刪除密鑰?
- 8. 如何處理迭代空指針與空密鑰
- 9. 在基於密碼的密鑰派生函數中迭代2
- 10. 如何從密碼短語和PBKDF2迭代中獲取原始密鑰數據
- 11. 如何獲取代理的SSL密鑰?
- 12. 相同的密鑰的Android的JSON迭代
- 13. 從密鑰代碼解析密鑰
- 14. 迭代的小鬍子/ pystache字典的密鑰和值
- 15. 如何迭代詞典列表檢查相同的密鑰和串聯
- 16. 如何通過aws sdk 2.0中的CompletableFuture迭代s3文件密鑰?
- 17. 迭代多個字典使用不同的密鑰
- 18. 迭代通過字典和減去基於密鑰的值
- 19. 在沒有迭代的情況下獲取密鑰YAML-cpp
- 20. 我可以從期望的密鑰迭代地圖嗎?
- 21. 迭代通過散列和輸出密鑰的陣列,價值
- 22. jQuery:迭代包含密鑰長度的散列
- 23. 迭代散列中密鑰的最快方法
- 24. 通過jStorage庫迭代存儲在localStorage中的密鑰集合
- 25. 一些密鑰後的PHP迭代陣列
- 26. 如何迭代DataTable並解密字段?
- 27. 如何來解密密鑰
- 28. 如何在andorid中使用迭代器獲取Json密鑰和值
- 29. 只用一個密鑰在密鑰中查找密鑰名稱?
- 30. 通過密鑰對ConcurrentDictionary值進行迭代