Как написать драйвер для mac os

So, I want to write a virtual monitor driver for mac. This is something similar to what screen recycler app does. I’ve been reading so many resources about driver programming and kext in general and I’ve done the basic iokit driver tutorial from apple, but where to go from here?

The tutorial provides a very basic understanding of drivers but to my use case, it is definitely not sufficient. I know we have to implement the IOframebuffer header but I have no idea about the rest? Also the IOframebuffer header has quite some complex methods and I’m not well aware of how to implement those. Can someone provide me with some useful pointers as to what needs to be done?

I’ve already seen this question

Pointers to creating virtual monitor drivers for OS X

these repos,

https://github.com/tSoniq/displayx

https://github.com/mkernel/EWProxyFramebuffer

But the problem is, both the projects doesn’t work in MAC OS 10.12 since they were not updated for a long time.

I’m looking for some guidelines that I need to follow to write such a driver and apple docs aren’t really helping.

So, I want to write a virtual monitor driver for mac. This is something similar to what screen recycler app does. I’ve been reading so many resources about driver programming and kext in general and I’ve done the basic iokit driver tutorial from apple, but where to go from here?

The tutorial provides a very basic understanding of drivers but to my use case, it is definitely not sufficient. I know we have to implement the IOframebuffer header but I have no idea about the rest? Also the IOframebuffer header has quite some complex methods and I’m not well aware of how to implement those. Can someone provide me with some useful pointers as to what needs to be done?

I’ve already seen this question

Pointers to creating virtual monitor drivers for OS X

these repos,

https://github.com/tSoniq/displayx

https://github.com/mkernel/EWProxyFramebuffer

But the problem is, both the projects doesn’t work in MAC OS 10.12 since they were not updated for a long time.

I’m looking for some guidelines that I need to follow to write such a driver and apple docs aren’t really helping.

I’m looking for an exhaustive, university-level book or guide to study in order to
gain the ability of writing Mac OS X device drivers. I’m totally ignorant on this OS, but I’m already skilled on Linux.

Is there any Mac OS X counterpart for book «Linux Device Drivers»?

The best guide should introduce OS internals too, makes clear kernel space and userland differences and so on.

Thanks in advance

kent's user avatar

kent

6,1464 gold badges26 silver badges32 bronze badges

asked Aug 25, 2009 at 8:33

drAlberT's user avatar

3

The Apple Developer Connection web site contains lots of documentation. There is a whole section on Hardware & Drivers here in particular a Getting Started document here. Probably the best overall introduction to OS X internals is Mac OS X Internals by Amit Singh.

Glorfindel's user avatar

Glorfindel

21.6k13 gold badges78 silver badges105 bronze badges

answered Aug 25, 2009 at 8:42

Ned Deily's user avatar

Ned DeilyNed Deily

82.5k16 gold badges126 silver badges150 bronze badges

1

Amit Singh’s wonderful book Mac OS X Internals: A Systems Approach has an extensive section on kernel extensions, the IOKit and drivers. It’s the best general resource on OS X internals that I know of, but it doesn’t cover the latest system updates; it only covers up to the 10.4 release (Tiger).

answered Aug 25, 2009 at 8:42

cms's user avatar

cmscms

5,8342 gold badges28 silver badges31 bronze badges

Amit Singh’s book is good but as other posters noted it needs to be updated. I’m getting up to speed on IOKit and opted for another newer book OS X and iOS Kernel Programming. It doesn’t have the depth of Singh’s book but it has many practical examples of driver code. It is perhaps a better choice if you want get going quickly.

answered May 3, 2013 at 1:16

Kirk's user avatar

Как мне начать писать драйверы устройств? [закрыто]

Я хотел бы научиться писать драйверы устройств, потому что я думаю, это было бы весело. Я использую Mac OS X Macbook, но у меня также есть компьютер с Ubuntu (работающий на Mac Min). Я хорошо знаком с C и сейчас читаю эта книга. Я нашел несколько ссылок в Интернете, например Mac Dev Center. Я делаю это, потому что было бы весело. Думаю, было бы настоящим удовольствием видеть работу оборудования благодаря написанному мною программному обеспечению.

