0
我正試圖在Windows上爲SMBIOS編寫一個簡單的解析器。SMBIOS枚舉值。文檔錯誤?
在閱讀2.6.1版本的文檔(2.6是筆記本電腦上的SMBIOS版本)時,我遇到了系統信息條目(類型1 - 第3.3.2節)。
在文檔中,它表示喚醒類型是一個枚舉值(即每個位表示喚醒類型是否存在,1或0的位字段)。
現在,在下面的小節3.3.2.2中,Enum被定義爲位偏移量00h到08h,使其總共爲9位值。 BYTE只保存8位。文檔是錯的還是我錯過了什麼?
我只想把BYTE出來的結構,做一個逐位,並找出與以下口罩喚醒類型:
#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
謝謝你,提前爲您解答。
這並沒有真正回答我的問題... – 2013-05-10 11:33:21
我認爲你必須混淆枚舉與位掩碼。雖然枚舉可以通過位掩碼來完成,但它們通常不是。在這種情況下,喚醒類型一次只保存一個值。 1 =其他,2 =未知,3 =計時器等。 – Luke 2013-05-10 11:40:18
哦。你是對的。我錯過了。謝謝。 – 2013-05-10 11:48:23