EFI_FILE_HANDLE->写入超过约 3.4 GiB 时写入崩溃

EFI_FILE_HANDLE->Write crashes when writing more than about 3.4 GiB

我正在编写一个应该能够将大量数据写入磁盘的 UEFI 应用程序。 我知道 FAT-32 文件大小限制和每个目录的文件数等。这不应该是问题所在。我尝试写入的内存区域被内存映射标记为可用,我可以 read/write 毫无问题地访问它,但是在一定数量的数据之后,我的虚拟机只是重新启动而没有任何错误消息。 以下行会产生问题:

uefi_call_wrapper(handle->Write, 3, handle, size, content);

句柄在几行前初始化,大小始终最大为 128MiB,并包含一个具有 read/write 访问权限的有效内存区域。 我已经用 EDK2 在 Windows 上重写了整篇文章,但遇到了同样的问题。

谁能帮我解决这个问题? 提前谢谢你,祝你有个愉快的夜晚

假设 handle 是指向 EFI_FILE_PROTOCOL 的指针,Write 的 BufferSize 参数通过引用传递。当函数 returns 时,BufferSize 包含写入的字节数。您在问题中没有提供足够的上下文,但看起来您是按值传递的。

大家好,谢谢你们的回答。大小参数是一个指针。我刚刚找到了问题的解决方案。我不知道我必须重置看门狗定时器。 调用 uefi_call_wrapper(ST->BootServices->SetWatchdogTimer, 4, 0, 0, 0, NULL); 后一切正常

干杯!