查看“Shutdown”的源代码
←
Shutdown
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
为了关闭计算机,你需要使用某种电源管理。 要么是[[APM]]要么是[[ACPI]]。 == APM == 这是关闭计算机必须给出的APM命令的基本序列。 有关如何实施这些步骤的详细信息,请参阅 [[APM]] 文章。 * 执行安装检查。 *检查APM版本是否至少为‘1.1 * 断开任何现有的APM接口。 * 连接实模式接口。 * 告诉APM你的驱动支持1.1版 * 为所有设备启用电源管理。 * 将所有设备的电源状态设置为“关闭”(03h)。 如果APM版本是1.0(或者APM没有被告知你的代码支持版本1.1,因此出于遗留目的,它将以1.0运行),则不可能为所有设备设置电源状态 (也许有办法可以单独关闭每个设备) == ACPI == [[Topic:16990|ACPI Shutdown code with good explanation in C]] 以上论坛帖子中的ACPI关闭摘要: <blockquote> 从技术上讲,关闭ACPI非常简单,只需<code>outw(PM1a_CNT, SLP_TYPa | SLP_EN );</code>,然后计算机就关机了。 问题在于这些值的收集,特别是因为 <code>SLP_TYPa</code> 是在 <code>\_S5</code> 对象中,该对象在 <code>DSDT</code> 中,因此AML被进行了编码。 </blockquote> '''警告:'''上述代码不应在生产中使用。 作者跳过了很多事情,比如调用_PTS方法。 需要一个真正的AML解释器,例如ACPICA。 在许多硬件上,需要调用_PTS,不调用它将导致关机失败,或导致硬件在某个半关机阶段冻结。 这种现象大多发生在笔记本电脑上,但也会发生在台式机上。 == 模拟器专用方法 == 在某些情况下(例如测试),你可能需要断电方法,但不需要它在真正的硬件上工作。 在Bochs和更早版本的QEMU(低于2.0)中,你可以执行以下操作: <source lang="c"> outw(0xB004, 0x2000); </source> 在较新版本的QEMU中,你可以使用: <source lang="c"> outw(0x604, 0x2000); </source> 在Virtualbox中,你可以通过以下方式关闭: <source lang="c"> outw(0x4004, 0x3400); </source> ==另见== === 文章 === * [[Reboot]] [[Category:Power management]]
返回至“
Shutdown
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息