转自:http://blog.yam.com/wttmama/article/33762035
m,這部份是第一個理解的東西
但,說真的,它對BIOS 真的沒幫助,只能幫你瞭解 PEI 的 IntallPpi 是怎麼做的而已。這個內容可以套用在
InstallPpi
LocatePpi
NotifyPpi
在 PEI Foundation 中。有提供一個 叫 InstallPpi 的 function 。
現在要描述的是,它的結構。
懂結構者,得天下!!~(自己亂掰的! )
以下是自畫圖
![](http://pics9.yamedia.tw/29/userfile/w/wttmama/blog/14d1ae029db967.jpg)
m,簡單的說~紅色那一塊就是 PEIM 應該提供的 Function
是以 PPI DESCRIPTOR 的方式開放。
在 InstallPpi 時,會加到一個結構,由頭往後加
而 NotifyPpi 則是由後面往前加。
LocatePpi 是會從頭開始找。
m,什麼是PPI
PPI : PEIM to PEIM Interface
在應用上,InstallPpi 是搭配 LocatePpi ,(加入後拿出來用 )
而 NotifyPpi 則是用來指定某個 Ppi Install 時,馬上執行 NotifyPpi 的callback function。
m,說真的,這邊只是為了 熱身而已,不說 source code 是因為,懂意義後,其實很容易看懂它在做啥
目前來說,這邊還真是不常改,不常用。
下面用別種圖示來說明它們。
![](http://pics9.yamedia.tw/29/userfile/w/wttmama/blog/14d1ae28937f18.jpg)
而 Locate 其實就是從這個結構找 Match 的 GUID 。再把 ppi 交給你而已
同理 NotifyPPi 也是,如下圖所示,但它是從結構尾巴往上放。
![](http://pics9.yamedia.tw/29/userfile/w/wttmama/blog/14d1ae2bf1b33a.jpg)
下圖是情境說明
![](http://pics9.yamedia.tw/29/userfile/w/wttmama/blog/14d1ae3a8354c5.jpg)
2. Install 紫色 PPI
3. 內部演算法去判斷 NotifyPpi 有沒有和 紫色 PPI 相符 的 GUID
4. 有的話,就執行 Notify Function。
5. 沒有的話,InstallPpi結束。
note: NotifyPpi 時,也會檢查,裝了 Notify 檢查 Ppi那一群 的。
說真的,為什麼要寫這一個…因為,它是我在 UEFI 追的第一個有成就感的 code
因為我覺得我說的很生動~~哈~所以,這一定要記錄一下的啦!~~
圖文說明說真的有點差~但~現場很生動的呢!!~~不過,這將只會是個記憶
因為,懂這個又沒用,bios 知識又沒增加,只是更懂 EFI 而已。