我正在编写一个应该能够将大量数据写入磁盘的UEFI应用程序。 我知道FAT-32文件大小限制和每个目录的文件数等。这应该不是问题。尝试写入的存储区域被存储器映射标记为可用,并且我可以毫无问题地读取/写入它但是在一定量的数据之后我的vm只是重新启动而没有任何错误消息。 以下行会产生问题:
uefi_call_wrapper(handle->Write, 3, handle, size, content);
handle初始化了几行,size总是最大128MiB,并且内容是一个有读/写访问权限的有效内存区域。 我已经用EDK2在Windows上重写了整个瘦身并遇到了同样的问题。
任何人都可以帮我吗? 提前谢谢你,祝你有愉快的夜晚
答案 0 :(得分:1)
假设handle是指向EFI_FILE_PROTOCOL的指针,Write的BufferSize参数通过引用传递。当函数返回时,BufferSize包含写入的字节数。你没有在你的问题中提供足够的上下文,但看起来你是按价值传递它。
答案 1 :(得分:0)
大家好,感谢你们回答。 size参数是一个指针。我刚刚找到了问题的解决方案。我不知道我必须重置看门狗定时器。
在调用uefi_call_wrapper(ST->BootServices->SetWatchdogTimer, 4, 0, 0, 0, NULL);
后,一切都按预期工作
干杯!