解析SMBIOS信息詳解.doc_第1頁
解析SMBIOS信息詳解.doc_第2頁
解析SMBIOS信息詳解.doc_第3頁
解析SMBIOS信息詳解.doc_第4頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、解析SMBIOS言息詳解1.SMBIOS簡介SMBIOS是System ManagemenBIOS的概念,SMBIOS是主板或系統(tǒng)制造者以 標(biāo)準(zhǔn)格式顯示產(chǎn)品管理信息所需遵循的統(tǒng)一規(guī)范,顯示有關(guān)系統(tǒng)管理BIOS主板的信息。SMBIOSS您能夠找出有關(guān)的計(jì)算機(jī)制造商的詳細(xì)信息、模型類型、序列號和 BIOS 版本、 處理器數(shù)量、 物理內(nèi)存,等等。對一些特殊制定需求, 如只能針對某一廠商機(jī)器使用, 往往需要通過獲取 SMBIOS 內(nèi)容解析得到該信息,添加到代碼中,實(shí)現(xiàn)該自定義定制需求。本章主要介紹 windows API獲取SMBIO信息的方法2. SMBIOS吉構(gòu)信息從SMBIOS 2.3版本開始,

2、兼容SMBIOS勺實(shí)現(xiàn)必須包含以下10個數(shù)據(jù)表 結(jié)構(gòu):BIOS信息(Type 0)、系統(tǒng)信息(Type 1)、系統(tǒng)外圍或底架(Type 3)、處 理器信息 (Type 4) 、高速緩存信息 (Type 7)、系統(tǒng)插槽 (Type 9) 、物理存儲陣列 (Type 16) 、存儲設(shè)備 (Type 17) 、存儲陣列映射地址 (Type 19) 、系統(tǒng)引導(dǎo)信息 (Type 32) 。其他的結(jié)構(gòu)表則可根據(jù)實(shí)際來決定是否需要實(shí)現(xiàn)。最新的 SMBIOS 版 中定義的所有結(jié)構(gòu)表包括 Type 0-Type 42 ,其中 Type 5 、 Type 6 和 Type 10 已 經(jīng)廢棄。另外還有Type 12

3、6和Type 127兩個特殊結(jié)構(gòu)表。BIOS信息(Type 0)、系統(tǒng)信息(Type 1)、基板(或模塊)信息(Type 2)、系 統(tǒng)外圍或底架 (Type 3)、處理器信息 (Type 4)、存儲控制器信息 (Type 5,已廢棄)、 存儲模塊信息 (Type 6,已廢棄)、調(diào)整緩存信息 (Type 7) 、端口連接器信息 (Type 8)、系統(tǒng)插槽(Type 9)。板載設(shè)備信息(Type 10)、OEM字符串(Type 11)、系統(tǒng) 配置選項(xiàng)(Type 12)、BIOS語言信息(Type 13)、組相聯(lián)(Type 14)、系統(tǒng)事件日 志(Type 15)、物理存儲陣列(Type 16)、存

4、儲設(shè)備(Type 17)、32-bit內(nèi)存錯誤 信息(Type 18)、存儲陣列映射地址(Type 19)。存儲設(shè)備映射地址(Type 20)、 內(nèi)建指針設(shè)備(Type 21)、便攜式電池(Type 22)、系統(tǒng)重置(Type 23)、硬件安 全(Type 24)、系統(tǒng)電源控制(Type 25)、電壓探針(Type 26)、冷卻設(shè)備(Type 27)、 溫度傳感器(Type 28)、電流探頭(Type 29)。越界遠(yuǎn)程訪問(Type 30)、弓I導(dǎo)完 整性服務(wù)(BIS)入口點(diǎn)(Type 31)、系統(tǒng)引導(dǎo)信息(Type 32)、64-bit內(nèi)存錯誤信 息(Type 33)、管理設(shè)備(Type 3

5、4)、管理設(shè)備組件(Type 35)、管理設(shè)備門檻數(shù) 據(jù)(Type 36)、存儲信道(Type 37)、IPMI設(shè)備信息(Type 38)、系統(tǒng)供電電源(Type39)。附加信息(Type 40)、板載設(shè)備擴(kuò)展信息(Type 41)、管理控制器主機(jī)接口 (Type 42) 0不活動指示(Type 126)、表格結(jié)束指示(Type 127)。SMBIOS勺大部分結(jié)構(gòu)表數(shù)據(jù)在CIM模型中都有對應(yīng)的實(shí)現(xiàn),比如底架信息對 應(yīng)CIM_Chassis,處理器信息對應(yīng) CIM_Processor,內(nèi)存信息對應(yīng) CIM_Memory 等。下面介紹主要的結(jié)構(gòu)表。1、BIOS信息(Type 0):位置名稱長度描述

