gpt4 book ai didi

osx-lion - 从音频虚拟驱动程序处理空闲 sleep - Mac OSX

转载 作者:行者123 更新时间:2023-12-02 07:59:55 32 4
gpt4 key购买 nike

我们有一个类似于Soundflower的虚拟音频设备驱动程序。该虚拟设备将在声音系统首选项中列出。每当我们的设备在系统偏好设置中被选择时,它就会阻止空闲 sleep 。如果我们将选择切换为默认输出设备,一切都会按预期进行。

如果我们在终端中执行“pmset -gassertions”命令,它会给出以下输出

Assertion status system-wide:  
ChargeInhibit 0
PreventUserIdleDisplaySleep 0
PreventUserIdleSystemSleep 1
NoRealPowerSources_debug 0
CPUBoundAssertion 0
EnableIdleSleep 1
PreventSystemSleep 0
DisableInflow 0
DisableLowPowerBatteryWarnings 0
ExternalMedia 0

Listed by owning process:

pid 115: [0x0000012c00000073] PreventUserIdleSystemSleep named: MY_DRIVER_IDENTIFER.noidlesleep"

有人可以建议我一些解决此问题的建议吗?

最佳答案

认为这由标志kIOPMPreventIdleSleep控制,该标志位于IOPMPowerState structcapabilityFlags字段中。 .

要参与电源管理决策,您需要将设备驱动程序添加到电源管理平面,通常是在重写的 IOService::start(provider) 方法中:

PMinit();
provider->joinPMtree(this);
registerPowerDriver(this, powerStates, numPowerStates);

其中 powerStatesnumPowerStates 指定您希望设备能够处于的电源状态数组。对于虚拟设备,您可能不需要超过 2 个电源状态设备,也许您甚至只需要一个。我怀疑你们类的某个父类(super class)正在设置抑制 sleep 的状态。注册电源管理后,您的驱动程序将需要处理电源管理方法,例如 IOService::setPowerState()

根据您希望设备的行为方式,您可能需要创建 2 种电源状态,一种是在播放或捕获声音(并禁止 sleep )时处于“事件”状态,另一种是在设备不工作时处于“空闲”状态任何事情,并允许 sleep 。

电源管理主题有点太大,无法在 StackOverflow 答案中完全涵盖,因此我建议您阅读有关我上面提到的内容的文档,并尝试清除电源状态中的相关标志。

希望有帮助。

关于osx-lion - 从音频虚拟驱动程序处理空闲 sleep - Mac OSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071780/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com