Windows下對硬體連接埠的操作---WinIo庫的使用

來源:互聯網
上載者:User

標籤:路徑   網上   code   window   .dll   shutdown   sys   注意   return   

本文參考了網上的一篇文章“VC 2010下WinIo 3.0直接存取I/O連接埠”;

由於Windows的核心保護機制,我們無法直接對通過核心操作硬體,通過使用WinIo可以繞過這一限制,實現對Windows硬體連接埠或者地址的直接操作。實際操作中發現WinIo庫既可以對普通的I/O連接埠進行操作,也可以對GPIO進行操作。

關於WinIO的相關內容網路上的參考資料很多,這裡只記錄我自己遇到的問題(使用中需要注意的點):

1.64位作業系統下需要將WinIo.sys驅動檔案添加數位簽章。

2.注意WinIo.sys和WinIo.dll這兩個檔案的存放路徑,如果路徑不對,會導致初始化失敗。

3.下載下來的WinIo檔案中有一個DLL檔案夾,如果發現初始化失敗,我們可以打斷點跟蹤到dll裡面去查看是哪裡出了問題。例如,我在win8.1下使用的時候發現初始化失敗,跟進去發現是OpenSCManager()函數返回了false,則是由於win8.1的使用者權限設定導致的,通過尋找響應的註冊表位置即可初始化成功(參考網上的解決辦法)。

 4.使用WinIo的函數之前我們需要知道具體想要操作的是哪個連接埠,或者地址位置才行。

5.需要先將將DLL根據響應的版本進行編譯(32位/64位)。

6.操作連接埠需要調用GetPortVal()/SetPortVal()函數,如果是操作具體的物理地址則需要調用GetPhyLong()/SetPhyLong()函數

下面是一個簡單是執行個體

 1 // WinIoDemo.cpp : 定義控制台應用程式的進入點。
4 #include "stdafx.h" 5 #include <Windows.h> 6 #include <iostream> 7 #include "winio.h" 8 #include <conio.h> 9 #include "GPIO_DLL.h"10 using namespace std;11 12 #define GPIO_PORT 0xFED10000 //假定的某個特定的物地址17 int _tmain(int argc, _TCHAR* argv[])18 {19 bool bResult;20 21 bResult = InitializeWinIo();22 23 if (!bResult)24 {25 cout<<"error to initialize winio..."<<endl;26 27 return -1;28 }29 else30 {32 unsigned long val;
33 unsigned long Data;
34 GetPhysLong((PBYTE)GPIO_PORT,&val);
35 printf("Current Value: %4x \n",val);36 43 Data = val | 0x02; //對bit1進行設定45 46 printf("Current Value: %4x \n",Data);47 48 bool br = SetPhysLong((PBYTE)GPIO_PORT,Data);49 66 ShutdownWinIo();67 }68 printf("\nPress anykey to continue...");
69 _getch();
70 return 0;71 }

 

Windows下對硬體連接埠的操作---WinIo庫的使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.