使用WinIO庫實現保護模式下的IO和內存讀寫

問題已解決:

  原因是函數的調用方式與WinIO中不一致,使用的時候漏掉了__stdcall

? ? ? 函數原定義為:

? ? ?

?

在實際的GPIO讀寫中遇到以下問題:

  SetPortVal可正常寫入,但是GetPortVal無法讀取,程序崩潰,問題事件名稱:BEX, 具體原因正在調查。

?

?

以下內容為參考:

使用WinIO庫實現保護模式下的IO和內存讀寫

?

本篇文章主要介紹了"使用WinIO庫實現保護模式下的IO和內存讀寫(_inp,_outp) ",主要涉及到使用WinIO庫實現保護模式下的IO和內存讀寫(_inp,_outp) 方面的內容,對于使用WinIO庫實現保護模式下的IO和內存讀寫(_inp,_outp) 感興趣的同學可以參考一下。

?

使用WinIO庫實現保護模式下的IO和內存讀寫(_inp,_outp)

在WindowsXP等NT內核的操作系統中,#include?"conio.h"中定義的端口讀寫函數_inp,_outp已經不能直接使用了,這是因為Window的保護模式不允許對IO直接進行直接操作。但是在工業控制領域,對IO的讀寫是最基本的操作,尤其是對ISA總線或并口這類固定地址的存儲設備的訪問,我們必須能夠高效的進行IO讀寫來進行數據采集。

這里給出的解決方案是使用http://www.internals.com/提供的解決方案,即使用其網站上的WinIO.dll。其關鍵在與InitializeWinIo()函數調用之后,_inp,_outp函數可以被成功調用,在使用結束后再調用ShutdownWinIo()即可。

需要注意的是在程序運行的目錄下必須要有Wio.dll,Wio.sys和Wio.vxd。也就是說我們調用WinIO庫來實現IO讀寫實質上是在調用一個驅動,只有驅動級別的可執行文件才能解除保護模式(可能是進入了內核模式),實現對IO的直接讀寫。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456239.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456239.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456239.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php 一些個 常用 函數

urlencode()函數原理就是首先把中文字符轉換為十六進制,然后在每個字符前面加一個標識符%。urldecode()函數與urlencode()函數原理相反,用于解碼已編碼的 URL 字符串,其原理就是把十六進制字符串轉換為中文字符json_decode(json,true); 輸出的…

windows10中遠程訪問憑據不工作

遠程同學電腦,發現輸入賬號密碼還是不行,提示您的憑據不工作,問題解決:WinR---gpedit.msc網絡訪問----經典。轉載于:https://blog.51cto.com/germa66/1934745

pycharm的 crtl + r 使用正則表達式進行 request-header格式更改

pycharm的 crtl r 使用正則表達式進行 request-header格式更改 復制粘貼之前 使用 ‘’‘ ’‘’ 保證格式不亂 改為正確格式

Android(組件大全)

ORM: Android GreenDao sqlite UI: Snackbar是Android支持庫中用于顯示簡單消息并且提供和用戶的一個簡單操作的一種彈出式提醒。當使用Snackbar時,提示會出現在消息最底部,通常含有一段信息和一個可點擊的按鈕。Support Design Library轉載于:https://w…

QT的常用對話框的應用

QMessageBox類提供了常用的彈出式對話框&#xff1a;提示、警告、錯誤、詢問、關于對話框 需要添加頭文件 #include <QMessageBox> MESSAGE 是要是顯示的字符串 void Dialog::criticalMessage() { QMessageBox::StandardButton reply; reply QMessageBox::critical…

【spider】Tesseract機器視覺實現驗證碼識別

本文將重點介紹機器視覺的一個分支&#xff1a;文字識別&#xff0c; 介紹如何用一些 Python庫來識別和使用在線圖片中的文字 我們可以很輕松的閱讀圖片里的文字&#xff0c;但是機器閱讀這些圖片就會非常困難&#xff0c;利用這種人類用戶可以正常讀取但是大多數機器人都沒法…

初識MVC

好多次聽見別人說MVC&#xff0c;那么MVC到底是什么呢&#xff1f;今天來一探到底&#xff0c;揭開其神奇面紗。。 MVC介紹&#xff1a; MVC全名Model View Controller&#xff0c;是模型&#xff08;Model&#xff09;-視圖&#xff08;View&#xff09;-控制器&#xff08;Co…

【spider】selenium模擬點擊斗魚示例

