Доступ к объектам класса каталога ввода / вывода - PullRequest
2 голосов
/ 04 февраля 2009

Я разрабатываю расширение ядра OS X (kext), которое будет использоваться в качестве драйвера I / O Kit. Этот драйвер, однако, будет строго «виртуальным»; он не будет взаимодействовать с каким-либо оборудованием.

OS X хранит каталог (Каталог ввода / вывода) всех драйверов, которые загружены в ядро. Он также ведет реестр (I / O Registry), содержащий драйверы каталога ввода-вывода, которые соответствуют аппаратному устройству и в настоящее время контролируют оборудование.

Поскольку мой драйвер не зависит от аппаратного обеспечения и не «совпадает», он загружается только в каталог ввода-вывода и не регистрируется в реестре ввода-вывода. Это вызывает проблему, поскольку API для получения объектов драйверов ввода-вывода ограничен драйверами, которые зарегистрированы в реестре ввода-вывода, и не имеет доступа к объектам в каталоге ввода-вывода. Я попытался сопоставить мой драйвер, используя рекомендованные API , однако, как я упоминал ранее, эти API не предоставляют записи каталога ввода / вывода.

Моя конечная цель - получить ссылку на мой драйвер для передачи данных с помощью метода "setProperties" . Если ничего не помогает, я могу использовать комбинацию syscall, copyin и copyout для передачи данных в драйвер и из него, но в данный момент меня это не интересует.

Вкратце: есть ли способ получить ссылку на драйвер, который находится в каталоге ввода-вывода, но не в реестре ввода-вывода?

Обновление : Чтобы понять, что я имею в виду, посмотрите на следующие два снимка экрана IORegistryExplorer:

Зарегистрированный драйвер легко доступен через API , но незарегистрированный драйвер не будет соответствовать IOServiceGetMatchingServices (...). Как получить ссылку на загруженный драйвер, который не зарегистрирован?

Для получения дополнительной информации, проверьте:

1 Ответ

0 голосов
/ 04 февраля 2009

Вы можете загрузить драйвер без аппаратного обеспечения. Вы, вероятно, хотите изучить что-то вроде IOResourceMatching против IOKit или IOBSD. Это приведет к срабатыванию пассивного соответствия на вашем драйвере, когда эти ресурсы станут доступными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...