SMBIOS Enum取值.文档错误



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

在阅读2.6.1版本的文档时(2.6是我笔记本电脑上的SMBIOS版本),我遇到了System Information Entry (Type 1 - Section 3.3.2)。

在文档中,它说是一个字节值,代表唤醒类型是一个Enum(即一个位字段,其中每个位表示是否存在唤醒类型,1或0)。

现在,在下面的3.3.2.2小节中,枚举定义为位偏移00h到08h,使其总共为9位值。一个字节只有8位。文档是错误的还是我遗漏了什么?

我只想从结构中取出字节,并使用以下掩码进行逐位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

提前感谢您的回答

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

最新更新