6、00hTYPE號1BYTE結(jié)構(gòu)的TYPE號,此處是001h長度1BYTETYPE 0格式區(qū)域的長度,一般為14h,也有13h02h句柄2BYTE指向本結(jié)構(gòu)的句柄04hBios廠商信息1BYTE此處是bios賣方的信息,可能是 OEM廠商名,一般為01h, 代表緊隨格式區(qū)域后的字符串區(qū)域的第一個字符串05hBIOS版本1BYTEBIOS版本號,一般為 02h,代表字符串區(qū)域的第二個字符串06hBios開始地址段2BYTE用于計(jì)算常駐BIOS鏡像大小的計(jì)算,方法為(10000h-BIOS 開始地址段)X 1608hBIOS發(fā)布日期1BYTE一般為03h,表示字符區(qū)第三個字符串09hBIOS ROM

7、 size1BYTE計(jì)算方法為(n + 1)X 64K,n為此處讀岀數(shù)值0AhBIOS特征8BYTEBios的功能支持特征,如PCI,PCMCIA,FLASH等12hBIOS特征擴(kuò)展不定從2.4版開始包含兩個擴(kuò)展字節(jié)(12h-13h),以及字節(jié)14h-17h14hBIOS版本主號1BYTE若系統(tǒng)不支持此域,則值設(shè)為ffh15hBIOS版本從號1BYTE若系統(tǒng)不支持此域,則值設(shè)為ffh16h內(nèi)置控制器固件 的版主號1BYTE若系統(tǒng)不支持此域,則值設(shè)為ffh17h內(nèi)置控制器固件 的版從號1BYTE若系統(tǒng)不支持此域,則值設(shè)為ffhBIOS特征域表示BIOS對一些特性的支持情況, Bit 1 和Bit

8、 1 保留,Bit 2 未知,Bit 3 表示本BIOS特征域是否被支持。Bit 4-Bit 19 分別表示是否支持 ISA、MCA EISA、PCI、PCMCIA PnP、APM BIOS 刷新、 BIOS影像(把BIOS的只讀內(nèi)容拷貝到快一些的內(nèi)存中)、VL-VESA、ESCD從CD引導(dǎo)、可選擇的引導(dǎo)、BIOS ROM是否被插裝、從 PCMCIA引導(dǎo)、EDD規(guī)范。Bit 20-Bit 25表示對各種型號的軟盤支持情況(均為中斷Int 13h),包括NEC9800 1.2MB軟盤、Toshiba 1.2MB 軟盤、5.25 ” /360KB 軟盤、5.25 ” /1.2MB 軟盤、3.5 ”

9、 /720KB 軟盤、3.5 ” /2.88MB 軟盤。Bit 26-Bit 29表示是否支持中斷Int 5h(Pr in tScreen屏幕截取服務(wù))、I nt 9h(8042 鍵盤服務(wù))、I nt 14h(串口服務(wù))、I nt 17h(打印機(jī)服務(wù))、Int 10h(CGA/Mo no 視頻服務(wù))、NECPC-98。Bit 32:47 保留給BIOS廠商使用Bit 48:63保留給計(jì)算機(jī)系統(tǒng)廠商使用BIOS特征擴(kuò)展字節(jié)1(偏移12h處)表示對另外一些設(shè)備的支持情況,Bit 0-Bit 1分別表示是否支持 ACPI、USB遺留、AGP I2O引導(dǎo)、LS-120 SuperDisk 引導(dǎo)、ATA

10、PI ZIP驅(qū)動器引導(dǎo)、 1394引導(dǎo)、智能電池。BIOS特征擴(kuò)展字節(jié)2(偏移13h處)表示對一些高級特性的支持情況。Bit 1-Bit3 表示是否支持功能鍵初始化網(wǎng)絡(luò)服務(wù)引導(dǎo)、激活目標(biāo)內(nèi)容分發(fā)、UEFI規(guī)范。Bit 4 表示SMBIOS表描述的是一臺虛擬機(jī),Bit 5:7 保留。2、系統(tǒng)信息(Type 1) : SMBIOS實(shí)現(xiàn)只關(guān)聯(lián)一個單一的系統(tǒng)實(shí)例,并且包含 且只包含一個系統(tǒng)信息結(jié)構(gòu)。位置名稱長度描述00hTYPE號1BYTE結(jié)構(gòu)的TYPE號,此處是101h長度1BYTE格式區(qū)域總長度,2.0版為08h,2.1-2.3.4 版為19h,從2.4版開始為1Bh02h句柄2BYTE指向本結(jié)構(gòu)

11、的句柄04h電腦制造商1BYTE一般為01h,表示在字符串區(qū)域中的編號05h產(chǎn)品名稱1BYTE在字符串區(qū)域中的編號06h版本號1BYTE在字符串區(qū)域中的編號07h序列號1BYTE在字符串區(qū)域中的編號09hUUID16BYTE通用唯一標(biāo)識符18h喚醒類型BYTE用來標(biāo)識導(dǎo)致系統(tǒng)開電啟動的事件19hSKU號BYTE在字符串區(qū)域中的編號,SKU號通常為產(chǎn)品ID或采購訂單號1Ah產(chǎn)品家族1BYTE在字符串區(qū)域中的編號UUID為128 bit長,是一個穿越時間和空間的唯一標(biāo)識符,不需要集中的注 冊過程。它的格式在RFC4122有詳細(xì)的描述,內(nèi)容比較繁鎖,但 SMBIOS并不關(guān) 注這個,它只關(guān)注字節(jié)序。U

12、UID的字節(jié)順序以及在RFC4122中對應(yīng)域的名字如 下:time_low :偏移00h處,4BYTE為時間戳的低位域部分。time_mid : 04h處,2BYTE為時間戳的中間域部分。time_hi_and_version : 06h處,2BYTEs為時間戳的高位域,同時還包含版 本號。clock_seq_hi_and_reserved : 08h處,1BYTE時鐘序列的高位域部分,同 時還包含保留部分。clock_seqow : 09h處,1BYTE時鐘序列的低位域部分。Node 0Ah處,6BYTE唯一結(jié)點(diǎn)標(biāo)識符。雖然RFC4122建議對所有域都使用網(wǎng)絡(luò)字節(jié)序(為大端字節(jié)序),但PC工

13、業(yè)界(包括ACPI, UEFI和微軟的規(guī)范)都對前面的三個域time_low,time_mid, time_hi_and_version 使用小端字節(jié)序。同樣地,電報(bào)格式的編碼也被用來描述 SMBIOS規(guī)范中的 UUIB 因此,UUID00112233-4455-6677-8899-AABBCCDDEEFF 被表示為 33 22 11 00 55 44 77 66 88 99 AA BB CC DD EE FF 。如果 ID 的所 有字節(jié)都為FFh,表示當(dāng)前ID在系統(tǒng)中不存在但可以被設(shè)置。如果所有字節(jié)都 為00h,表示ID在系統(tǒng)中不存在。對于喚醒類型域,00h保留,01h為其他,02h未知,0

14、3h為APM定時器,04h 調(diào)制解調(diào)器撥響,05h為LAN遠(yuǎn)程,06h電源開關(guān),07h為PCI PME# 08h為AC 電源恢復(fù)。基板或模塊單元信息 (Type 2) :制造商、產(chǎn)品名、版本、序列號、資產(chǎn)標(biāo)簽、 特征標(biāo)志、基板在底架上的位置、底架句柄、基板類型、包含的對象句柄個數(shù)、 包含的個各對象句柄。系統(tǒng)外圍或底架 (Type 3) :制造商、類型、版本、序列號、資產(chǎn)標(biāo)簽號、啟 動狀態(tài)、供電電源狀態(tài)、熱量狀態(tài)、安全狀態(tài)、OEMS義信息、高度、電源線個數(shù)、包含的單元個數(shù)、包含的單元記錄長度、包含的各個單元、SKU號o處理器信息 (Type 4) :插座指示、處理器類型、處理器家族、制造商、 I

