我正在尝试为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,而不是位掩码。