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);
后一切正常
干杯!
我正在编写一个应该能够将大量数据写入磁盘的 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);
后一切正常
干杯!