規範的哪一部分詳細說明了如何獲得命令行參數?如何訪問UEFI中的命令行參數?
1
A
回答
3
你需要小心這個。
正如您可能知道的那樣,有一個UEFI LoadedImage協議 - 該協議返回一個名爲EFI_LOADED_IMAGE
的結構,該結構又有一個LoadOptions
成員。
UEFI shell會將此LoadOptions變量設置爲您在命令行上輸入的任何內容。另外,我相信你可以通過BootOptions EFI變量來設置它,這是需要注意的地方 - 在這種情況下,第一個「參數」不是過程路徑。
所以你需要做的是處理一個長的字符串,你可以根據你的需要推斷出「參數」。
要使用LoadedImage協議,這樣做:
EFI_STATUS status = EFI_SUCCESS;
EFI_LOADED_IMAGE* loaded_image;
EFI_GUID loaded_image_protocol = LOADED_IMAGE_PROTOCOL;
status = gBS->HandleProtocol(ImageHandle,
&loaded_image_protocol,
(void**) &loaded_image);
然後,您可以獲取被傳遞的(0終結)的字符串的長度:
loaded_image->LoadOptionsSize;
意識到這個是以字節爲單位的大小,而不是長度。對於這一點,你可以使用的庫函數:
LoadOptionsLength = StrLen((CHAR16 *)li->LoadOptions);
最後,實際的字符串本身可從以下
CHAR16* CommandLineArgs = (CHAR16 *)li->LoadOptions;
有免費提供這就決定了殼講協議中UEFI Shell Specification。你實際上可以直接談論它,但我還沒有嘗試過。
0
您可以在UEFI_SHELL 2.0規格的第55頁找到EFI_SHELL_PARAMETERS_PROTOCOL的詳細信息。 使用handleprotocol()獲取協議接口的地址。 您可以傳入您在rcx中獲取的圖像句柄。 協議結構給出了參數的數量和一個指向參數指針列表的指針。參數是零終止的ucs2字符串。 第一個參數是加載圖像的路徑。 除去參數周圍的空格分隔符和雙引號。 (注意:沒有匹配的雙引號沒有剝離!) 我不知道是否有限制的數量或大小的參數。 我用20個長參數的測試工作正常。
相關問題
- 1. 如何訪問命令行參數?
- 2. 如何訪問Windows命令行參數?
- 3. 訪問命令行參數
- 4. 如何在scrapy中訪問crawlspider中的命令行參數?
- 5. 如何訪問Python中的命令行參數?
- 6. 如何訪問spring bean中的命令行參數?
- 7. 如何訪問.csx腳本中的命令行參數?
- 8. 如何訪問SICStus Prolog中的命令行參數?
- 9. 如何訪問Nim中的命令行參數?
- 10. 使用gdb訪問命令行參數
- 11. 訪問bash命令行參數$ @ VS $ *
- 12. Powershell訪問命令行參數
- 13. 訪問命令行參數在Objective-C
- 14. 如何訪問傳遞給Go程序的命令行參數?
- 15. 如何訪問用於調用Ansible的命令行參數?
- 16. Pytest:如何訪問測試之外的命令行參數
- 17. 如何從Python腳本訪問命令行參數?
- 18. 如何使用命令行參數訪問文本文件?
- 19. 從UEFI應用程序內運行UEFI shell命令
- 20. 如何訪問指令中的參數?
- 21. 命令行參數問題
- 22. 命令行參數問題
- 23. 命令行參數問題
- 24. 命令類的訪問參數
- 25. 在Bash中,如何訪問函數內部的命令行參數?
- 26. 訪問命令行
- 27. 作爲python3中的字節訪問命令行參數
- 28. 是否可以在vimscript中訪問vim的命令行參數?
- 29. 訪問MASM彙編器(x86)中的命令行參數
- 30. 從x86 asm訪問linux命令行參數的問題