|
|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup.. F7 v$ ?5 k9 K! Q4 k* ]5 j" I
我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。: I1 ^" f; I8 J9 V
代码如下:
K4 {8 z! P- p7 V& _VOID CheckForKey( EFI_EVENT Event, VOID *Context )3 u. Z" U, f. t, v& F
{
& v% b( y! }" S& D, a* {( r. v" N2 a
. |6 `; Q3 k' c- g………..
$ u- d# ]* m6 ] UINT8 Data,Data1;
" W3 Z& k% | I4 z/ B
" V% [8 n0 j; q( Q: T Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo);, [* A' m& @* N* A/ Q; \
if (EFI_ERROR(Status)) return;
. |( S( A [4 ] Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type
& @8 E0 f4 N2 `2 Q if((Data == 0x18)){
2 u' a0 u5 f% j return;}( Q% S! p! K* c* u! X) d& ~
……….…….
9 f3 {# ~5 v( r0 {8 H- a}
3 H- t2 h4 Q) p4 [可是仍然从S4回来可以进入bios setup.* @) }0 _$ ?8 L2 x3 K3 S* ^+ M4 n
我想问1。PMBASE是不是在S4回来后被清空?- u4 ^- b% S8 S0 e/ i A
2.是何时被清空的?
. ^0 ~0 G8 c N" E: U. B谢谢 |
|