阅读:1178回复:12
请高手们帮帮我~~~~~~~~~~~~~~~
例如一块D/A卡的驱动:
应用程序中首先得到卡的基地址,然后就可以对卡进行读写操作,例如,_outpw(BaseAddress+0x01,data); 那么驱动程序中的DispatchRead或者DispatchWrite例程又该做点什么呢? 真的糊涂了,请各位帮帮忙!先谢谢了。 明白了马上给分! 顺便问一下,加载驱动程序有几种方法呢?哪种方便一点呢? ABC初学 那里没人回答我,只能来这里问各位高手了,实在不好意思。请各位给我讲讲吧~~~~~~~~~~ :( |
|
沙发#
发布于:2004-06-07 09:52
例如一块D/A卡的驱动: 好奇, |
|
板凳#
发布于:2004-06-08 21:04
我也奇怪,可是我看到有人做的驱动确实在这么做了,所以我就糊涂了,2000不能实现对端口的直接读写吗?应该可以吧?那么这样的驱动到底还有什么事好做呢?:(
|
|
地板#
发布于:2004-06-09 08:13
我也奇怪,可是我看到有人做的驱动确实在这么做了,所以我就糊涂了,2000不能实现对端口的直接读写吗?应该可以吧?那么这样的驱动到底还有什么事好做呢?:( NT/2000/XP不能在应用程序中直接读写端口(9x可以)。这些工作一般放到Driver作,所以DispatchRead或者DispatchWrite例程该做什么就清楚了吧? |
|
|
地下室#
发布于:2004-06-09 10:01
你用些端口的调用,其实最后还是到driver里去,系统会见它转换成相应的控制码。就看driver能不能识别这个控制码了。
|
|
5楼#
发布于:2004-06-09 11:39
我看到一个程序是这么做的,而且能够正常运行:
static unsigned short DA; #define DA0Word ((unsigned short)(DA+0x0000)) #define DA1Word ((unsigned short)(DA+0x0002)) hDevice=CreateFile("\\\\.\\drivername",GENERIC_READ|GENERIC_WRITE, 0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); status=ReadFile(hDevice,&DA,inCount,&bR,NULL); _outpw(DA0Word,dacout1); _outpw(DA1Word,dacout2); 是我只看到了表面呢?还是有其他的原因?请各位指点指点。。。 |
|
6楼#
发布于:2004-06-09 22:49
我看到一个程序是这么做的,而且能够正常运行: 是9x下吧 |
|
|
7楼#
发布于:2004-06-09 23:09
是2000下:(
_outpw(DA0Word,dacout1);这种语句在2000下一定不能用吗? 如果能用的话,还要怎样做? 因为我看到过的一个程序确实这么做了。。。 |
|
8楼#
发布于:2004-06-10 11:23
2000下应用程序不不能直接调用,驱动中我没有这样使用过,我是使用in、out指令来完成的
|
|
|
9楼#
发布于:2004-06-10 11:29
是2000下:( 可能是将_outpw重新定义了。 |
|
|
10楼#
发布于:2004-06-10 16:07
能不能说的具体点儿?怎样重新定义才能做到这点??
|
|
11楼#
发布于:2004-06-16 19:01
哈!我刚解决了一个这样的问题,只要将BASEADDRESS做为参数直接传给READ、WRITE函数即可。
|
|
|
12楼#
发布于:2004-06-18 00:30
楼上的兄弟,其他的不需要做什么工作了吗?
|
|