2013-05-10 63 views
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

謝謝你,提前爲您解答。

回答

1

我看着文件,它說這個字段是一個枚舉,而不是一個掩碼。

+0

這並沒有真正回答我的問題... – 2013-05-10 11:33:21

+1

我認爲你必須混淆枚舉與位掩碼。雖然枚舉可以通過位掩碼來完成,但它們通常不是。在這種情況下,喚醒類型一次只保存一個值。 1 =其他,2 =未知,3 =計時器等。 – Luke 2013-05-10 11:40:18

+0

哦。你是對的。我錯過了。謝謝。 – 2013-05-10 11:48:23