firmware - UEFI 可变大小
问题描述
我正在使用 UEFI 存储持久变量。我注意到奇怪的行为。在设置变量之前,我查询MaximumVariableSize
(使用QueryVariableInfo
)并收到一个数字,例如 65,000。然后我将 19 个字节写入一个变量(并且我使用的变量名少于 100 个字符,因此名称为 200 个 UTF-16 字节)。当我再次查询最大变量大小时,我收到了 64,000。
据推测,65,000 和 64,000 以字节为单位。为什么编写一个总共消耗 19 + 200 = 219 个字节的变量会减少 1,000 个字节的可用空间?我做错了什么还是这是预期的行为?这是 NVRAM 中的不良碎片吗?我无法立即在 UEFI 规范中找到任何关于此的内容,但公平地说,规范并没有定义实现。
更新:我注意到,当我用相似长度的内容覆盖RemainingVariableStorageSize
UEFI 变量时,会减少,即使我没有增加我在 UEFI 中存储的内容总量。我不知道支持固件的 NVRAM 的属性。是否有可能每个电源周期只能写入 NVRAM 的每个区域一次,这就是空闲空间似乎在减少的原因?
解决方案
推荐阅读
- arrays - 更好的 Swift 数组排序方法?
- swift - Swift Switch 语句
- java - 如何将参数传递给另一个类中的数组?
- java - 定义的 TextView 上的 NullPointerException
- javascript - TypeScript - 在动态定义实例时不能对类型严格
- android - 如何在 Android Studio 中从连接的设备读取 STORED 日志
- php - 无法在 Laravel 中更新照片,因为验证甚至可以在创建个人资料时上传照片
- google-cloud-platform - VM重启后无法通过浏览器通过SSH客户端访问谷歌云VM
- python - 如何让父类的属性进入派生类的范围?
- javascript - DynamoDB 索引查询包括