我正在開發此項目,以便在OS啓動時通過EFI應用程序將文件寫入本地文件系統。我需要知道這是否可能。如果是的話,請引導我一點。 感謝我可以使用EFI在本地文件系統上寫入我使用EFI
4
A
回答
7
好吧,我給你一個很好的擡起頭來......
首先你列舉所有FS協議在系統中。
EFI_BOOT_SERVICES* bs = ...; EFI_GUID sfspGuid = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID; EFI_HANDLE* handles = NULL; UINTN handleCount = 0; efiStatus = bs->LocateHandleBuffer(ByProtocol, &sfspGuid, NULL, &handleCount, &handles);
然後你去通過所有這些,打開EFI_SIMPLE_FILE_SYSTEM_PROTOCOL每個處理您發現的話,你可以抓住從手柄的設備路徑,並弄清楚它是什麼設備,什麼分區等。並且如果驅動器/分區不是您正在查找的內容,請跳過它並轉到下一個句柄。或者,如果您不想混淆DP解析,則可以簡單地嘗試在每個分區(句柄)上打開文件,直到操作成功。
for (index = 0; index < (int)handleCount; ++ index) { EFI_SIMPLE_FILE_SYSTEM_PROTOCOL* fs = NULL; efiStatus = bs->HandleProtocol( handles[index], &sfspGuid, (void**)&fs);
您找到了您需要的分區的句柄。然後你打開音量。
EFI_FILE_PROTOCOL* root = NULL; ... efiStatus = fs->OpenVolume(fs, &root);
有一些功能來枚舉文件和文件夾等...但是,如果你知道正確的文件路徑,你可以打開它的時候了。
EFI_FILE_PROTOCOL* token = NULL; efiStatus = root->Open( root, &token, L"myfolder\\token.bin", EFI_FILE_MODE_READ, EFI_FILE_READ_ONLY | EFI_FILE_HIDDEN | EFI_FILE_SYSTEM);
下EFI_FILE_PROTOCOL你有一大堆的功能對文件進行操作:
EFI_FILE_OPEN Open;
EFI_FILE_CLOSE Close;
EFI_FILE_DELETE Delete;
EFI_FILE_READ Read;
EFI_FILE_WRITE Write;
EFI_FILE_GET_POSITION GetPosition;
EFI_FILE_SET_POSITION SetPosition;
EFI_FILE_GET_INFO GetInfo;
EFI_FILE_SET_INFO SetInfo;
EFI_FILE_FLUSH Flush;
相關問題
- 1. 讀取Windows中的EFI系統表
- 2. 在內核模式下在Linux上讀取/寫入EFI變量
- 3. EFI應用程序外殼腳本
- 4. 我可以在Microsoft Azure的Node.JS中使用本地「fs」文件系統嗎?
- 5. 我可以在系統內使用NSString(「」);?
- 6. 預裝Windows 8,efi
- 7. 使用Javascript寫入系統文件
- 8. 將json寫入本地文件系統
- 9. Hadoop Yarn寫入本地文件系統
- 10. efi沒有檢測到任何操作系統
- 11. 如何獲取EFI系統分區的卷名?
- 12. 無法創建本地文件系統如何寫入本地文件系統
- 13. 我可以使用嵌入式系統使用登錄系統使用Django登錄和上傳數據嗎?
- 14. 我們可以使用本地主機上的kml文件嗎?
- 15. EFI Shell中沒有FS0
- 16. 我可以使用Google NaCl訪問文件系統嗎?
- 17. 我可以使用Apache NIFI將文件傳輸到HDFS系統。
- 18. 在本地系統上使用Azure Appfabric
- 19. Flash動作腳本可以讀寫本地文件系統嗎?
- 20. 使用小程序在客戶端系統上寫入文件
- 21. 如何使用gnu-efi編譯uefi應用程序?
- 22. 我可以在Microsoft Dynamics系統上使用.net嗎?
- 23. 我可以在任何系統上使用GPU作爲GPGPU
- 24. mbr2gpt:找到太多MBR分區,無房可創建EFI系統分區
- 25. 我們可以使用akka.event.Logging在文件中寫入日誌嗎?
- 26. Oracle可以使用本地文件系統上的XSD模式驗證XML嗎?
- 27. 我可以在不區分大小寫的文件系統上強制使用MySql表名區分大小寫
- 28. 使用Spark在集羣模式下將文件寫入本地系統
- 29. 我可以(可靠地)使用SmtpClient的附件上使用TransferEncoding.EightBit?
- 30. 我可以在X.mesh中使用本地文件嗎?
很難明白你到底需要,誰寫在哪裏。操作系統啓動時,UEFI已經消失。如果您需要從UEFI寫入FS,那麼答案是「是」,但有一個限制:FS必須是UEFI本機支持的FAT32;例如,如果你有NTFS,就開源而言,據我所知,只有UEFI的只讀NTFS驅動程序。至於指南,啓動EFI_FILE_PROTOCOL – Alex
好吧,我明白你在說什麼。我的觀點是我想寫一個應用程序(EFI),將文本文件或可執行文件複製到文件系統。我應該如何去做呢? – Asak
我沒有看到任何問題。使用我在第一條評論中說的協議。 – Alex