wince6.0下使用者程式訪問實體地址
應用程式直接訪問實體地址可以極大的方便硬體驅動開發.如直接訪問LCD控制器,可以很直接的對各種引數進行微調,不必一次次的編譯打包,下載執行.
wince6.0之前可以透過MmMapIoSpace將實體地址對映到程式空間.MmMapIoSpace內部實現就是常見的VirtualAlloc+VirtualCopy.
Wince6.0對核心模式也使用者模式做了相當大的改動,具體如何還不是很明瞭,清楚的是使用者態程式呼叫VirtualCopy實體地址時會返回失敗,導致MmMapIoSpace返回0.
繞過去的思路就是載入部分程式碼到核心模式,在這部分程式碼中完成地址對映.有兩種實現的方法,一個是透過ActivateDevice載入一個流介面驅動,有點繁瑣,實現標準介面的驅動,修改登錄檔,再載入呼叫.另一個就是透過LoadKernelLibrary載入動態庫到核心空間,然後透過KernelLibIoControl完成對映.
程式碼中幾個關鍵的地方
1 上面我們提到是在核心空間完成對映,而不是在核心空間訪問實體地址.因為wince6.0提供了VirtualAlloc+VirtualCopy的增強版:VirtualAllocEx+VirtualCopyEx,可以直接將實體地址對映到使用者程式的地址空間.
2 LoadKernelLibrary沒有相應的FreeKernelLibrary,我們可以在核心模式動態庫中透過FreeLibrary或者FreeLibraryAndExitThread自身來實現
附:無意中在網上搜到別人轉載的這篇文章,給出來的實現卻是繁瑣的第一種方式.故加上這麼一小段:
我後面的博文基於命令列的WINCE驅動開發工具 已經實現第二種方式在AP中直接訪問實體地址.裡面包含的mapper.dll,匯出來有兩個介面
LPVOID MapAddress(DWORD dwAddress,DWORD dwSize);
void UnmapAddress(LPVOID pAddress);
有需要的朋友可以在你的AP中,透過這兩個介面對映實體地址到本地地址,然後就可以訪問該實體地址了.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/116625/viewspace-981367/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- wince6.0下的實體地址對映和共享
- wince5.0下實體地址訪問
- 使用者態程式的虛擬地址如何轉換成實體地址
- Windows 95/98下直接訪問實體記憶體 (轉)Windows記憶體
- PostgreSQL IP地址訪問配置SQL
- vivo短影片使用者訪問體驗最佳化實踐
- vivo 短影片使用者訪問體驗最佳化實踐
- 內網IP地址實現HTTPS加密訪問教程內網HTTP加密
- Linux下邏輯地址、線性地址、實體地址詳細總結Linux
- wince6.0下DeviceEmulator 基於共享資料夾的hive實現devHive
- 訪問使用者中心實現認證
- 實體地址、虛擬地址
- 模擬ip訪問(附模擬手機訪問)遠端地址
- 如何遮蔽某IP地址訪問網站網站
- 【Eclipse】--修改專案訪問地址頭Eclipse
- js如何獲取當前使用者訪問的ip地址以及城市地區?JS
- .net core下訪問控制層的實現
- 獲取訪問者真實ip地址?我覺得不可能
- Nginx 實戰-04-nginx 不同的地址訪問不同的服務Nginx
- 資料庫VIP地址無法訪問(二)資料庫
- 資料庫VIP地址無法訪問(一)資料庫
- xp系統下怎樣更改網路卡實體地址
- 程式設計實現遍歷ACL訪問控制列表檢查程式訪問許可權程式設計訪問許可權
- 不同網站移動使用者訪問體驗報告網站
- 多個人訪問實體Bean,這個Bean訪問幾次資料庫啊?Bean資料庫
- Tomcat下Servlet的地址問題TomcatServlet
- windows伺服器下指定IP地址遠端訪問伺服器的設定方法Windows伺服器
- 實體“微地址”的遐想
- Java web 專案,在網頁url地址訪問名JavaWeb網頁
- vue執行後network的IP地址訪問不了Vue
- 使用SQLNET.ora檔案限制Ip地址訪問SQL
- 有道翻譯軟體下載地址
- MySQL建立使用者授權訪問MySql
- 記一次資料庫某一使用者下訪問變慢的問題資料庫
- 如何實現多層目錄下訪問控制器
- 微信小程式實現生成excel,xlsx.mini.min下載地址微信小程式Excel
- 微信小程式開發者工具下載地址微信小程式
- 程式集特性訪問器