当前位置: 代码迷 >> 综合 >> dxe 如何跟smm 沟通 SMM Communication Protocol
  详细解决方案

dxe 如何跟smm 沟通 SMM Communication Protocol

热度:86   发布时间:2023-12-14 22:17:03.0

This protocol provides a means of communicating between drivers outside of SMM and SMI
handlers inside of SMM.

SmmCommunication>
Communicate()?

当前在DXE 环境,但是需要在smm mode 做一些事情。此时就需要把dxe 的数据信息传递给smm. 然后在smi callback里面做相做的事情。

sample:

注册一个smi handler call back, HeadrType 为指定的GUID.

// 

Status  = gSmst->SmiHandlerRegister(

                 ErasePspFtpmNvmesmmHandler,

                 &gPlatfromEarsePspFtpmvamieguid,

                 &mErasepspFtpmsmmhandle

                );

创建commBuffer,Commsize 空间。 通过smmCommunication->communicate() 传递给smm mode, 并且调用

smi handler callback.

 注意 HeaderGuid

   CommHeader = (EFI_SMM_COMMUNICATE_HEADER *) CommBuffer;

   CopyMem(&CommHeader->HeaderGuid, &gPlatformEarseftpmNvramguid, sizeof(efiguid);

 

 

 

  相关解决方案