Hmmm, there are a bunch of layers here…
First up, a general comment: There’s no such thing as a private API. If it’s private then, by definition, it’s not an API.
Second, regarding I/O Kit, the story here changed with the introduction of DriverKit on iOS 16. Prior to that, the IOKit framework wasn’t in the iOS SDK, making it completely unavailable on iOS. Starting with iOS 16, the IOKit framework is available on iOS. However, its behaviour isn’t like that on macOS. You can’t use it to rummage through the I/O registry looking at random properties. The API is present solely to support apps containing DriverKit extensions.
Finally, just because something is in the I/O registry doesn’t make it API. macOS developers hit this all the time.
macOS has very few limits on I/O Kit usage [1] and so there’s nothing to stop you doing what you propose there. And indeed many macOS developers do just that. However, this isn’t supported and often causes problems. Unless a driver’s class and its properties are documented for third-party use, it’s not an API but an implementation detail. If you rely on it, your product might fail as the implementation changes.
Many product experienced exactly this problem during the move to Apple silicon )-:
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
[1] Except in the case of sandboxed apps.