|
|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup." n- ]5 v5 Z n$ g5 c
我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。
1 c& y& s8 Z! y1 x7 Q# L! O6 L代码如下:
1 e* z. H- F2 ZVOID CheckForKey( EFI_EVENT Event, VOID *Context )' t0 O* o$ | J7 _- R; \' v
{
: m: t) k) B }) m! i( _* T% M0 a& \9 s
……….. * h: O, C) [2 E
UINT8 Data,Data1;
1 m* R% V/ @+ h; T6 _9 y3 I( r- P) c2 G' G* m& A9 q1 r* q
Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo);
% B! l- D9 U7 X1 J; b+ w2 Q if (EFI_ERROR(Status)) return;
\0 y# ^* L% P' N9 ? Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type8 V6 H/ K5 g7 A( @2 N4 L
if((Data == 0x18)){( P- S3 b6 I0 |- S
return;}' q! }5 B, H5 l5 U4 y
……….……./ A' E6 X/ @4 D9 C1 {( y# ]
}
5 D( o) N( X# @& J5 A) o1 Q9 Z可是仍然从S4回来可以进入bios setup.
+ K9 k b- ?, i# Y. h我想问1。PMBASE是不是在S4回来后被清空?9 R5 K2 [. \ T d5 b+ O/ b5 }
2.是何时被清空的?
( X0 G; h1 p# Q* a! p$ u% b6 k谢谢 |
|