首页
社区
课程
招聘
[求助]关于并口驱动
发表于: 2008-1-2 11:08 6112

[求助]关于并口驱动

2008-1-2 11:08
6112
想用KMD写一个并口驱动程序,应用程序利用DeviceIoControl向驱动程序发送IRP请求,然后,驱动程序对并口进行相应的设置,在内核模式下进行这种操作想想应该是很简单的,驱动程序在响应IRP请求时,进行类似如下操作应该就可以了:
        mov        al,55h
        out        byte ptr 378h,al

我机子上并口地址为:378h, 上面代码就是往这个并口地址上发送55h这个数据,结果发现执行之两条语句之后,并口值一点变化也没有,可以肯定的是:这两条语句已经执行了。

不知何故,是否还要对并口进行其它的设置,请高手指点,谢谢!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
怎么也没人理我啊~~~
2008-1-3 12:25
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
看来这个问题太简单了,高手都不愿意理会

网上也有一个很流行的并口驱动及源码(WinIO), 看了一下源码,它是利用 I/O许可位图 来实现的, 从而允许用户程序直接操作端口.

我想用另一种方式来实现, 在驱动程序中直接用out指令来操作端口,怎么就不行了
2008-1-4 16:41
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
4
莫非是
mov  al,55h
mov  dx, 378h
out  dx, al
2008-1-5 09:45
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
5
forgot大哥指点得太好了, 正是如此,谢谢,让小弟走出迷津.

其实我是从KmdKit那份教程中,控制扬声器例程中那样学的,其代码如下:

MakeBeep1 proc dwPitch:DWORD
    cli
    mov al, 10110110y
    out 43h, al
    mov eax, dwPitch
    out 42h, al
    mov al, ah
    out 42h, al

    ; Turn speaker ON
    in al, 61h
    or  al, 11y
    out 61h, al
    sti
    DO_DELAY
    cli

    ; Turn speaker OFF
    in al, 61h
    and al, 11111100y
    out 61h, al

    sti
    ret

MakeBeep1 endp

它这里控制计算机端口地址就直接用的是数值,而不是用寄存器间接表示的.

而控制并口的地址却要用寄存器来间接寻址, 有点不解.(也许是此时地址已超过了8位,就要求用寄存器来表示了吧)

再次感谢forgot大哥!
2008-1-5 11:32
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
6
不知道你用什么assembler,那个 byte ptr 貌似有些问题
2008-1-5 14:24
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
7
我用的是RadASM

我本来是想象MakeBeep程序那样: out 378h,al, 但编译通不过. 于是,我就加了一个byte ptr,这样编译就通过了,程序运行也没有异常, 结果还是这里出了问题
2008-1-5 15:21
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
8
00401000 >  CC              int3
00401001    B0 55           mov     al, 55
00401003    E6 71           out     71, al                           ; I/O command

看来是masm的bug,截断了这个word没有warnning
2008-1-5 16:23
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
9
原来如此,谢谢forgot大哥的耐心分析指点

我怎么就没查看一下反汇编代码呢?
2008-1-5 16:36
0
游客
登录 | 注册 方可回帖
返回
//