阅读:1841回复:9
xp下如何写某些特定I/O端口(如70H,读没问题)
我是用DriverStudio生成的WDM文件。在98下没有问题。对任何端口都可以进行读写。(只要该端口不是只读或只写的)
但在XP下。发现好多端口都无法写。比如70H。(在98下可以的) 我又实验了一下378H(并口).却是可以读写的。是不是XP把好多端口都屏蔽了。不给读写了??我要操作的话该怎么办啊? 我的程序很简单的。 NTSTATUS AAADevice::OnStartDevice(KIrp I) { 添加m_Myport.Initialize( 0x00, TRUE, 255, TRUE ); } 读写通过inb,outb实现。 我是新手。刚刚开始学习写驱动,请大家多多指导。 (另外我想问一下。如何自动安装驱动程序?) |
|
沙发#
发布于:2003-12-25 19:09
读写最好通过READ_PORT_UCHAR来读写
另外读写CMOS时要注意 1.cli关闭中断 2.还要对第7位进行操作 大概是这样 我也不是很在行 你可以看看PC技术内幕上的东西 上面好像有读写操作的代码你可以参考一下 |
|
板凳#
发布于:2003-12-25 19:13
不只是70H(71H我知道是只读的)其他很多端口都没办法写。(数字小的我好象没发现行的。数字大的好象才能写)
问题是98下没有问题。而XP下不可以啊! 我没牵扯什么中断。只是读写I/0端口而已。 |
|
地板#
发布于:2003-12-25 19:13
不会呀! 一般是可以读的呀.要用DDK中提供的函数来读写端口呀.
|
|
地下室#
发布于:2003-12-25 19:15
我用的是KIoRange::inb(这应该是封装了DDK的)
DDK中相应函数是什么?? 是不是XP的问题? |
|
5楼#
发布于:2003-12-26 17:56
有人回答吗??
|
|
6楼#
发布于:2003-12-26 23:29
在驱动中应该没问题,无所谓用那些HAL宏,我反汇编那些代码过,也是IN,OUT而已。。。。。。
|
|
|
7楼#
发布于:2003-12-27 09:58
READ_PORT_UCHAR READ_PORT_Ulong,READ_PORT_Ushort
write_PORT_UCHAR write_PORT_Ulong,write_PORT_Ushort READ_REGISTER_UCHAR 等等,看DDK吧。 |
|
|
论坛版主
![]() |
8楼#
发布于:2003-12-29 15:38
你怎么知道没写进去,要不写个循环多写几次,会不会总线冲突
|
|
9楼#
发布于:2003-12-29 20:48
我是先写后读的。
就是先把端口设置成某个值。然后就读出来看。 在98下一切OK。 XP下有很多端口写了没用。读出来的老是那个值。 |
|