EFI_PEI_NOTIFY_DESCRIPTOR &&EFI_PEI_PPI_DESCRIPTOR

//C:\udk2\OvmfPkg\TestByMy\PeiTest\MyPpiPeimA\MyPpiPeimA.inf
//C:\udk2\OvmfPkg\TestByMy\PeiTest\MyPpiPeimA\MyPpiPeimA.c

#include <Uefi/UefiBaseType.h>

#include <Pi/PiPeiCis.h>
#include <Ppi/MyFirstPeiLib.h>

#include <Library/PeimEntryPoint.h>
#include <Library/DebugLib.h>
#include <Library/BaseLib.h>
#include <Library/PeiServicesLib.h>

extern EFI_GUID gMyFirstPpiGuid;

EFI_STATUS
EFIAPI
NotifiMyDriverCallBack (
  IN EFI_PEI_SERVICES          **PeiServices,
  IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,
  IN VOID                      *Ppi
  )
{
  UINTN                         Temp;
  
  for(Temp = 0; Temp <= 5; Temp++) {
    DEBUG ((DEBUG_INFO, "\n"));
  }

  DEBUG ((DEBUG_INFO, "Ppi Peim A is install!..\n"));

  return EFI_SUCCESS;
}

EFI_MYPPI_STR               InstallMy = {
                              PrintHelloMesg
                              };

EFI_PEI_NOTIFY_DESCRIPTOR   PpiMySetNotif = {
                             (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
                              &gMyFirstPpiGuid,
                              &NotifiMyDriverCallBack
                              };

EFI_PEI_PPI_DESCRIPTOR      PpiMySet = {
                             (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
                              &gMyFirstPpiGuid,
                              &InstallMy
                              };


EFI_STATUS
EFIAPI
MyPpiPeimAEntry(
  IN       EFI_PEI_FILE_HANDLE  FileHandle,
  IN CONST EFI_PEI_SERVICES     **PeiServices
)
{
  EFI_STATUS                    Status;
  UINTN                         Temp;
  
  for(Temp = 0; Temp <= 5; Temp++) {
    DEBUG ((DEBUG_INFO, "\n"));
  }
  
  DEBUG ((DEBUG_INFO, "MyPpiPeimA is Start..\n"));

  Status = PeiServicesNotifyPpi  (&PpiMySetNotif);
  ASSERT_EFI_ERROR (Status);

  Status = PeiServicesInstallPpi  (&PpiMySet);
  ASSERT_EFI_ERROR (Status);

  DEBUG ((DEBUG_INFO, "MyPpiPeimA is End..\n"));

  return Status;
}
MyPpiPeimA.inf
[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = MyPpiPeimA
  FILE_GUID                      = 2D6F6BC2-9681-8E11-8579-B57DCD006011
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = MyPpiPeimAEntry

[Sources]
  MyPpiPeimA.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  OvmfPkg/OvmfPkg.dec
[LibraryClasses]
  PeimEntryPoint
  DebugLib
  BaseLib
  MyFirstPeiLib
  PeiServicesLib

[Ppis]
  gMyFirstPpiGuid

[Depex]
  TRUE
//C:\udk2\OvmfPkg\OvmfPkg.dec
[Ppis]
  gMyFirstPpiGuid                = { 0xE113F897, 0x75CF, 0xF630, { 0x81, 0x7F, 0xC8, 0x5A, 0x79, 0xE8, 0xAE, 0x66 } }
MyPpiPeimB.c
#include <Uefi/UefiBaseType.h>

#include <Pi/PiPeiCis.h>
#include <Ppi/MyFirstPeiLib.h>

#include <Library/PeimEntryPoint.h>
#include <Library/DebugLib.h>
#include <Library/BaseLib.h>
#include <Library/PeiServicesLib.h>

extern EFI_GUID gMyFirstPpiGuid;

EFI_STATUS
EFIAPI
MyPpiPeimBEntry(
  IN       EFI_PEI_FILE_HANDLE  FileHandle,
  IN CONST EFI_PEI_SERVICES     **PeiServices
)
{
  EFI_STATUS                    Status;
  UINTN                         Temp;
  EFI_MYPPI_STR                 *LocatePpiMy;
  
  for(Temp = 0; Temp <= 5; Temp++) {
    DEBUG ((DEBUG_INFO, "\n"));
  }
  
  DEBUG ((DEBUG_INFO, "MyPpiPeimB is Start..\n"));

  Status = PeiServicesLocatePpi (
             &gMyFirstPpiGuid,
             0,
             NULL,
             (VOID **)&LocatePpiMy
             );
  ASSERT_EFI_ERROR (Status);
  LocatePpiMy->PrintMesg(L"My Locate PPI to printf Hello World in MyPpiPeimB ...\n");

  DEBUG ((DEBUG_INFO, "MyPpiPeimB is End..\n"));

  return Status;
}
MyPpiPeimB.inf
[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = MyPpiPeimB
  FILE_GUID                      = 2D6F6232-9622-8E11-8579-B57DCD006011
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = MyPpiPeimBEntry

[Sources]
  MyPpiPeimB.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  OvmfPkg/OvmfPkg.dec

[LibraryClasses]
  PeimEntryPoint
  DebugLib
  BaseLib
  MyFirstPeiLib
  PeiServicesLib

[Ppis]
  gMyFirstPpiGuid

[Depex]
  gMyFirstPpiGuid
OvmfPkgX64.dsc
//C:\udk2\OvmfPkg\OvmfPkgX64.dsc
 OvmfPkg/TestByMy/PeiTest/MyPpiPeimA/MyPpiPeimA.inf
  OvmfPkg/TestByMy/PeiTest/MyPpiPeimB/MyPpiPeimB.inf
OvmfPkgX64.fdf
//C:\udk2\OvmfPkg\OvmfPkgX64.fdf
INF  OvmfPkg/TestByMy/PeiTest/MyPpiPeimA/MyPpiPeimA.inf
INF  OvmfPkg/TestByMy/PeiTest/MyPpiPeimB/MyPpiPeimB.inf

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歧焦,一起剝皮案震驚了整個濱河市坷衍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俗冻,老刑警劉巖堆巧,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妄荔,死亡現(xiàn)場離奇詭異,居然都是意外死亡谍肤,警方通過查閱死者的電腦和手機啦租,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荒揣,“玉大人篷角,你說我怎么就攤上這事∠等危” “怎么了恳蹲?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赋除。 經(jīng)常有香客問我阱缓,道長非凌,這世上最難降的妖魔是什么举农? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮敞嗡,結(jié)果婚禮上颁糟,老公的妹妹穿的比我還像新娘航背。我一直安慰自己,他們只是感情好棱貌,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布玖媚。 她就那樣靜靜地躺著,像睡著了一般婚脱。 火紅的嫁衣襯著肌膚如雪今魔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天障贸,我揣著相機與錄音错森,去河邊找鬼。 笑死篮洁,一個胖子當(dāng)著我的面吹牛涩维,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袁波,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瓦阐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篷牌?” 一聲冷哼從身側(cè)響起睡蟋,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娃磺,沒想到半個月后薄湿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡偷卧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年豺瘤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片听诸。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡坐求,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晌梨,到底是詐尸還是另有隱情桥嗤,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布仔蝌,位于F島的核電站泛领,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏敛惊。R本人自食惡果不足惜渊鞋,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锡宋,春花似錦儡湾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至役首,卻和暖如春尝丐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衡奥。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工摊崭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杰赛。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓呢簸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乏屯。 傳聞我的和親對象是個殘疾皇子根时,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容