Я предполагаю, что мне нужны несколько советов или советов и рекомендаций, и знает ли кто-нибудь список устройств, у которых нет драйверов, или могу ли я написать драйвер для чего-то, что уже поддерживается (предпочел бы первое, поэтому я на самом деле обеспечение ценности). С какого устройства лучше начать работу? Я откусываю больше, чем могу прожевать? Я не боюсь программирования на низком уровне, сборки или каких-либо дополнительных усилий. Я действительно хочу испытать себя!

Создан 16 фев.

Написание драйвера устройства может быть довольно простым или почти произвольно сложным. Например, я участвовал в проекте, где шестерым из нас потребовалось почти три года, чтобы исправить ОДНУ ошибку в драйвере устройства. Конечно, мы устранили десятки других ошибок, пока искали его … код значительно улучшился. Исправление оказалось восьмистрочным патчем, который, по скромным подсчетам, стоил около миллиона долларов.

Но в качестве побочного проекта я написал драйвер Ethernet из таблицы данных чипа за неделю, а на его отладку ушла еще неделя. С тех пор не нужно было его трогать.

Невозможно в целом сказать, сколько работы будет выполнять водитель; драйвер графического процессора может стоить сотни миллионов, драйвер для одного светодиода стоит максимум пару часов работы.

Создан 08 фев.

Если вы хотите заняться разработкой драйверов устройств для Linux, свободно доступная книга O’Reilly Драйверы устройств Linux, третье издание .

Чтобы найти неподдерживаемое оборудование, для которого вы могли бы написать драйвер, спросите на Списки рассылки Linux. Может, какое-нибудь устройство USB 3.0? ;)

Создан 08 фев.

Для Mac вы можете взглянуть на Mac OS X Internals книга. Это сложно и сложно, но интересно читать. В основном это Mac на базе PowerPC, но есть приложение о Mac на базе Intel. Для Linux взгляните на Драйверы для устройств Linux, 3-е издание — он легче (бесплатные PDF-файлы онлайн :) и действительно ориентирован на драйверы устройств, может быть, лучше для начала.

Создан 08 фев.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

c
assembly
hardware
drivers

or задайте свой вопрос.

Мне нужно написать драйвер дисплея на MacOS High Sierra для внешнего дисплея. Я нашел образец IOKit для драйвера устройства и базовый документ о IOVideoDevice. Но я не могу найти подробный документ или образец кода с помощью IOVideoDevice.

Я присоединился к программе разработчиков Apple за 99 долларов в год. Нужно ли мне присоединяться к специальной программе Apple по написанию видеодрайвера? Интересно, как производители видеокарт, DisplayLink и AirParrot получили информацию.

Запуск dcm4chee на MacOS


Ответы
1

Под «видеодрайвером» вы подразумеваете устройство видеозахвата или графическую карту (GPU)?

  • IOVideoDevice подразумевает устройство видеозахвата, например веб-камера или карта видеозахвата. Однако этот API старый, в настоящее время драйверы для устройств видеозахвата должны быть написано как плагины CoreMediaIO. (Хотя с момента распространения проверки библиотеки
    флаг подписи кода, у этого маршрута также есть проблемы, такие как сторонние драйверы захвата, не работающие с FaceTime и аналогичными приложениями; это выходит за рамки этого вопроса.)
  • «Графическая карта» предполагает, что у вас есть устройство, которое вы хотите использовать в качестве дисплея для Mac. Это официально не поддерживается Apple. Раньше вы могли создать подкласс IOFramebuffer. Начиная с macOS 10.13 это больше не работает должным образом (пустой экран) и совсем не работает с 10.13.4-10.13.6. Производители графических процессоров (Intel, AMD и NVidia) являются поставщиками Apple, поэтому они получают полный доступ к графическому конвейеру. API-интерфейсы, которые они используют для реализации своих драйверов, не являются общедоступными.

    Обновлять: Начиная с 10.14 и 10.15, подклассы IOFramebuffer снова работают. По крайней мере, достаточно, чтобы ОС расширяла отображение до такого виртуального экрана, хотя «виртуальная память» никогда не заполняется данными изображения. Вам нужно зафиксировать это в пользовательском пространстве с помощью Core Graphics API или аналогичных.

Спасибо за закрытие @pmdj. Я не могу его найти, потому что он недоступен. Ну что ж.


— Tom Boutell

26.02.2020 03:21

Другие вопросы по теме

Понравилась статья? Поделить с друзьями:
  • Как написать драйвер com порта
  • Как написать драббл
  • Как написать дошол или дошел
  • Как написать доширак на английском
  • Как написать дочка на русском языке