阅读:2963回复:5
to dolphin
dolpin:
我看了你发的一个关于“不能捕捉硬件中断”的帖子。你现在解决了吗? 我现在也在调试一个中断的程序,用SOFTICE跟踪,发现在OnSysDynamicDeviceInit()中,执行if (myirq->hook())时,hook返回值为false,也不能进入OnHardwareInt()函数中,为什么会这样? 请赐教! |
|
沙发#
发布于:2001-06-07 11:23
嗨,Springl 对不起,前段时间网络老出错,上网少,没注意到你的贴子。不知你的问题解决了没有?hook返回值为false 你应该仔细看看class VHardwareInt ,是否继承正确,没有具体代码, 我也不能妄言。
|
|
|
板凳#
发布于:2001-06-12 15:04
dolphin,谢谢你地关注,不好意思的是这两天我也没注意到你的回帖。
那个问题我仍然没有解决。其实我的程序就是《win9x虚拟设备驱动程序编程指南》中的例程,可就是调不通。不知你有这本书没有。我的程序与你在坛子中发的帖子所附的程序基本一样。 还有就是,我前几天换了一台新机子,结果在新机子上调试vxd程序,连编译都通不过,(包括以前已经调通的程序)。搞得我没脾气。 #define DEVICE_MAIN #include "mouse.h" Declare_Virtual_Device(MOUSE) #undef DEVICE_MAIN PDWORD pval=(PDWORD)0x9FFFC; void Myhwint::onHardwareInt(VMHANDLE hVM) { (*pval)++; _inp(0x2fa); _inp(0x2fd); _inp(0x2f8); sendPhysicalEOI(); } MouseVM::MouseVM(VMHANDLE hVM) : VVirtualMachine(hVM) {} MouseThread::MouseThread(THREADHANDLE hThread) : VThread(hThread) {} BOOL MouseDevice::OnSysDynamicDeviceInit() { dout<<"OnSysDynamicDeviceInit"<<endl; pmyirq=new Myhwint(); *pval=0; if(pmyirq&&pmyirq->hook()) { _outp(0x2f9,1); _outp(0x2fa,0); _outp(0x2fc,0x0b); pmyirq->physicalUnmask(); return TRUE; } else return FALSE; } BOOL MouseDevice::OnSysDynamicDeviceExit() { dout<<"OnSysDynamicDeviceExit"<<endl; _outp(0x2f9,0); _outp(0x2fc,0); delete pmyirq; return TRUE; } DWORD MouseDevice::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams) { return 0; } |
|
地板#
发布于:2001-06-12 15:07
忘了附头文件
class Myhwint : public VHardwareInt { public: Myhwint(): VHardwareInt(MY_IRQ,VPICD_OPT_CAN_SHARE,0,0) {}; virtual void onHardwareInt(VMHANDLE); }; class MouseDevice : public VDevice { public: virtual BOOL OnSysDynamicDeviceInit(); virtual BOOL OnSysDynamicDeviceExit(); virtual DWORD OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams); Myhwint *pmyirq; }; class MouseVM : public VVirtualMachine { public: MouseVM(VMHANDLE hVM); }; |
|
地下室#
发布于:2001-06-13 13:03
给我email ,我把我做的发给你。
|
|
|
5楼#
发布于:2001-06-19 10:40
不好意思,这几天没注意到你的回复。
我的MAIL是:llccyb@263.net 顺便问一下,你能不能给我推荐一些关于DDK方面的文章,若有书是系统地介绍DDK的使用就更好喽。在给我的MAIL中告诉我吧。多谢! |
|