阅读:1252回复:3
不知道高手是否愿意出招?
其实问题很简单,就是端口读写的老问题!
在一个非设备驱动中(没有实在的外设),不用分配资源。但是需要在驱动程序对0X378这个端口地址(LPT1并口)进行读写操作。 pdx->PortLength = 3; pdx->PortStartAddress.QuadPart = 0x3bc; pdx->PortBase = (PUCHAR)MmMapIoSpace( pdx->PortStartAddress, pdx->PortLength, MmNonCached); KdPrint((DRIVERNAME \" 端口信息 %x\",pdx->PortBase)); 转换以后,打算用 HAL 函数来读写,发现一个问题 用 READ_REGISTER_UCHAR 似乎 每次读写的数据能够对上号,也就是写入以后读取,数据一致,但是, 如果采用 READ_PORT_UCHAR,根本就不对头, 问题在那里?是不是采用一种方法以后,还需要把寄存器的数据通过XX方法\"发送到\"端口?还是那里做得不对? 那第二种方法不对的地方在哪里呢? 能否麻烦高手,您帮我把这段程序完成?分数奉送 |
|
|
沙发#
发布于:2002-03-31 19:36
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2002-03-31 19:48
我不需要端口资源阿!
否则不是和并口重叠了吗?安装不行哦, 没有在inf中提出,我在adddevice 中,指定了这个资源 就是上面说的,关键的问题在后面,我已经在register中读写了得到了争取的结果,但是没有反映到并口,这个端口上面去 还请出手! |
|
|
地板#
发布于:2002-03-31 22:25
奇怪!真的奇怪!
这个读写问题在于 pdx->PortBase 采用端口读写方式,可以,但是 只有当 pdx->PortBase 为 XX03BC的格式才可以,其它数据全部不行,真很奇怪呢! 弄不明白,那个大哥帮忙弄清楚怎么回事? 是不是 内存映射问题?用的是标准函数阿! 应该也映射过的,否则,不会出现 XXX3BC 模样的数据, 奇怪.......真是丈二和尚。。。 |
|
|