0

我正在尝试为 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

预先感谢您的回答。

4

1 回答 1

1

我查看了文档,它说该字段是一个枚举,而不是一个位掩码。

于 2013-05-10T11:26:24.427 回答