首页 > 解决方案 > UEFI 可变大小

问题描述

我正在使用 UEFI 存储持久变量。我注意到奇怪的行为。在设置变量之前,我查询MaximumVariableSize(使用QueryVariableInfo)并收到一个数字,例如 65,000。然后我将 19 个字节写入一个变量(并且我使用的变量名少于 100 个字符,因此名称为 200 个 UTF-16 字节)。当我再次查询最大变量大小时,我收到了 64,000。

据推测,65,000 和 64,000 以字节为单位。为什么编写一个总共消耗 19 + 200 = 219 个字节的变量会减少 1,000 个字节的可用空间?我做错了什么还是这是预期的行为?这是 NVRAM 中的不良碎片吗?我无法立即在 UEFI 规范中找到任何关于此的内容,但公平地说,规范并没有定义实现。

更新:我注意到,当我用相似长度的内容覆盖RemainingVariableStorageSizeUEFI 变量时,会减少,即使我没有增加我在 UEFI 中存储的内容总量。我不知道支持固件的 NVRAM 的属性。是否有可能每个电源周期只能写入 NVRAM 的每个区域一次,这就是空闲空间似乎在减少的原因?

标签: firmwareuefimotherboard

解决方案


推荐阅读