setPowerState 是不是总是在启动后调用?
Posted
技术标签:
【中文标题】setPowerState 是不是总是在启动后调用?【英文标题】:Is setPowerState always called after start?setPowerState 是否总是在启动后调用? 【发布时间】:2011-04-21 17:48:39 【问题描述】:我正在为 OS X 上的 USB 设备开发内核驱动程序。添加 setPowerState
处理程序后,我注意到在调用 start
方法后立即调用唤醒事件。当我加载驱动程序和插入 USB 设备时,这发生在 OS X 10.6 上。
kernel.log 显示了我在每个方法调用中所做的 iolog 条目:
...(attach device)
MyDriver: Initializing
MyDriver: Probing
MyDriver: Starting
MyDriver: Waking
...(detach device)
MyDriver: Stopping
MyDriver: Freeing
我可以期望每次启动后都会发生唤醒吗?
如果是这样,将我的大部分初始化代码放入 setPowerState
处理程序中是否合理,知道它将在启动后调用?
对于 OS X 10.4 和 10.5 也是如此吗?
【问题讨论】:
这涉及到编写内核驱动程序,因此它应该成为 Stack Overflow 的主题。如果您不同意,请考虑在您投赞成票时添加评论,以便我可以修改我的问题以更清楚地说明这一点。 【参考方案1】:可以,前提是您的驱动程序已正确连接到电源平面并已正确初始化电源管理(请参阅下面实施基本电源管理标题下的链接。
这不仅是合理的,而且是意料之中的。请注意,唯一不在setPowerState
中并且在start
或其他地方的初始化代码是只加载一次并且在start
中具有用于睡眠和唤醒事件的电源状态处理代码的东西。
有关更多信息,请参阅here。
在 Mac OS X 版本中 setPowerState 的唯一区别在于,在 Mac OS X 10.5 和更高版本中,setPowerState 在其自己的线程中调用,而 10.4 则作为现有线程的一部分调用。
【讨论】:
以上是关于setPowerState 是不是总是在启动后调用?的主要内容,如果未能解决你的问题,请参考以下文章
SQLserver代理启动不了,总是报远程过程调用失败提示,怎么解决