![實(shí)現(xiàn)在Windows下直接讀寫內(nèi)存的方法_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed1.gif)
![實(shí)現(xiàn)在Windows下直接讀寫內(nèi)存的方法_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed2.gif)
![實(shí)現(xiàn)在Windows下直接讀寫內(nèi)存的方法_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed3.gif)
![實(shí)現(xiàn)在Windows下直接讀寫內(nèi)存的方法_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed4.gif)
![實(shí)現(xiàn)在Windows下直接讀寫內(nèi)存的方法_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed/f3bc5138-d79f-4cbf-aac7-1acb82c8a8ed5.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)現(xiàn)在Windows下直接讀寫內(nèi)存的方法 Windows以它一致的圖形用戶界面、完善的內(nèi)存管理等特點(diǎn),已被廣大用戶所接受,但在Windows下,計(jì)算機(jī)已運(yùn)行在保護(hù)模式,雖然Windows已提供了一整套的內(nèi)存管理函數(shù),用戶還是不可訪問指定地址的內(nèi)存,致使許多中、小型企業(yè)開發(fā)的計(jì)算機(jī)插件無法在Windows下使用,因?yàn)榫帉戲?qū)動(dòng)程序是很費(fèi)事的。他們僅希望能直接讀、寫電路板所占的內(nèi)存即可。本文介紹的是在Windows 3.1下,用Borland
2、0;C+ 3.1編程環(huán)境,實(shí)現(xiàn)用戶對(duì)內(nèi)存直接讀寫的方法,讀者不難將它移植到其它編程語言。 1.利用Windows提供的各個(gè)段選擇符標(biāo)號(hào),在C源程序中將選擇符標(biāo)號(hào)說明為外部變量。其對(duì)照表如下: 表1 2.利用宏定義MAKELONG(段內(nèi)偏移量,&段選擇符標(biāo)號(hào))即可得到一個(gè)長指針。 3.經(jīng)上述方法得到的指針與C語言中定義的指針是一樣的。 4.如果使用的段是D000H或E000H或其它上位內(nèi)存時(shí),需改動(dòng)Windows的系統(tǒng)配置文件SYSTEM.INI,利用字符編輯器,在386Enh小節(jié)中加入EmmExclude=xxxxyyyy一行,禁止Windows使用這段存儲(chǔ)空間。
3、值xxxx和yyyy是16位內(nèi)存范圍。如開發(fā)的插件占用D000H段的64K,則應(yīng)加入這樣一行:EmmExclude=d000-dfff。 利用這一方法,已使我們自己開發(fā)的電路板(占用D000H段),在Windows控制下成功地運(yùn)行了??紤]到讀者沒有相應(yīng)的硬件,這里以讀取中斷向量、計(jì)算機(jī)ROM的制造時(shí)間和對(duì)DOS用戶通訊區(qū)的讀寫為例,詳見以下程序。對(duì)于DOS用戶通訊區(qū)的內(nèi)容,讀者可用DOS的DEBUG程序檢查(D命令)和修改(E命令)。DOS的用戶通訊區(qū)在004000F0H處開始,共計(jì)16個(gè)字節(jié)。在修改時(shí)請(qǐng)注意:從004000F0H開始存放可顯示ASCII碼字符串,并以0結(jié)尾。 ; M
4、EMORY.DEF 模塊定義文件 NAME Memory DESCRIPTIONdemonstrate an intergrated menu EXETYPEWINDOWS STUBWINSTUB.EXE CODEPRELOAD MOVEABLE DISCARDABLE DATAPRELOAD MOVEABLE MULTIPLE HEAPSIZE1024 STACKSIZE8192 EXPORTSWndProc /*- MEMORY.RC 直接讀寫內(nèi)存的資源定義文件 -*/ #include "
5、memory.h" MemoryMenu MENU BEGIN POPUP"取中斷向量&I" BEGIN MENUITEM "int 0&3h", IDM-INT03H MENUITEM "int &10h", IDM-INT10H MENUITEM "int &21h", IDM-INT21H END POPUP "ROM區(qū)域&R" B
6、EGIN MENUITEM "制造時(shí)間&T", IDM-TIME MENUITEM "取用戶通訊區(qū)&U", IDM-READ MENUITEM "存用戶通訊區(qū)&S", IDM-WRITE END MENUITEM "/a退出&X", IDM-EXIT END /*- MEMORY.H 直接讀寫內(nèi)存的頭文件 -*/ #define IDM-INT03H 101 #define IDM-INT10H
7、102 #define IDM-INT21H103 #define IDM-TIME201 #define IDM-READ202 #define IDM-WRITE203 #define IDM-EXIT300 /*- MEMORY.C 用戶對(duì)固定內(nèi)存直接讀寫的表演程序 -*/ #include<windows.h> #include "memory.h" #include <dos.h> int PASCAL WinMain(HANDLE,HANDLE,LP
8、STR,int); long FAR PASCAL WndProc(HWND,UINT,UINT,LONG); /*-WinMain()-*/ int PASCAL WinMain(HANDLE hInstance,HANDLE hPrevInstance ,LPSTR lpszCmdLine,int nCmdShow) MSG msg; HWND hWnd; WNDCLASS wndclass; if (! hPrevInstance) wndclass.styl
9、e=CS-HREDRAW | CS-VREDRAW; wndclass.lpfnWndProc=WndProc; wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.hInstance=hInstance; wndclass.hIcon=LoadIcon(NULL,IDI-APPLICATION); wndclass.hCursor=LoadCursor(NULL,IDC-ARROW); wndclass.hbrBackground=GetStockObject(WHITE-BRUSH); wndclass.lpsz
10、MenuName="MemoryMenu" wndclass.lpszClassName="直接讀寫存儲(chǔ)器" if (! RegisterClass (&wndclass) return FALSE; hWnd=CreateWindow( "直接讀寫存儲(chǔ)器", "直接讀寫存儲(chǔ)器", WS-OVERLAPPEDWINDOW, CW-USEDEFAULT, CW-USEDEFAULT, CW-USEDEFAULT, CW-USEDEFAULT, NULL, NULL, h
11、Instance, NULL); if (! hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); while (GetMessage(&msg,N ULL,0,0) TranslateMessage(&msg);DispatchMessage(&msg);return msg.wParam;/*-WndProc()-*/long FAR PASCAL WndProc (HWND hWnd, U
12、INT message, UINT wParam,LONG lParam)HDChDC;HPEN hOldPen,hNewPen;RECTrect;TEXTMETRICtm;PAINTSTRUCTps;UINT i;char Strbuf50;WORD far * InterruptVector;char far * bios;extern WORD-0000H;extern WORD-0040H;extern WORD-F000H;switch (message)case WM-COMMAND:switch (wParam)case IDM-INT03H:InterruptVector=(W
13、ORD far *)MAKELONG(0,&-0000H);wsprintf(Strbuf,"向量地址:%04X:%04XH/n",*(InterruptVector+0x06),*(InterruptVector+0x07);MessageBox (hWnd,Strbuf,"int 03h", MB-OK | MB-ICONSTOP);return 0;case IDM-INT10H:InterruptVector=(WORD far *)MAKELONG(0,&-0000H);wsprintf(Strbuf,"向量地址:%04X:%04XH/n",*(InterruptVector
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)現(xiàn)場管理提高工作效率的關(guān)鍵
- 生產(chǎn)標(biāo)準(zhǔn)化與持續(xù)改善的策略探討
- 物流行業(yè)中的移動(dòng)支付解決方案探討
- 生態(tài)旅游中的文化保護(hù)傳承
- 2025年徐州道路運(yùn)輸從業(yè)資格證考試
- 電商平臺(tái)中知識(shí)產(chǎn)權(quán)的維權(quán)策略
- 未來電商行業(yè)網(wǎng)絡(luò)直播發(fā)展展望
- 電商運(yùn)營中的客戶服務(wù)與產(chǎn)品支持
- 現(xiàn)代辦公環(huán)境與城市發(fā)展的共生關(guān)系研究報(bào)告
- 電子商務(wù)交易中數(shù)據(jù)安全的財(cái)務(wù)價(jià)值評(píng)估
- GB/T 45177-2024人工光型植物工廠光環(huán)境技術(shù)規(guī)范
- 2025年個(gè)人學(xué)習(xí)領(lǐng)導(dǎo)講話心得體會(huì)和工作措施例文(6篇)
- 2025大連機(jī)場招聘109人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2020-2025年中國中小企業(yè)行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 物流中心原材料入庫流程
- 長沙市2025屆中考生物押題試卷含解析
- 新HSK一至六級(jí)詞匯表
- 預(yù)應(yīng)力錨索施工方案
- 豇豆生產(chǎn)技術(shù)規(guī)程
- MES運(yùn)行管理辦法
- 中藥炮制學(xué)教材
評(píng)論
0/150
提交評(píng)論