15、D、 版本、電壓伏特?cái)?shù)、外部時鐘頻率(MHz)、最大速率(MHz)、當(dāng)前速率、狀態(tài)、處 理器升級、L1級緩存信息結(jié)構(gòu)的句柄、L2級緩存信息結(jié)構(gòu)的句柄、L3級緩存信 息結(jié)構(gòu)的句柄、序列號、資產(chǎn)標(biāo)簽、部件號碼、內(nèi)核個數(shù)、激活的內(nèi)核個數(shù)、線 程個數(shù)、處理器特征、處理器家族 2o高速緩存信息 (Type 7):插座指示、緩存配置、最大緩存容量、已安裝的容 量、支持的SRA喋型、當(dāng)前SRA喋型、緩存速率、糾錯類型、系統(tǒng)緩存類型、 關(guān)聯(lián)性。端口連接器信息 (Type 8):例如并口、串口、鍵盤、鼠標(biāo)器端口等都屬于端 口連接器。包含的信息有內(nèi)部引用指示符、內(nèi)部連接器類型、外部引用指示符、 外部引用類型、端口

16、類型。系統(tǒng)插槽 (Type 9):插槽指示符、插槽類型、插槽數(shù)據(jù)總線寬度、當(dāng)前是否 在使用、插槽長度、插槽ID、插槽特征1、插槽牲2、段組編號、總線編號、設(shè) 備/函數(shù)編號。OEM字符串(Type 11):由OEM旨定的描述字符串。系統(tǒng)配置選項(xiàng) (Type 12) :用來配置基板跳線和開關(guān)的信息字符串BIOS語言信息(Type 13):可安裝的語言、標(biāo)志位字節(jié)、保留的 15字節(jié)、當(dāng) 前語言。這里的語言是指英語、 法語、漢語等國家語言, 而不是計(jì)算機(jī)編程語言。組相聯(lián)(Type 14):組名、本項(xiàng)的類型、本結(jié)構(gòu)的句柄。級相聯(lián)用于指明某 些部件的布局或?qū)哟危缰该鲀蓚€ CPU共享一個外部緩存系統(tǒng)。系

17、統(tǒng)事件日志 (Type 15) :事件日志存放在非易失性的存儲單元中,占據(jù)固 定長度的區(qū)域,以 一個固定長度(和特定于廠商)的頭部開始,后跟一個或多 個可變長度的日志記錄。 應(yīng)用程序可以通過周期性地讀取系統(tǒng)事件日志結(jié)構(gòu) (通 過它的句柄) 并在日志改 變標(biāo)記中搜索日志的更新, 以實(shí)現(xiàn)事件日志改變通知。 這里日志改變標(biāo)記唯一地標(biāo)識事件日志最后一次更新的時間。 本結(jié)構(gòu)包含的信息 有日志區(qū)域長度、日志頭部起 始偏移、日志數(shù)據(jù)起始偏移、存取方法(如索引 I/O, 內(nèi)存映射物理地址,通知目的非易失性數(shù)據(jù)函數(shù)等)、日志狀態(tài)、日志改變 標(biāo)記、存取方法地址、日志頭部格式、支持的日志類型描述符、每個日志類型描

18、述符的長度、日志類型描述符列表。 這里存取方法地址可用以下聯(lián)合類型來表示:每個日志記錄的格式都包含 8 字節(jié)的記錄頭部(事件類型、長度、日期時間 域),后跟不定長的日志數(shù)據(jù)。物理存儲器陣列 (Type 16) :位置(系統(tǒng)板卡或附加板卡上)、存儲功能、 內(nèi)存糾錯、最大容量、存儲錯誤信息句柄、存儲設(shè)備數(shù)目、已擴(kuò)展的最大容量。存儲設(shè)備 (Type 17) : 用于描述物理存儲器陣列中的單個存儲設(shè)備。在物理 存儲器陣列中的句柄、存儲錯誤信息句柄、存儲總寬度、數(shù)據(jù)寬度、存儲容量、 形體尺寸、設(shè)備集、設(shè)備定位 器、記憶槽定位器、存儲器類型、類型額外細(xì)節(jié)、 速率、制造商、序列號、資產(chǎn)標(biāo)簽、部件號碼、屬性標(biāo)

