coolicelee
驱动牛犊
驱动牛犊
  • 注册日期2003-08-04
  • 最后登录2012-09-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1216回复:3

为什么我的vxd hook不上中断8

楼主#
更多 发布于:2004-02-09 17:04
我试验写一个处理中断8的vxd
win98+vtoolds3+vc6
头文件:
#define HWINT_DeviceID 0xAAAA//随便写了个比较大的应该没冲突
#define HWINT_Init_Order UNDEFINED_INIT_ORDER
#define HWINT_Major 1
#define HWINT_Minor 0
#define RTCIRQ 8//就是中断8(时钟中断)
class HwInt:public VHardwareInt
{
public:
HwInt():VHardwareInt(RTCIRQ,0,0,0){}
virtual VOID OnHardwareInt(VMHANDLE);
};

class HwintDevice : public VDevice
{
public:
virtual BOOL OnSysDynamicDeviceInit();
virtual BOOL OnSysDynamicDeviceExit();
virtual DWORD OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams);
HwInt *phwint;
};

以下是源文件:


... ...
DWORD val;//这个用于存储计数
BOOL HwintDevice::OnSysDynamicDeviceInit()
{
val=0;//再普通不过的代码了
phwint=new HwInt();//这里成功了
if (phwint)
{
if (phwint->hook())//这里也成功了
{
phwint->physicalUnmask();
return TRUE;
}
else
{
return false;
}
}
else
{
return false;
}
}//总之,这里没返回过任何错误



VOID HwInt::OnHardwareInt(VMHANDLE hVM)
{
val++;//什么也不干,就是计数器+1,可是却一向都是0
sendPhysicalEOI();
}


DWORD HwintDevice::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams)
{
char * pbufout;
... ...
switch (pDIOCParams->dioc_IOCtlCode)
{
... ...
case 0xff:
DWORD* pval;
pval=&val;
pbufout=(char *)pDIOCParams->dioc_OutBuf;
memcpy(pbufout,pval,4);//就是这里无论如何都是0
break;
}
return 0;
}

表面上看好像没什么问题,可计数器的数值就是为0,好像从来也发生多中断8,或者发生过却从没调用过OnHardwareInt(那不就是没hook上去),郁闷中...

由于用Debug Monitor调试,我在代码中加了许多dout<<,调试信息说明OnSysDynamicDeviceInit中没有任何失败,
请各位大虾给指条明路,或者给点代码
在下这里先谢了
ilovedrv
驱动牛犊
驱动牛犊
  • 注册日期2002-11-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望49点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-02-09 17:57
在HwintDevice::OnSysDynamicDeviceInit()中要对cmos时钟硬件设置,允许周期中断;在HwintDevice::OnSysDynamicDeviceExit()中禁止周期中断。
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-02-09 19:35
用VSharedHardwareInt
coolicelee
驱动牛犊
驱动牛犊
  • 注册日期2003-08-04
  • 最后登录2012-09-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-27 15:37
用VSharedHardwareInt

英雄呀~~~~~~~
游客

返回顶部