PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[討論] WinIO 32bit在OS:64bit下執行方法
作者:
srxrrr
(幹!我是肌董)
2014-11-28 16:51:21
大家都知道WinIO有分32與64bit的版本
但最近發現一件很有趣的事情
32bit的WinIO竟然可以在64bit的OS下正常動作
(不確定是不是全部功能都可以 但讀取SMBIOS資訊和進入EC讀寫都沒問題)
這樣就可以只寫一套程式 通吃32/64的作業系統! (在Win7&8都試過可行)
但...
方法很奇怪 也不確定是不是大家能接受@@
網路上找過關鍵字好像也沒啥看到相關討論
<<方法>>
Step1.
先執行一次"WinIo64bit"的InitializeWinIo()
(記得要停用驅動程式強制簽章喔!)
Step2.
接下來再執行WinIo32bit 即可正常使用32bit環境下的WinIo功能
(直到關機前WinIo32都可正常使用 重開機就要再執行一次Step1 =_=)
原因...我也不知道為什麼Orz 亂試試出來的(本身對系統底層也很不了解)
直接的猜測是執行WinIo64時 註冊了OS裡的某個東西
所以接下來再使用時 由於通道已開通 而可正常使用!
...可能大家會覺得很沒意義 但對舊的程式都是32bit所撰寫的則應該會有很大幫助@_@
不必修改原code 即可在OS:64bit上執行
<<討論>>
當然是希望能找出原因
這樣則可做出一個真正通吃32/64bit作業系統的WinIo
而不必使用上述這種旁門左道 囧
為了找出為什麼會有這種事 我手賤去看了一下WioIo的code
<作法>
在OS:64bit下 與尚未開通WinIo64bit前
使用32bit的WinIo執行
從函數InitializeWinIo()內來尋找問題原因 (因為這是開通WinIo的第一步@@)
<結果>
**必須先強調 是執行到這步就會出現問題 並非後續的步驟沒有問題**
逐步測試後發現是在 StartWinIoDriver() 內的
OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS) 發生問題
會回傳false 所以WinIo32無法在OS:64bit下執行
反之 如果先執行過WinIo64的InitializeWinIo() 再執行WinIo32的相同函式
則會回傳true 即可正常使用
但即使知道問題可能出在這 我也沒有能力能解決Orz
不知道有沒有高手瞭解這個部分
能熱心分享與討論的^_^
謝謝!!
作者:
LPH66
(-6.2598534e+18f)
2014-11-28 19:15:00
http://tinyurl.com/l8vr4pz
OpenSCManager 的說明你看要不要試著抓一下 GetLastError 看到底是什麼問題...
繼續閱讀
Re: [問題] c++擲骰子題目 賭香腸
bwzhan
[問題] 2D陣列傳值
future314
[問題] c++擲骰子題目 賭香腸
sone90935
[問題] iterator的作用是什麼?
Lepton
[問題] 一題作業題目
OwTaingJune
[問題] 安裝library
NeiSeHai
[問題] MPI在win7的安裝問題
m4141922
[問題] Windows Service 貌似沒動作..
BIAO
Re: [問題] const擺放位置
AntaresStar
[問題] C語言變數
cherry1225
Links
booklink
Contact Us: admin [ a t ] ucptt.com