我正在尝试在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
提前感谢您的回答。
答案 0 :(得分:1)
我查看了该文件,并说该字段是枚举,而不是掩盖。