一个关于WINIO程序的问题,请你帮我分析一下出错原因,谢谢! 我用MFC建立了一个基于对话框的程序,然后我将WINIO程序的LIB文件加载进了我的工程,然后我在对话框的初始化函数中调用了InitializeWinIo函数,但奇怪的是该函数的返回值始终是0,即是说初始化不能成功,而我用WINIO包中的WIN32示例程序是可以初始化的,这就怪了,难道WINIO程序的提供的动态链接库不能在MFC中使用,应该不会吧,请你帮忙分析一下指出原因,谢谢您! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对这个包不熟, 是不是 COM 的东西AfxOleInit(); 加上这句试试(在初始化之前) 将lib文件和.h文件加入工程#include "winio.h" 把winio.dll winio.vxd winio.sys放到debug目录下 谢谢小三,问题解决了,再请问一下,为什么要把winio.dll winio.vxd winio.sys放到debug目录下?这样不是很麻烦,如果我将debug目录删除了,下次重新编译不是又要将winio.dll winio.vxd winio.sys这三个文件重新加一次。为什么不可以把这三个文件就放到工程目录下!请你解答这几个问题,感谢! 再请问一下,WINIO程序在安全性这个问题上面控制得怎么样?有没有什么安全隐患?谢谢! 再向各位大哥请教一点,我现在做了这样一个测试:DWORD test;SetPortVal(0x378, 10, 4);GetPortVal(0x378, &test, 4);printf("test=%d",test);奇怪的是最后得到的结果不是test=10,而是test=-4161782然后我将SetPortVal函数和GetPortVal函数的最后一个参数改为2后,得到的结果是:test=32522最后我将SetPortVal函数和GetPortVal函数的最后一个参数改为1后,得到了正确结果:test=10请问在SetPortVal函数和GetPortVal函数的最后一个参数为2或4的时候,数值10是写入错误还是读出错误?为什么会出现这样的错误?如何解决?谢谢! 好像没办法把winio.dll winio.sys放在工程目录下,因为程序会在环境变量path、c:\windows\system32目录和可执行程序的目录中查找它们。你要是想不用每次都把winio.dll winio.sys拷一遍,就把它们放到c:\windows\system32目录下吧!winio的安全性--这样说吧!winio是不能同时被两个或以上的程序调用的,也就是说当你调用winio的程序启动之后,其它也要调用winio的程序再启动就会初始化winio失败。winio是直接和硬件打交道的,做不好会死机甚至破坏硬件都是有可能的。呵呵!安全性掌握在你自己手里。关于显示的问题,我想你的打印语句应该改成printf("test=%u",test);因为从端口读来的值都是无符号数,你按有符号数来显示的话(DWORD中bit31是符号位)当然不对咯^_^ zkxz,谢谢你的帮助,我按照你说的那样将printf("test=%d",test)改为了printf("test=%u",test),而且test数据类型也改为了unsigned long,打印结果从原来test=-4161782变为了test=4290805514,也不是正确答案test=10.请问为什么? To jsfun(海岸线) ,我按照的你的代码将SetPortVal函数和GetPortVal函数的最后一个参数改为1后,也得不到10,仍然得到的是4294967295,也就是16进制的0xFFFFFFFF。就是说寄存器0x378读取不成功或不能读取。你先确定0x378是什么端口,能不能随便读写,最好换个端口试试。 MFC button形状变为圆形 给list控件添加变量没反应 上下文无关文法 为什么vc6的程序在vc.net里面编译出错?(关于ON_MESSAGE) 继续来解决疑问吧 我的程序 多线程如何共用一个变量? 关于参数传递的问题,大虾们过来看看 奇怪的现象,大家一定没见过。-----------------超奇。。。 急!急!急!! 如何实现保存所有功能? 一段代码的运行时间用什么函数来计算? Vc中应用ADO数据库编程。 #import语句导入链接库时出现编译错误。请各位大师指点!!一定加分!!
DWORD test;
SetPortVal(0x378, 10, 4);
GetPortVal(0x378, &test, 4);
printf("test=%d",test);
奇怪的是最后得到的结果不是test=10,而是test=-4161782
然后我将SetPortVal函数和GetPortVal函数的最后一个参数改为2后,
得到的结果是:test=32522
最后我将SetPortVal函数和GetPortVal函数的最后一个参数改为1后,
得到了正确结果:test=10
请问在SetPortVal函数和GetPortVal函数的最后一个参数为2或4的时候,数值10是写入错误还是读出错误?为什么会出现这样的错误?如何解决?谢谢!
printf("test=%u",test);
因为从端口读来的值都是无符号数,你按有符号数来显示的话(DWORD中bit31是符号位)当然不对咯^_^
printf("test=%u",test),而且test数据类型也改为了unsigned long,打印结果从原来test=-4161782变为了test=4290805514,也不是正确答案test=10.请问为什么?
我按照的你的代码将SetPortVal函数和GetPortVal函数的最后一个参数改为1后,也得不到10,仍然得到的是4294967295,也就是16进制的0xFFFFFFFF。就是说寄存器0x378读取不成功或不能读取。你先确定0x378是什么端口,能不能随便读写,最好换个端口试试。