dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:2553回复:4

关于并口的操作

楼主#
更多 发布于:2002-07-25 14:58
很多人都在此询问并口如何操作,我将我所做过的告诉大家(对win 2k而言,忘掉win 9x吧):
对并口操作,借助于ms的并口驱动会使我们的工作很轻松,简单步骤如下:
1.取得ms并口deviceobject;调用IoGetDeviceObjectPointer(),传入的ObjectName的bufer为“L\\\\Device\\\\ParallelPort0(LPT1)“,当然也可以是\\\\Device\\\\ParallelPort1(LPT2).

2.取得并口地址:大部分人操作并口时,会直接给初并口地址(0x378,0x278 and so on),这种hard code的方法是不可取的;要得到并口地址,对下层驱动发送IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO,PARALLEL_PORT_INFORMATION的OriginalController得Lowpart为0x378(LPT1),或0x278(LPT2)这样,你就去得了并口地址(我强烈反对直接给初并口地址)。

3.得到ECP模式操作的地址,有两种方法:1)在取得的并口地址上加上一个0x400;2)给下层驱动发送IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO,取得的OriginalEcpController位ecp操作地址。
4)申请占用端口。可以想下层驱动发送IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE;你也可以调用PARALLEL_PORT_INFORMATION的PPARALLEL_TRY_ALLOCATE_ROUTINE例程来占用并口,你申请了此并口后,别人就申请(用IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE或PARALLEL_PORT_INFORMATION的PPARALLEL_TRY_ALLOCATE_ROUTINE)不了,此并口为你独享了。
5)模式处理:要得到并口模式, 你可以调用IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO,取得的CurrentMode为并口操作模式,要设置模式,当然你可以调用IOCTL_INTERNAL_PARALLEL_SET_CHIP_MODE,
也可以调用IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO得PPARALLEL_SET_CHIP_MODE例程来设置并口的工作模式。
6)中断处理:不需你去调用IoConnectInterrupt(),你只需发送IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT来挂接你的中断里成即可。

具体起来内容不少,如果时间充裕的话,我会写一篇文章来专门讲述它的。
当然,如果你的驱动水平高的话,看了上面的几点你心里已经有谱了。

祝好运!

最新喜欢:

wm_createwm_cre...
游客

返回顶部