from selenium import webdriver import timeurl https://www.douyu.com/directory/all# 動態html網頁加載可能出現的問題&#xff1a;element is not attached to the page document # 標簽沒有及時的加載顯示出來&#xff0c;如果加載時間不夠&#xff0c;可能報錯 # try e…

webpack簡介

webpack是 前端資源模塊化管理工具和打包工具&#xff1b;webpack本身只能識別模塊引入&#xff0c;打包模塊的功能&#xff1b;webpack能識別ES Moudule、common JS等模塊規范一、現有模塊系統1、CommonJS關鍵詞&#xff1a;module.exports exports require特點&#xf…

【Python + Selenium】之JS定位總結

1、滾動條 driver.set_window_size(500,500) js "window.scrollTo(0,200)" #左&#xff1a;距左邊橫滾、右&#xff1a;距上邊豎滾 driver.execute_script(js) 2、獲取元素的值 button driver.find_element_by_css_selector("#su") #定位按鈕 input…

BigDecimal類整除報錯的解決方案

例如&#xff1a; BigDecimal num1 new BigDecimal("10"); BigDecimal num2 new BigDecimal("3"); BigDecimal num3 num1.divide(num2); 其實devide的函數定義如下 BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;…

NodeJS中的require和import

ES6標準發布后&#xff0c;module成為標準&#xff0c;標準的使用是以export指令導出接口&#xff0c;以import引入模塊&#xff0c;但是在我們一貫的node模塊中&#xff0c;我們采用的是CommonJS規范&#xff0c;使用require引入模塊&#xff0c;使用module.exports導出接口。…

【selenium】selenium和requests登陸的區別

requests登陸 import requests import time t int(time.time()*1000) # 創建一個會話 s requests.Session() post_url http://account.chinaunix.net/login/login data {username: xxxxxxxxx,password: xxxxxxxxx,_token: nmSXhgHib8dTIC9DrATSkTzBBo4zz9eqDEPeG5i1,_t: t…

【spider】多線程爬蟲

多線程工作原理 多線程示意圖 Queue&#xff08;隊列對象&#xff09; queue是python中的標準庫&#xff0c;可以直接from queue import Queue引用;隊列是線程間最常用的交換數據的形式 python下多線程的思考 對于資源&#xff0c;加鎖是個重要的環節。Queue&#xff0c;是線…

css設置文字上下居中,一行文字居中,兩行或多行文字同樣居中。

HTML: <div class"book-detail-store-item align-center-vertical">居中文字</div> CSS: .book-detail-store-item {width: 50px&#xff1b;height&#xff1a;50px&#xff1b;line-height: 25px;font-size: 12px;}/*flex垂直居中對齊*/ .align-center…

MySQL/sqlserver查詢in操作 查詢結果按in集合順序顯示

2019獨角獸企業重金招聘Python工程師標準>>> MySQL/sqlserver查詢in操作 查詢結果按in集合順序顯示 MySQL用下面的語句 select * from ibs6_terminal_adv_inf where id in (16,14,15) order by field(id,16,14,15) select * from ibs6_terminal_adv_inf where id in…

【機器學習】opencv-人臉識別

一 . opencv是什么及其作用&#xff1f; OpenCV是一個基于BSD許可&#xff08;開源&#xff09;發行的跨平臺計算機視覺庫&#xff0c;可以運行在Linux、Windows、Android和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C 類構成&#xff0c;同時提供了Python…

關于java中的集合如何刪除一個元素。

我們有三種方法可以刪除集合中的元素&#xff0c;下面介紹兩種方法&#xff0c; 一種是傳統的for循環&#xff0c;另一種是使用Iterator迭代器(推薦使用)&#xff0c;簡單的介紹如下&#xff1a; for循環刪除元素: public class ForRemove<T>{ public void forDelete(…

她說程序員不懂浪漫,生日宴上慘變單身狗,其實,程序員的浪漫你不懂!

css蛋糕誰說程序員不懂得浪漫&#xff0c;只是程序員的浪漫你不懂&#xff01;PS&#xff1a;人家都不懂&#xff0c;你再浪漫有啥用&#xff0c;最后還不是單身狗&#xff1f;說實在的&#xff0c;以前也分享過一個程序員用純CSS畫的一個MAC&#xff0c;代碼就三千多行&#x…

H.264 picture parameter sets成員值含義學習筆記

-picture parameter sets1. pic_parameter_set_idpic_parameter_set_id指明了在切片頭中對應的某個psp.pic_parameter_set_id的值應該在0到255,包括0和2552. seq_parameter_set_idset_parameter_set_id表示激活的sps.seq_parameter_set_id應該取值在0到31之間,包括邊界值.3. en…