[英]Is there a way to get the list of all BIOS interrupts present on the current system programmatically?
我正在尋找PC提供的BIOS中斷列表。
為了獲得最常見的BIOS調用,可以使用各種公共資源,但是我希望獲得PC上所有(可能不是非常公開)BIOS調用的列表。
是否有程序可以做到這一點,或者有什么方式可以編寫一個(最好是用匯編或C語言編寫)?
我的目標是避免BIOS拆卸。 我也知道BIOS的底層API相對相似,因此API調用列表也相似。
“ Ralf Brown的中斷清單 ”可能對您有所幫助。
該站點列出了x86系統上通常使用的大多數中斷:
不僅列出了BIOS中斷,而且還列出了MS-DOS中斷和普通程序使用的中斷。 這包括列出Linux系統調用(中斷0x80)的部分。
...即請不要包括...
不幸的是,您將必須分離“常見” BIOS中斷,僅某些BIOS中存在的中斷以及MS-DOS自己中斷。
但是,對於許多中斷,列表中的內容類似於:“僅存在於Example Software Inc.制造的BIOS中”。
我最近的編輯
如果我對您的理解正確,則希望使用某種API來告訴您某個系統上存在哪些中斷。
不幸的是,這樣的API不存在:
BIOS不一定是單個軟件。 而是,某些硬件組件(例如圖形卡)可能具有自己的固件。
這種組件的固件通常沒有自己的中斷,但可以通過更改中斷向量來為BIOS中斷添加功能。
通過更改中斷向量,圖形卡的固件可以向int 10h
添加函數AX=5678h
,使其指向以下代碼:
new_int_10_vector:
cmp ax, 5678h
je new_function
; (In reality, the next line is not as simple as shown here)
jmp original_int_10_vector
new_function:
; Perform the "new" function "AX=5678h" of "int 10h"
; ...
iret
如果現代BIOS供應商希望引入列出所有受支持功能(您正在尋找的功能)的功能,那么他們將有問題:
BIOS應該如何檢測到圖形卡的固件向int 10h
添加了附加功能AX=5678h
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.