macos - 如何编写MacOS显示驱动程序

标签 macos iokit

我需要在 MacOS High Sierra 上编写显示驱动程序以用于外部显示。我找到了设备驱动程序的 IOKit 示例和有关 IOVideoDevice 的基本文档。但我找不到 IOVideoDevice 的详细文档或示例代码。

我以每年 99 美元的价格加入了 Apple 开发者计划。我是否必须加入专门的 Apple 计划来编写视频驱动程序?我想知道显卡供应商 DisplayLink 和 AirParrot 是如何获得这些信息的。

最佳答案

“视频驱动程序”是指视频捕获设备还是显卡 (GPU)?

  • IOVideoDevice 表示视频捕获设备,例如网络摄像头或视频采集卡。然而,这个API很旧,现在视频捕获设备的驱动程序应该是written as CoreMediaIO plugins 。 (尽管自从图书馆验证的流行以来 代码签名标志,此路线也存在问题,例如第 3 方捕获驱动程序无法与 FaceTime 和类似应用程序一起使用;这超出了这个问题的范围。)
  • “显卡”表明您有一个想要用作 Mac 显示器的设备。 Apple 并未正式支持此功能。过去您可以创建一个 IOFramebuffer 子类。从 macOS 10.13 开始,这不再按预期工作(黑屏),并且从 10.13.4-10.13.6 开始根本不起作用。 GPU 制造商(Intel、AMD 和 NVidia)是 Apple 的供应商,因此他们可以深入访问图形管道。他们用来实现驱动程序的 API 不是公开的。
    更新:从 10.14 和 10.15 开始,IOFramebuffer 子类再次发挥作用。至少,足以使操作系统将显示范围扩展到这样的虚拟屏幕,尽管“vram”实际上从未填充有图像数据。您需要通过 Core Graphics API 或类似的方法在用户空间中捕获它。

关于macos - 如何编写MacOS显示驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51846999/

相关文章:

macos - 如何在 macOS 上安装 clang-tidy?

c - 在不知道文件描述符的情况下检测文件大小不为零的最快方法是什么?

linux - Mac 或 Linux 上的内存监控

c - IOKit 头文件 assert.h 不见了?

objective-c - 在 Cocoa 应用程序(不是 cocoa touch)中的操作期间显示加载通知或 gif

macos - 如何在 OS X 上升级 *console* 版本的 vim?

xcode - 如何构建适用于大苏尔和蒙特雷的 DEXT

macos - USB 存储设备的无代码 kext

ios - IOHIDEventSystemClientScheduleWithRunLoop 与 EXC_BAD_ACCESS