如何访问CoreAudio驱动程序的自定义控件?

时间:2014-04-02 17:20:30

标签: c++ macos driver core-audio

我正在创建一个CoreAudio驱动程序的配置应用程序,因为它有一些自定义 参数。我可以访问默认控件,如音量和静音,以及另一个 与AudioObjectGetPropertyDataAudioObjectSetPropertyData相关的属性,例如频道号。我不是开发者 司机,但我们正在共同努力。

使用IOAudioXXXControl::create()创建自定义控件(在驱动程序中,而不是应用程序中),并且给定自定义控件子类型时我无法访问它 从申请。但是,如果我用"默认"创建它?值(在标题中定义),我可以访问它。

例如,使用以下命令创建驱动程序控件:

control = IOAudioToggleControl::create(FALSE,
    kIOAudioControlChannelIDAll,
    0,0, 'phan',                             //'phan' is as kAudioToggleControlSubTypePhantomPower
    kIOAudioControlUsageCoreAudioProperty);

并且,在应用程序中,我问这样是否有这种控制:

AudioObjectPropertyAddress pAddress;
pAddress.mSelector = 'phan';
pAddress.mScope = kAudioObjectPropertyScopeGlobal;
pAddress.mElement =kAudioObjectPropertyElementMaster;

if (AudioObjectHasProperty(device, &pAddress)) {

它返回OK。

但如果我将'phan'更改为'phaN',则要创建自定义控件, 设备返回它没有控件。我试过设置 controlID和乱用create函数的参数, 没有成功。

我们搜索了Apple文档,OS X和iOS Kernel等书籍 编程等,但示例仅显示默认控件的创建, 像音量和静音一样,只说可以创建自定义命令。

我请求控件的方式有任何错误吗?如果我打开AudioObject HALLab中的浏览器我可以在两种情况下看到控件(使用' phan'和#39; phan')。

驱动程序代码,应用程序代码或两者都缺少一些步骤?或者不是 可以这样做 - 如果是这样,任何指南都将受到赞赏。

谢谢!

0 个答案:

没有答案