I/O Port By NT/2000/XP |
答題得分者是:axsoft
|
daniel__lee
高階會員 發表:18 回覆:124 積分:113 註冊:2002-11-10 發送簡訊給我 |
各位大大早從BCB3.0時代大家要使用I/O指令不外乎在code中加入asm來達成目的(若不使用windrive等....的話),但那也僅限於win95/98的OS而已,最近我也收尋了許多次大家po出來的文章一直也都是如此.當然也可能是我不夠細心沒找到(有的話po一下),
如果沒有;不知道有沒有哪位先進已突破NT系統的限制找出如何在NT系統下RUN I/O Port指令的方法,相信也有許多朋友也有這方面的困擾吧!!
不妨大家集思廣義的來把這個問題側底的解決掉 好嗎? ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~ |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
daniel__lee您好: 控制I/O在Windows 2k/XP/.NET 下有幾種方式. 一.透過WDM或vxd的方法 二.透過切入Ring0/call gate的方法 三.透過DDK的DeviceIoControl來控制I/O 以下資訊提供給您做參考: lcsboy版主的大作 1.【BCB】【發表】Win2K/WinXP/Win.Net 環境下讀寫IO的solution http://delphi.ktop.com.tw/topic.php?topic_id=21427 2.【BCB】【分享】在Win2K/WinXP/Win.Net讀出硬碟序號 http://delphi.ktop.com.tw/topic.php?topic_id=21428 3.【BCB】【發表】超威力的Win2K/WinXP Rin0必殺技, WinRing API:ProcessRing0 http://delphi.ktop.com.tw/topic.php?topic_id=27089 4.【BCB】【分享】讀取主機板上CMOS的時分秒(使用WinRing) http://delphi.ktop.com.tw/topic.php?topic_id=27088 5.【BCB】【發表】WinRing:任何函式皆可隨意進入Ring0(含Source) http://delphi.ktop.com.tw/topic.php?topic_id=27086 6.【BCB】【分享】parallel port I/O demo,使用lcsboy大大的WDM Driver http://delphi.ktop.com.tw/topic.php?topic_id=26780 DDK DeviceIoControl 1.【BCB】【問題】想多了解有關用程式讀取、控制PCI介面......請各位前輩幫忙 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27077 2.Using DeviceIoControl to Obtain Physical Drive Information(VB的寫法) http://www.mvps.org/vbnet/index.html?code/disk/deviodriveinfo.htm 3.【問題】如何自動取得Parallel Port 的I/O Address ?? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27291 4.WIN95/98下存取邏輯磁區 http://netcity1.web.hinet.net/UserData/vega6385/sector.htm 5.Windows 下如何使用 int 13 ?(參考觀念) http://freetech.hypermart.net/ASM/WinINT13.html 6.【問題】DeviceIoControl( )需要include其他檔案或者調整哪裡嗎? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33423 7.USB設備的除錯與測試技巧 http://www.eettaiwan.com/ART_8800300959_617734,617737.HTM.d1fd5d60 Ring0/Call Gate 1.Run any Ring 0 code from a Win32 application on Windows NT http://www.sonic.net/~undoc/ntcallgate.html 2.PortTalk - A Windows NT/2000 I/O Port Device Driver "tested with Windows XP" http://www.beyondlogic.org/porttalk/porttalk.htm 3.Windows NT/2000/XP下不用驅動的Ring0代碼實現 http://www.pcvc.net/category/content.asp?sendid=139 相關網站. 驅動研發網 http://www.driverdevelop.com/index.php Port I/O Driver http://www.driverlinx.com/ftp/unsupported/port95nt.exeHAVE A NICE DAY FOR YOU 發表人 - axsoft 於 2003/08/07 09:59:25 |
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
Kill NT 作者﹕賈佳 來源不詳 在WIN 9X下經常有這樣一些“黑客”程序,此類程序通過一些“技巧”,
運行後會把硬盤一些重要數據區打亂,如MBR,BOOT等,使得機器無法引導。
但這些程序在NT,2000下則毫無效果,我們知道,NT,2000在RING 3下,如果
你試著直接訪問硬盤的話,那麼它會提示一個錯誤信息,並取消這樣的操作。
那麼在NT,2000下能否實現對硬盤隱藏的重要數據區讀寫呢?答案是肯定的,
這需要動態加載設備驅動來實現,和設備驅動程序打交道主要是通過CreateFile、
ReadFile、WriteFile和DeviceIoControl等Win32 API來進行的。(相信你有一定
的基礎,這裡不在闡述)。下面我們來看兩個結構﹕DISK_GEOMETRY 這個結構,
用於裝載與磁盤驅動器有關的信息。IOCTL_DISK_GET_DRIVE_GEOMETRY 這個
結構用於判斷一個設備的屬性。獲知這些重要結構後,我們就可以通過以上
API來完成實際操作。下面給一個俺寫的列子,運行此程序後將直接把硬盤
重要數據區MBR中程序替換,使得硬盤不能引導。請先用工具將硬盤MBR區保存。
//--------------------------------------------------------------------------- // Kill NT 此程序中代碼只為測試,請合法使用,本人對其代碼造成損害蓋不負責 // // 作者﹕ 賈佳 // // EMail: jiasys@21cn.com // //--------------------------------------------------------------------------- #includeHAVE A NICE DAY FOR YOU 發表人 - axsoft 於 2003/08/07 10:17:57 |
daniel__lee
高階會員 發表:18 回覆:124 積分:113 註冊:2002-11-10 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: 感謝各位先進的熱烈迴響,PO了那麼多精采的資料,我看了一下其實使用各種方法都有不一樣的限制,我以直想要找出一個能在95/98/me/nt/2000/xp上run i/o port指令的方法,看來還是有一段路要走了 ........ ~ 勿在浮沙上面築高塔 ~ >>< face="Verdana, Arial, Helvetica"> daniel__lee您好: 沒有這麼複雜吧!您只要判別作業平台是哪一種(上面那一篇文章有提到),然後再選擇適當的I/O Control方法就行了! 我給你個建議: 1. win9x/Me平台採用你原來下I/O的方法 2. win2k/xp/.NET下你用lcsboy版主的方法.. 3. 在Form create的時候判定作業平台,然後選定使用的I/O Control就行了! 這樣問題就解決了!別想這麼多!..哈哈 HAVE A NICE DAY FOR YOU |
daniel__lee
高階會員 發表:18 回覆:124 積分:113 註冊:2002-11-10 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: To Axsoft 謝謝你的建議,在不同的os使用不同的方式工作我都知道,只是那麼好用的指令不甘心就這樣被os給限制住,原本以為大家可能有突破限制的方法,結果還是和我一樣被妥協了...^_^... 我有空還是會繼續收集相關的資料有新的發現在來和大家分享囉!! ~ 勿在浮沙上面築高塔 ~ daniel__lee您好: 我會建議你用的某種方法原因是,win9x與win2k/xp/.net的核心程式的工作模式有點不太一樣. NT以上一般的軟體使用權是工作在Ring3,並無法權限直接存取Ring0模式,這也是為甚麼Win2k/xp/.net會比Win9x/Me來的穩定的原因之一 使用WDM與DDK是可以直接存取Win9x/Me/Win2k/XP.NET的...我只覺得,有快速的方法解決就行了,不必偏執要用哪一種方法來做...直要能達成目的,效率也能再認可的範圍就行了! 程式設計的議題太廣泛了,不如多花點時間學點別的東西比較實在...HAVE A NICE DAY FOR YOU |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |