llllllllg
驱动牛犊
驱动牛犊
  • 注册日期2005-01-19
  • 最后登录2015-01-08
  • 粉丝0
  • 关注0
  • 积分53分
  • 威望7点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1524回复:6

如何以 WORD 长度 读出 端口 数据 ???

楼主#
更多 发布于:2005-03-07 21:06
今天看到了一段读出端口数据的 驱动,试了一下,可以用,
case IOCTL_MYPORT_READ_BYTE:        // 从端口读字节
      pvIOBuffer[1] = _inp(pvIOBuffer[0]);
      Irp->IoStatus.Information = 8;  // 输出长度为8
      break;
case IOCTL_MYPORT_WRITE_BYTE:       // 写字节到端口
      _outp(pvIOBuffer[0], pvIOBuffer[1]);
      break;
但只能以 BYTE 长度读出来,读出来后,觉得有点不对。
因为寄存器或者数据的长度怎么也有16或32的,难道只能 8 位读出来吗 ? 或者只能这样 ? 那我连续读出 4 BYTE  , 需要怎样的运算才能和成一个 呢 ?
    我希望有一个驱动,它能够以 BYTE  , WORD ,或 一定长度来
读取或写入端口数据,能不能作到啊 ?
经典之作 , 成就经典之人 !
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-07 22:41
使用_inpw、_inpd、_outpw和_outpd等函数就可以


今天看到了一段读出端口数据的 驱动,试了一下,可以用,
case IOCTL_MYPORT_READ_BYTE:        // 从端口读字节
      pvIOBuffer[1] = _inp(pvIOBuffer[0]);
      Irp->IoStatus.Information = 8;  // 输出长度为8
      break;
case IOCTL_MYPORT_WRITE_BYTE:       // 写字节到端口
      _outp(pvIOBuffer[0], pvIOBuffer[1]);
      break;
但只能以 BYTE 长度读出来,读出来后,觉得有点不对。
因为寄存器或者数据的长度怎么也有16或32的,难道只能 8 位读出来吗 ? 或者只能这样 ? 那我连续读出 4 BYTE  , 需要怎样的运算才能和成一个 呢 ?
    我希望有一个驱动,它能够以 BYTE  , WORD ,或 一定长度来
读取或写入端口数据,能不能作到啊 ?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-08 09:31
用这些READ_PORT_UCHAR,READ_PORT_USHORT,READ_PORT_ULONG
WRITE_PORT_UCHAR,WRITE_PORT_USHORT,WRITE_PORT_ULONG
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2005-03-08 09:32
建议你使用HAL的函数来IO,最安全,方便.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
llllllllg
驱动牛犊
驱动牛犊
  • 注册日期2005-01-19
  • 最后登录2015-01-08
  • 粉丝0
  • 关注0
  • 积分53分
  • 威望7点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-09 19:38
  wowocock :
            建议你使用HAL的函数来IO,最安全,方便.

我没看到引用的按扭,只能这样copy 了
都有些什么样的 hal 函数 呢  ?
而且有个问题,就是 对于端口的类型 , 长度 ,是怎样的 ,

是 UCHAR,WORD , DWORD ,还是都可以 ?

返回值的长度 也是 这样吗 ?
经典之作 , 成就经典之人 !
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2005-03-09 20:15
用这些READ_PORT_UCHAR,READ_PORT_USHORT,READ_PORT_ULONG
WRITE_PORT_UCHAR,WRITE_PORT_USHORT,WRITE_PORT_ULONG
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
xbzjackey
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望34点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-11 15:37
人家回答正确怎么都不给分呢?
回答好的不要忘了给分哦。。。
游客

返回顶部