看看这个问题

coolrain coolrain 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是VxD编程书籍中的一个实例,调试通过,在COM2口上的鼠标中断可截获,但程序运行结束后鼠标不响应,那位高手指点一下,中断处理还存在什么问题?中断处理流程是否正确?多谢。


*****MyHwint.H*****
#include <vtoolscp.h>

#define DEVICE_CLASS MyHwIntDevice
#define MYHWINT_DeviceID UNDEFINED_DEVICE_ID
#define MYHWINT_Init_Order UNDEFINED_INIT_ORDER
#define MYHWINT_Major 1
#define MYHWINT_Minor 0

#define MY_IRQ 3 //COM2 的中断号


class MyHwInt:public VHardwareInt
{
public:
MyHwInt();
virtual VOID OnHardwareInt(VMHANDLE);
};


class MyHwIntDevice : public VDevice
{
public:
virtual BOOL OnSysDynamicDeviceInit();
virtual BOOL OnSysDynamicDeviceExit();
MyHwInt *pMyIRQ;
};
******MyHwint.cpp******
#define DEVICE_MAIN
#include "myhwint.h"
Declare_Virtual_Device(MYHWINT)
#undef DEVICE_MAIN

PDWORD pwVal=(PDWORD)0x9FFFC; //线性地址

MyHwInt::MyHwInt():VHardwareInt(MY_IRQ,VPICD_OPT_CAN_SHARE,0,0)
{
}

VOID MyHwInt::OnHardwareInt(VMHANDLE hVM)
{
(*pwVal)++;
_inp(0x2fa);
_inp(0x2fd);
_inp(0x2f8);
sendPhysicalEOI();
}



BOOL MyHwIntDevice::OnSysDynamicDeviceInit()
{
pMyIRQ=new MyHwInt();
*pwVal=0;
if(pMyIRQ&&pMyIRQ->hook())
{
_outp(0x2f9,1);
_outp(0x2fa,0);
_outp(0x2fc,0x0b);
pMyIRQ->physicalUnmask();
return TRUE;
}
else return FALSE;
}

BOOL MyHwIntDevice::OnSysDynamicDeviceExit()
{
//pMyIRQ->unhook();
_outp(0x2f9,0);
_outp(0x2fc,0);
pMyIRQ->unhook();
pMyIRQ->physicalUnmask();

delete pMyIRQ;
return TRUE;
}


****ring3层应用程序:*****
#include "stdafx.h"
#include "conio.h"
#include "windows.h"

void main(int argc, char* argv[])
{
HANDLE hVxD;
PDWORD pwVal=(PDWORD)0x9FFFC;
hVxD=CreateFile("\\\\.\\Myhwint.vxd",0,0,0,CREATE_NEW,FILE_FLAG_DELETE_ON_CLOSE,0);
if(hVxD==INVALID_HANDLE_VALUE)
return;
cprintf("Press any key to continue!...");
while(!_kbhit())
cprintf("The value is %d\n",*pwVal);
CloseHandle(hVxD);

}
...全文

相关推荐

详解XML中的模式Schema

XML中拥有Schema特性,能够比DTD更加强大地引入元素结构,下面我们就来详解XML中的模式Schema的概念及作用和用法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 文档定义模型为XML文档提供了规范,DTD的引入虽然解决了XML文档的规范化问题,但它文件格式类型和XML文件格式类型不一致,同时DTD提供的数据类型有限有时候无法满足...

前端可乐老师

mongodb-linux-x86_64-ubuntu2004-8.0.13.tgz

mongodb-linux-x86_64-ubuntu2004-8.0.13

一and一>二

chromedriver-linux64-159.0.8135.0(Canary).zip

chromedriver-linux64-159.0.8135.0(Canary).zip

LCG元

三相四桥臂电压不对称跌落补偿动态电压恢复器DVR(Simulink仿真实现)

内容概要:本文围绕三相四桥臂动态电压恢复器(DVR)在电压不对称跌落情况下的补偿能力展开,重点介绍了基于Simulink平台构建的仿真模型,用于研究和验证DVR对电网电压不平衡的动态补偿性能。系统采用三相四桥臂逆变器结构,利用其独立的中性线控制能力有效处理零序分量,结合多准PR(Proportional Resonant)控制策略实现对正负序电压分量的精确跟踪与快速响应,从而提升在不平衡负载或电网故障条件下DVR的补偿精度与系统稳定性。文中提供了完整的仿真模型及相关参考文献,涵盖控制算法设计、系统建模与参数整定等关键技术环节,适用于复杂电能质量问题的研究与教学演示。; 适合人群:电气工程、电力电子与电力系统相关专业的研究生、科研人员及从事电能质量治理的技术工程师;具备一定的电路理论、自动控制原理和Simulink仿真基础者更佳。; 使用场景及目标:①研究动态电压恢复器在三相电压不对称跌落工况下的补偿机制与控制策略;②掌握三相四桥臂逆变器在不平衡条件下的建模与控制方法;③深入理解多准PR控制器在正负序分离控制中的应用,提升对电能质量调节装置的设计与仿真能力; 阅读建议:建议结合提供的参考文献与说明文档,逐步搭建并调试Simulink仿真模型,重点关注控制器参数设计与系统动态响应特性,通过设置不同类型的电压跌落场景(如单相跌落、两相短路等)来验证控制策略的有效性与鲁棒性。

威武编程狮

【MIMO无线编码】在瑞利衰落信道中比较2x2和4x4的BPSK调制系统(Matlab代码实现)

内容概要:本文通过Matlab代码实现,在瑞利衰落信道环境下对2x2和4x4 MIMO系统采用BPSK调制的性能进行仿真与比较,重点分析不同天线配置下的误码率(BER)表现,旨在探讨MIMO系统中天线数量增加对无线通信可靠性和传输性能的影响。研究涵盖了信道建模、信号调制解调、接收端检测算法等关键环节,并通过蒙特卡洛仿真获得统计结果,直观展示了MIMO技术在对抗多径衰落方面的优势。; 适合人群:具备通信原理基础知识和Matlab编程能力的高校学生、科研人员及从事无线通信系统设计的工程技术人员。; 使用场景及目标:①理解MIMO系统在瑞利衰落信道中的工作原理与性能评估方法;②掌握BPSK调制解调及典型MIMO检测技术的Matlab实现;③通过仿真对比不同规模MIMO系统的性能差异,为系统设计提供参考依据。; 阅读建议:建议读者结合Matlab代码逐段运行并观察仿真结果,深入理解各模块功能,同时可尝试修改参数(如信噪比范围、仿真次数、天线数目)以探究其对系统性能的影响,从而加深对MIMO无线编码技术的认知。

小念念_
评论 2
收藏 已收藏
分享
返回顶部
coolrain
VC/MFC 16,550 成员 421,606 内容