SMBIOS枚举值。文档错误?

时间:2013-05-10 11:05:18

标签: c++ windows bit-manipulation

我正在尝试在Windows上为SMBIOS编写一个简单的解析器。

在阅读2.6.1版本的文档(2.6是我的笔记本电脑上的SMBIOS版本)时,我遇到了系统信息条目(类型1 - 第3.3.2节)。

在文档中,它表示为表示唤醒类型的BYTE值是一个枚举(即一个位字段,其中每个位代表一个唤醒类型是否存在,1或0)。 / p>

现在,在下面的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

提前感谢您的回答。

1 个答案:

答案 0 :(得分:1)

我查看了该文件,并说该字段是枚举,而不是掩盖。