阅读:1050回复:4
NT下如何读Oxcfc寄存器
在98下我的这一段程序执行正确,可是在NT下却读出来的数据是错误的。
DWORD io_CF8; DWORD io_CFC; io_CF8=0x80000000; for(;;) { outpd(0xcf8,io_CF8); io_CFC=inpd(0xcfc); io_CF8+=0x100; if(io_CF8>=0x80ffff00) break; } 哪为大虾能写出相应的NT下的代码呀,我是这样写的,可是结果和98的不一样 for(;;) { NTIsaWriteDWord(hDriver,0xcf8,io_CF8); NTIsaReadDWord(hDriver,0xcfc,&io_CFC); io_CF8+=0x100; if(io_CF8>=0x80ffff00) break; } NTIsaReadDWord(HANDLE hDriver,UINT Port,DWORD *cValue)和NTIsaWriteDWord(HANDLE hDriver,UINT Port,DWORD cValue)主要用到了DeviceIOControl(),如下: IO_PARAMS Buf; DWORD dwByteReturned; BOOL rc; if(hDriver==INVALID_HANDLE_VALUE)return FALSE; DeviceIOContro(hDriver, IOCTL_ISA_READ_DWORD,/*IOCTL_ISA_WRITE_DWORD*/ &Buf, sizeof(IO_PARAMS), &Buf, sizeof(IO_PARAMS), &dwByteReturned, 0); if(rc) { *cValue/* cValue */=Buf.ReadOut } return rc; 请教问题出在那里,急啊!!! |
|
沙发#
发布于:2002-06-11 18:09
不要使用outpd和inpd,使用系统提供的READ_PORT_XXXX函数。
|
|
|
板凳#
发布于:2002-06-11 19:17
NT下肯定是不能用outpd,inpd的,我也没有用到这些。请大虾仔细看看我的代码,帮我找出问题的结症所在吧!
|
|
地板#
发布于:2002-06-12 13:12
请教:
NTIsaReadDWord在MSDN,DDK DOC和Native API 中均没找到,请问是什么函数? |
|
地下室#
发布于:2002-06-12 13:17
你的hDriver怎么得到?
|
|