社区
硬件/系统
帖子详情
在WINDOWS下有什么办法可以读写任一个IO端口?
overflywing
2003-08-21 01:30:33
在WINDOWS下有什么办法可以读写任一个IO端口?除了写驱动外。
...全文
458
13
打赏
收藏
在WINDOWS下有什么办法可以读写任一个IO端口?
在WINDOWS下有什么办法可以读写任一个IO端口?除了写驱动外。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kittycai
2003-08-27
打赏
举报
回复
还是自己写个简单的驱动吧
spbabyba
2003-08-27
打赏
举报
回复
下载 winio吧,里面有说明我原程序.
spbabyba
2003-08-27
打赏
举报
回复
下载winio吧,里面有使用说明.
ajn_sailing
2003-08-26
打赏
举报
回复
不是的,98下可以,2000下不行的。
利用winio好些
AthlonxpX86
2003-08-26
打赏
举报
回复
CreateFile();只能打开驱动程序,通过驱动程序倒是能访问端口,但是前提是有驱动
lygfqy
2003-08-26
打赏
举报
回复
赞成使用CreateFile();
AthlonxpX86
2003-08-26
打赏
举报
回复
楼上的兄弟,这些函数只能访问串口,不能读写端口
AthlonxpX86
2003-08-26
打赏
举报
回复
是
#include <conio.h>
int _inp( unsigned short port );
unsigned short _inpw( unsigned short port );
unsigned long _inpd( unsigned short port );
int _outp( unsigned short port, int databyte );
unsigned short _outpw( unsigned short port, unsigned short dataword );
unsigned long _outpd( unsigned short port, unsigned long dataword );
98可以
///////////////////////////////
正好说反了,2000下可以,98下不可以,
另外这个不是太好的方法,可能会出错并受到限制,MSDN上介绍好像着使用的是DOS虚拟机上的函数,只是访问的虚拟的物理端口,然后驱动程序把虚拟端口映射到物理端口,所以在98和2000下最好都用驱动的方法,winio是这样做的,98下写了VXD驱动来操作端口,2000下用#include <conio.h>
int _inp( unsigned short port );
unsigned short _inpw( unsigned short port );
unsigned long _inpd( unsigned short port );
int _outp( unsigned short port, int databyte );
unsigned short _outpw( unsigned short port, unsigned short dataword );
等来操作端口,所以建议98下面用winio,2000下自己写驱动吧,如果2000下的不会写,我这里有http://yds_086.html.533.net/
nicepose
2003-08-26
打赏
举报
回复
最好使用window的api这样什么版本的windows都可以用了
通用性强,资料和实例也多
------------------------------------------
看一下以下几个函数和结构吧
OVERLAPPED
COMMTIMEOUTS
DCB
CreateFile
ReadFile
WriteFile
ClearCommError
PurgeComm
GetOverlappedResult
GetCommState
SetCommState
SetCommTimeouts
CreateEvent
SetEvent
WaitForSingleObject
AthlonxpX86
2003-08-26
打赏
举报
回复
楼上不信去看看winio代码
#include <windows.h>
#include <winioctl.h>
#include <conio.h>
#include "port32.h"
#include "..\drv\nt\winio_nt.h"
#include "..\drv\9x\winio_9x.h"
#include "winio.h"
bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize)
{
tagPort32Struct Port32Struct;
DWORD dwBytesReturned;
if (!IsWinIoInitialized)
return false;
if (IsNT)//如果是winnt/2000/xp
{
switch (bSize)
{
case 1:
*pdwPortVal = _inp(wPortAddr);
break;
case 2:
*pdwPortVal = _inpw(wPortAddr);
break;
case 4:
*pdwPortVal = _inpd(wPortAddr);
break;
}
}
else//win9x
{
Port32Struct.bSize = bSize;
Port32Struct.wPortAddr = wPortAddr;
return DeviceIoControl(hDriver, WINIO_READPORT, &Port32Struct, sizeof(Port32Struct),
pdwPortVal, sizeof(DWORD), &dwBytesReturned, NULL);
}
return true;
}
在2000下的单布运行结果是调用了
switch (bSize)
{
case 1:
*pdwPortVal = _inp(wPortAddr);
break;
case 2:
*pdwPortVal = _inpw(wPortAddr);
break;
case 4:
*pdwPortVal = _inpd(wPortAddr);
break;
}
ndy_w
2003-08-22
打赏
举报
回复
用别人写好的驱动。google一下winio。
BSRONG
2003-08-21
打赏
举报
回复
是
#include <conio.h>
int _inp( unsigned short port );
unsigned short _inpw( unsigned short port );
unsigned long _inpd( unsigned short port );
int _outp( unsigned short port, int databyte );
unsigned short _outpw( unsigned short port, unsigned short dataword );
unsigned long _outpd( unsigned short port, unsigned long dataword );
98可以
balas
2003-08-21
打赏
举报
回复
98下可以,2000下不行。
_input();_output()
windows
网络编程------,重叠
io
,完成
端口
在了解完成
端口
之前,我们先要了解重叠
io
(完成
端口
是基于重叠
io
上实现的) 重叠
io
,即执行I/O请求的时间与线程执行其他任务的时间是重叠(overlapped)的。我们正常的的socket是socket到达后,系统通知我们socket到了,然后我们用recv把socket缓存里面的信息复制到内存上来,这个
io
的步骤就花了可观的时间,但cpu的占用却很少,就不能想个
办法
在我们
读写
的时候还能做其他...
Windows
异步
IO
的几种实现方式
Windows
上的异步
IO
有好几种实现方式。 设备内核对象 这是最简单的一种了,直接用设备内核对象的状态。比如文件句柄,线程句柄等等,这些内核对象都是有
一个
触发状态的,比如当
一个
线程结束后,线程内核对象就会被触发。 对于文件内核对象,如果
一个
异步
IO
完成了,就会把文件句柄设置为触发状态,但是有个问题就是:如果有多个异步
io
,那么只要有
一个
异步
io
完成了,文件句柄就会被设置为触发状态。
逆向
一个
直接
IO
硬盘的驱动
【文章标题】: 逆向
一个
直接
IO
硬盘的驱动【文章作者】: prince【作者邮箱】: cracker_prince@163.com【作者QQ号】: 812937【软件名称】: SectorOperator.sys【下载地址】: http://bbs.pediy.com/showthread.php?s=&threadid=30708【加壳方式】: 无【编写语言】: ---【使用工具】: IDA 5
【
Windows
原理】异步
IO
-完成
端口
(
IO
CP)
// 同步
IO
的缺点是, 在
读写
文件时, 如果文件太大, 或者
读写
的时间太长, 就会在
读写
函数中 // 阻塞住. // 异步
IO
解决了这个问题, 异步
IO
读写
文件时, 文件再大也不会阻塞住 // 但是异步
IO
要完成这样的特性是有一点付出的 // 异步
读写
文件后, 需要通过一些方式才能知道文件
读写
(
IO
任务)什么时候完成. // 这里讲的是第四个方式, 通过完成
端口
来处理已完成的
IO
任务 //...
端口
被占用的解决
办法
背景 今天启动项目,报
端口
被占用。 Caused by: org.jboss.netty.channel.ChannelExcept
io
n: Failed to bind to: /0.0.0.0:20880 at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:303) at com.alibaba.dubbo.remoting.transpo
硬件/系统
2,644
社区成员
17,229
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章