0

我正在尝试编写一个在 IOKit 中使用 IOAudioControl.h 文件的程序,这样我就可以在不使用 Apple 的 API 的情况下直接学习处理 IOKit。每当我运行像下面这样的简单文件时,我都会在 IOAudioControl.h 中遇到大量错误

#include <IOKit/audio/I0AudioControl.h>
#include <iostream>
int main(int argc, const char * argv]) (
{
  // insert code here.
  std: :cout << "Hello, world! \n"
  return 0:
}

这是我的构建设置的屏幕截图 在 此处输入图像描述

这是错误的屏幕截图在 此处输入图像描述

4

1 回答 1

0

IOAudioControl存在于 macOS 内核中的一个类(它的 API 可用于 kexts),它也可以通过 AudioDriverKit 中的IOUserAudioControlAPI从 DriverKit 扩展(dext)中访问。

从您的代码示例看来,您正试图将内核头文件包含在常规用户空间程序中。这不起作用,内核对象不能以这种方式从用户空间访问。

您没有具体说明您最终要达到的目标,但是:

  • 如果您尝试实现音频设备驱动程序,请使用 Core Audio Server Plugin API 或将您的驱动程序构建为 DriverKit 扩展。(大多数类型的音频内核扩展已被弃用。)
  • 如果您想访问和修改系统中现有音频设备的控件,请使用 Core Audio API。
  • 如果您希望IOAudioControl从用户空间枚举内核对象,请在您的程序中使用 IOKit 框架的服务迭代 API。
于 2022-02-22T13:22:11.320 回答