2018年12月30日 星期日

Library的使用

範例已上傳, 請去如下網址下載:

https://drive.google.com/open?id=1dKOyq0AjA-lrfkOHX7TkT5qCS1kWSl1b

Library在PEIM或DXE driver的INF裡會被引用, 如本例中CloudDxeDriver.inf和CloudDxeDriver2.inf都有加入CloudLib, 但是重點來了, 在CloudDxeDriver.c和CloudDxeDriver2.c都有呼叫CloudLibTest()這個函式, 透過include "CloudLib.h"這兩個c檔都能呼叫成功, 但是這兩支driver印出來的錯誤訊息卻不相同, 這是為什麼呢? 其實道理不難, 因為其中一支的CloudLib被放在Nt32Pkg.dsc裡面的[LibraryClasses.common]底下, 這代表了所有的Dxe drvier都可以使用CloudLib, 而這時CloudLibTest()印出來的message是"cloud-test Library Test", 但是又請注意下面的程式碼:
 Nt32Pkg/CloudDxeDriver2/CloudDxeDriver2.inf {
    <LibraryClasses>
      CloudLib|Nt32Pkg/Library/CloudLib2/CloudLib2.inf
  }

這代表著雖然整個專案的CloudLib都是吃CloudLib.inf但在CloudDxeDriver2.inf這支driver裡CloudLib被代換成CloudLib2.inf, 而CloudLib2.c裡的CloudLibTest()印出來的message是"cloud-test Replace Library Test", 怎麼樣, 簡單吧!!

沒有留言:

張貼留言