转自:http://www.osdiy.com/Blog/article.asp?id=20
最近一直忙着在上海搞IPTV2.0的东西,好几个月没更新Blog了。
最近终于学会如何不用操作系统提供的函数进行关机了。
其实很简单,先获得Fixed ACPI Description Table中的相关数据,然后执行一下代码就OK了
mov edx,PM1a_EVT_BLK
mov ebx,PM1_EVT_LEN
shl ebx,1
add edx,ebx
xor eax,eax
out dx,ax
mov edx,PM1a_CNT_BLK
mov eax,S5_1
shl eax,10
bts eax,13
out dx,ax
上面的S5_1是从ACPI表格中获得的电源状态S5的具体值。一般为7
PM1a_EVT_BLK和PM1a_CNT_BLK是ACPI中的两个控制端口
最近终于学会如何不用操作系统提供的函数进行关机了。
其实很简单,先获得Fixed ACPI Description Table中的相关数据,然后执行一下代码就OK了
mov edx,PM1a_EVT_BLK
mov ebx,PM1_EVT_LEN
shl ebx,1
add edx,ebx
xor eax,eax
out dx,ax
mov edx,PM1a_CNT_BLK
mov eax,S5_1
shl eax,10
bts eax,13
out dx,ax
上面的S5_1是从ACPI表格中获得的电源状态S5的具体值。一般为7
PM1a_EVT_BLK和PM1a_CNT_BLK是ACPI中的两个控制端口