阅读:1524回复:6
如何以 WORD 长度 读出 端口 数据 ???
今天看到了一段读出端口数据的 驱动,试了一下,可以用,
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 ,或 一定长度来 读取或写入端口数据,能不能作到啊 ? |
|
|
沙发#
发布于:2005-03-07 22:41
使用_inpw、_inpd、_outpw和_outpd等函数就可以
今天看到了一段读出端口数据的 驱动,试了一下,可以用, |
|
|
板凳#
发布于:2005-03-08 09:31
用这些READ_PORT_UCHAR,READ_PORT_USHORT,READ_PORT_ULONG
WRITE_PORT_UCHAR,WRITE_PORT_USHORT,WRITE_PORT_ULONG |
|
|
地板#
发布于:2005-03-08 09:32
建议你使用HAL的函数来IO,最安全,方便.
|
|
|
地下室#
发布于:2005-03-09 19:38
wowocock :
建议你使用HAL的函数来IO,最安全,方便. 我没看到引用的按扭,只能这样copy 了 都有些什么样的 hal 函数 呢 ? 而且有个问题,就是 对于端口的类型 , 长度 ,是怎样的 , 是 UCHAR,WORD , DWORD ,还是都可以 ? 返回值的长度 也是 这样吗 ? |
|
|
5楼#
发布于:2005-03-09 20:15
用这些READ_PORT_UCHAR,READ_PORT_USHORT,READ_PORT_ULONG |
|
|
6楼#
发布于:2005-03-11 15:37
人家回答正确怎么都不给分呢?
|
|
|