如題Windows Ring0驅動層如何獲取模塊Version和company等資源資訊,
是不是必須要通過和ring3通信來實作?
大家有思路嗎?
uj5u.com熱心網友回復:
http://www.cnblogs.com/liuconggang/archive/2013/01/12/2857683.html看下Ring0和Ring3之間的通訊,希望對你有所幫助~
uj5u.com熱心網友回復:
是不是必須要通過ring3來獲得模塊的version資訊啊,驅動層有辦法獲得嗎?什么辦法?
uj5u.com熱心網友回復:
算了,列舉模塊得到路徑 讀檔案取吧uj5u.com熱心網友回復:
GetFileVersionInfoSizeGetFileVersionInfo
你可以參考這兩個函式。。獲取File 資訊。。
uj5u.com熱心網友回復:
VerQueryValue\StringFileInfo\lang-codepage\string-name Specifies a value in a language-specific StringTable structure.
The lang-codepage name is a concatenation of a language and code page identifier pair found as a DWORD in the translation array for the resource.
Here the lang-codepage name must be specified as a hexadecimal string.
The function retrieves a string value specific to the language and code page indicated.
The string-name name must be one of the following predefined strings:
Comments
CompanyName
FileDescription
FileVersion
InternalName
LegalCopyright
LegalTrademarks
OriginalFilename
ProductName
ProductVersion
PrivateBuild
SpecialBuild
uj5u.com熱心網友回復:
樓主說的是ring0層(內核驅動),應用層有直接的API當然好辦,
但驅動層沒有相應的內核API
uj5u.com熱心網友回復:
我也碰到這個問題了!而且檔案版本資訊獲取,數字簽名檢查等,這些資訊在應用層獲取沒問題的
在驅動中都沒有直接的內核API。
冒似只能讓驅動和應用層發生通信,通過應用層來獲取,然后應用層把資訊回傳給驅動,
但這樣做會影響效率!而且內核層的處理還必須嚴禁:
比如:如果正在處理1個IRP請求,要讓IRP請求未決,并加入IRP未決的請求佇列中以便后續根據應用層的判斷結果繼續進行IRP處理
如果是在內核鉤子函式中,要讓執行緒暫時等待1個事件物件,以便后續收到應用層的判斷結果后設定這個事件并根據應用層的判斷結果進行后續的處理.
代碼實作繁瑣,而且這ring0到ring3層1個來回明顯降低運行效率。
如果沒有直接的內核API有想有較高的運行效率,只能考慮作PE檔案內容決議了。但這將是一個龐大的作業。
uj5u.com熱心網友回復:
工程實作中到處充斥著折中。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/112512.html
標籤:硬件/系統
上一篇:Windows 開發在一個視窗的edit control里面取另一個視窗的句柄
下一篇:雙擊滑鼠重繪區域
