| 
			 
					阅读:1672回复: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				
			
					人家回答正确怎么都不给分呢?				 
							 | 
	|
					
						
  |