19、志、已擴(kuò)展的容量、已配 置的存儲時鐘速率。32-bit 錯誤信息 (Type 18) :錯誤類型、錯誤粒度、錯誤操作、特定于制造 商的錯誤表現(xiàn)、存儲陣列錯誤地址、設(shè)備錯誤地址、錯誤解析。存儲陣列映射地址 (Type 19) :起始地址、結(jié)束地址、存儲陣列句柄、分區(qū) 寬度、已擴(kuò)展的起始地址、已擴(kuò)展的結(jié)束地址。存儲設(shè)備映射地址 (Type 20) :起始地址、結(jié)束地址、存儲設(shè)備句柄、存儲 陣列映射地址句柄、分區(qū)行位置、交叉位置、交叉的數(shù)據(jù)深度、已擴(kuò)展的起始地 址、已擴(kuò)展的結(jié)束地址。內(nèi)置指針設(shè)備 (Type 21) :指針設(shè)備類型、接口類型、按鈕個數(shù)。智能電池(Type 22):位置、制造商、制造日

20、期、序列號、設(shè)備名、設(shè)備化 學(xué)屬性、設(shè)計(jì)容量、設(shè)計(jì)電壓伏特?cái)?shù)、SBDS版本號、電池?cái)?shù)據(jù)的最大錯誤百分比、SBD騎列號、SBDS制造日期、SBDSS備化學(xué)屬性、設(shè)計(jì)容量倍增因子、特 定于OEM的信息。系統(tǒng)引導(dǎo)信息(Type 32):保留域(00h)、引導(dǎo)狀態(tài)描述(10字節(jié))。引導(dǎo)狀態(tài) 描述主要有“沒有檢測到錯誤”、“沒有可引導(dǎo)的媒介”、“操作系統(tǒng)載入失敗”、 “ BIOS硬件檢測失敗”、“操作系統(tǒng)硬件檢測失敗”、“用戶請求引導(dǎo)(通過 一個按鍵)”、“違反系統(tǒng)安全”、“預(yù)先請求映像(通過PXE引導(dǎo))”、“系統(tǒng)監(jiān)控記時器激活,導(dǎo)致系統(tǒng)重啟”,特定于廠商引導(dǎo)狀態(tài)描述等。IPMI設(shè)備信息(Type 38

21、): BMC接口類型、IPMI規(guī)范修改版本、I2C從地址、 NV存儲設(shè)備地址、基地址、基地址修飾符/中斷信息、中斷號。不活動指示(Type 126):用來表明某個SMBIOS吉構(gòu)當(dāng)前不活動,因此不應(yīng) 用被上層的軟件使用。它沒有字符串區(qū)域,只有結(jié)構(gòu)頭部(即三個頭部域類型、 長度、句柄)。表格結(jié)束指示(Type 127):表示整個SMBIOS吉構(gòu)表的結(jié)束。它也只有結(jié)構(gòu) 頭部,沒有字符串區(qū)域。可以看出,很多設(shè)備都包含一些類似的信息域,比如制造商、產(chǎn)品ID(SKU號)、產(chǎn)品名稱、版本、出廠日期、序列號、資產(chǎn)標(biāo)簽號、設(shè)備類型等。應(yīng)用軟件可以使用下面的方法來解析基于表格的SMBIOS吉構(gòu)。Fin dStr

22、ucture 函數(shù)用于查找指定類型的第一個結(jié)構(gòu)(注意同一個類型的結(jié)構(gòu)可 能會多個),返回這個結(jié)構(gòu)的句柄,如果沒找到,則返回0xFFFF TableAddress 和StructureCount的值可以通過在內(nèi)存中定位 EPS表來獲得,EPS中偏移18h 處即為TableAddress的值,偏移1Ch處即為StructureCount的值3. Windows API 獲取 SMBIOS程Windows提供了直接 API GetSystemFirmwareTable 來獲取 SMBIOS言息。該函數(shù) 從 firmware table provider中檢索特定的 firmware table 信息3.1 調(diào)用 GetSystemFirmwareTable 獲取信息 buffer 大小DWORD iSignature = R:iSignature = iSignature 8 | S;iSignature = iSignature 8 | M;iSignature = iSignature SMBIOSTableData = (BYTE *)(buff + 8);/跳過前面 8 個字節(jié)SMBIOSTableData可以理解為 格式區(qū)+數(shù)據(jù)內(nèi)容 兩部分,而格式區(qū)有一個頭, 類似:struct SMBios

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論