我正在尝试为 Windows 上的 SMBIOS 编写一个简单的解析器。
在阅读 2.6.1 版本的文档(2.6 是我笔记本电脑上的 SMBIOS 版本)时,我遇到了系统信息条目(类型 1 - 第 3.3.2 节)。
在文档中,它表示代表唤醒类型的 BYTE 值是一个枚举(即一个位字段,其中每个位表示是否存在唤醒类型,1 或 0)。
现在,在下面的 3.3.2.2 小节中,Enum 被定义为位偏移 00h 到 08h,使其总共有 9 个位值。一个 BYTE 仅包含 8 位。文档有误还是我遗漏了什么?
我只想从结构中取出 BYTE 并按位进行 AND 以找出具有以下掩码的唤醒类型:
#define SM_SI_OTHER 0x00000001
#define SM_SI_UNKNOWN 0x00000010
#define SM_SI_APM_TIMER 0x00000100
#define SM_SI_MODERN_RING 0x00001000
#define SM_SI_LAN_REMOTE 0x00010000
#define SM_SI_POWER_SWITCH 0x00100000
#define SM_SI_PCI_PME 0x01000000
#define SM_SI_AC_POWER_RESTORED 0x10000000
这里我遗漏了保留值。我应该怎么做?
这是我使用的文档的链接:http://www.dmtf.org/sites/default/files/standards/documents/DSP0134_2.6.1.pdf
提前感谢您的回答。
最佳答案
我查看了文档,它说该字段是一个枚举,而不是位掩码。
关于c++ - SMBIOS 枚举值。文档错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16480866/