最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2013年3月13日 星期三

與自定義Protocol連結溝通

接續前一篇 建立在UEFI Shell上可安裝自定義的Protocol ,這裡再教大家如何透過自定義Protocol進行系統的存取,有興趣的可參考程式碼。
建立Test.inf,輸入以下的內容
[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = UefiTestProtocol
  FILE_GUID                      = 7406e836-0fda-4afd-b587-0b07f367d1b1
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 0.1
  ENTRY_POINT                    = ShellCEntryLib
  
[Sources]
  Test.c
  
[Packages]
  MyPkg/MyPkg.dec
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  LibC
  IoLib
  UefiLib 
  
[Protocols] 
  gEfiDXETemplateProtocolGuid  #需要使用所以要設定 

再建立Test.c
,輸入以下的內容
#include "UefiLoadProtocol.h"
#include <Library/BaseMemoryLib.h>

EFI_DXE_TEMPLATE_PROTOCOL  *g_Func;

EFI_STATUS Initial()
{
  EFI_STATUS Status = EFI_SUCCESS;
    
  Status = gBS->LocateProtocol(&gEfiDXETemplateProtocolGuid,
                               NULL,
                               (VOID**)&g_Func);
  if (EFI_ERROR (Status))
  {
    Print(L"ERROR : \"gEfiDXETemplateProtocolGuid\" protocol is not exist.\n");   
    return Status;
  }
  
  return Status;
}

int main ( int argc, char* argv[] )
{
  EFI_STATUS Status = EFI_SUCCESS;
  CHAR16 Version[32];
  
  Status = Initial();
  if (EFI_ERROR (Status))
    return Status;
    
  ZeroMem(Version, sizeof(Version)); 
  Status = g_Func->Version(g_Func, Version);
  if (EFI_ERROR (Status))
    return Status;
  
  Print(L"%s\n", Version);  
  return Status;
}

沒有留言:

張貼留言