Если ваше устройство представляет собой просто последовательное устройство, подключенное к стандартному USB / последовательному адаптеру, вам не нужно переходить на уровень IOKit. Найдите символьное устройство UNIX для вашего последовательного порта и откройте его для небуферизованного файлового ввода-вывода. Возможно, вы захотите пройти реестр реестра I / O исключительно для перечисления портов, но он вам не нужен для реального ввода / вывода.
Чтобы начать с этим, вам нужно создать соответствующий словарь с:
IOServiceMatching(kIOSerialBSDServiceValue);
, а затем получите пути к файлам возвращаемых устройств через свойство kIOCalloutDeviceKey
.
Если это не стандартный USB / последовательный адаптер, вам нужно использовать IOKit. К сожалению, я не знаю лучших веб-ресурсов, чем Apple, по теме USB и драйверов, но есть книги:
Программирование ядра OS X и iOS специально предназначено для (начинающих) программистов драйверов. Он состоит из 2 глав по USB, одна из которых посвящена основам USB и драйверам пространства ядра, а другая - USB-драйверам пользовательского пространства. Надеюсь, вы сможете начать работать с ними. ( Отказ от ответственности: Я был одним из технических рецензентов для этой книги; однако, мне не платят за рекламу, и я не получаю роялти)
Mac OS X Internals начинает показывать свой возраст (актуально для OS X 10.4) и специально не является книгой по разработке драйверов. Это действительно дает очень подробное описание многих частей OS X и его ядра. Не так уж много на USB, если я правильно помню.
Для USB у вас есть 2 варианта: драйверы пространства пользователя и kenel. Если у вас нет веских причин делать это в ядре, я предлагаю делать это в пространстве пользователя. API очень разные, API ядра - C ++, пользовательское пространство - C. (нет, я их не перепутал) при просмотре документации, убедитесь, что вы смотрите на правильный один из 2 - они оба называется I / O Kit!