|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup.0 ?/ ]' \, |" A# Y: V
我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。
& `5 T2 K4 A5 ^/ q! R e2 f# E代码如下:# J! Y/ p; ~& R! i0 n$ {0 o
VOID CheckForKey( EFI_EVENT Event, VOID *Context )
$ L3 ]+ X0 p% X{4 Z; _7 X) F# p, X3 \
1 L1 |; L& P6 @) H) {# N, y/ D) a
……….. ( S, w3 ^% |- u" m1 F Z
UINT8 Data,Data1;$ M$ x) ]8 ^6 R/ e9 t
2 \+ o" Y7 A) u- C Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo);% d8 V w- s8 F
if (EFI_ERROR(Status)) return;5 u/ ^& O6 O" R4 L X
Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type
3 ~1 e3 H' T) D& v1 ~- f9 p3 J if((Data == 0x18)){# b8 K$ A5 Z( R2 {
return;}7 W9 P# A7 ]1 T: r* q- p! W
……….…….
3 i/ [! j" ~4 @2 K8 B& e}' i# W1 g6 d5 y- V" h2 S* }* ?9 U
可是仍然从S4回来可以进入bios setup.
; C5 ]3 V& L/ L0 b我想问1。PMBASE是不是在S4回来后被清空?
& U7 i9 {% l; C, N& \ Q 2.是何时被清空的?4 r5 Q- ?" ^3 { _& j% [
谢谢 |
|