我正在尝试为 Windows 上的 SMBIOS 编写一个简单的解析器。
在阅读 2.6.1 版本的文档(2.6 是我笔记本电脑上的 SMBIOS 版本)时,我遇到了系统信息条目(类型 1 - 第 3.3.2 节)。
在文档中,它说是一个表示唤醒类型的字节值是一个枚举(即一个位字段,其中每个位表示唤醒类型是否存在,1 或 0)。
现在,在下面的 3.3.2.2 小节中,为位偏移量 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
预先感谢您的回答。