搜索
bottom↓
回复: 10

[原创]几年前编写的一个用以在应用程序中注册硬件中断的类。包含驱动程序源码,上位机

[复制链接]

出0入0汤圆

发表于 2009-9-26 16:11:46 | 显示全部楼层 |阅读模式
03年时闲着没事,用DDK写了一个驱动程序,专门用以挂接Windows硬件中断程序。
本程序用以示范如何挂接windows系统下的硬件中断(如并口中断,串口中断等等),包含了驱动程序源代码和上层应用程序代码。驱动程序是用DDK编写的。使用前请参看如下说明:

1.包含的文件:
将RegIsaInt.sys拷贝到WINNT\system32\drivers\目录下
2.运行RegIsaIntExe.exe.



软件接口:

提供了一个类:CInstallSys


成员函数:
BOOL CInstallSys::ConnectInterrupt(unsigned short m_IrqNum, BOOL m_bTrigManner)
入口参数:
unsigned short m_IrqNum:需要挂接的IRQ号。
BOOL mbTrigManner:为真,则为边沿触发即Latched;为假,则为电平触发即level sensitive.
返回值为TRUE,则成功挂接中断,否则失败。

BOOL CInstallSys::DisConnectInt(unsigned short m_IrqNum, BOOL m_bTrigManner)
入口参数,可以任意输入,留着以后扩展和改动。
返回值没有作用。

成员变量:
HANDLE InterruptEvent;
作用:
提供了一个事件变量,用于通知应用程序,一个硬件中断的到来。

举例如下:
/*生成一个对象*/
CInstallSys isa_int;
/*挂接中断*/
if(isa_int.ConnectInterrupt(7,TRUE)==TRUE)
{
    /*create a new process to monitor the event object*/
    AfxBeginThread(ThreadListen,GetSafeHwnd(),THREAD_PRIORITY_NORMAL);
}
else
{
}

/*监听事件*/
UINT ThreadListen(LPVOID pParam)
{
        DWORD wait_state;
        while(bListen)
        {
                wait_state=WaitForSingleObject(isa_int.InterruptEvent,5000);
                if(wait_state==WAIT_OBJECT_0)
                {
                        ulIntTimes++;
                        SendMessage((HWND)pParam,WM_EVENT_COME,ulIntTimes,0);
                }
        }
        return true;
}
/*断开连接*/
isa_int.DisConnectInt(7,TRUE);/*可以任意输入两个参数*/

/*结束*/


上位机示例程序ourdev_485800.rar(文件大小:36K) (原文件名:RegIsaIntExe.rar)
驱动程序源码ourdev_485801.rar(文件大小:101K) (原文件名:sys.rar)

出0入0汤圆

 楼主| 发表于 2009-9-26 16:14:09 | 显示全部楼层
正好手头上一个项目上需要在上位机应用程序中挂接一个并口中断,用WinIo程序只能查询端口状态,效率比较低,所以想起了6年前写的这个程序,翻出来共享给大家。

出0入0汤圆

发表于 2009-9-26 17:41:56 | 显示全部楼层
记号
谢谢

出0入0汤圆

发表于 2009-9-26 17:45:36 | 显示全部楼层
牛啊

出0入42汤圆

发表于 2009-9-26 17:51:13 | 显示全部楼层
用不上的路过。

出0入0汤圆

发表于 2010-2-8 21:58:07 | 显示全部楼层
围观。。。。。。。

出0入0汤圆

发表于 2010-3-1 11:25:25 | 显示全部楼层
请问怎么处理两个中断的情况,挂一个中断可以,挂第二个就不行了 请问如何处理?

出0入0汤圆

发表于 2010-3-3 17:06:15 | 显示全部楼层
外部可以扩展个与门电路,再在中断处理中查询一下是那个中断,这样应该可以吧

出0入0汤圆

发表于 2010-3-5 14:57:55 | 显示全部楼层
不是外部的问题,比如是在PC上嵌入ISA卡,不如我第一块卡用INT5 第二块用INT6 。这个程序就初始化不了!

出0入0汤圆

发表于 2010-6-9 11:18:50 | 显示全部楼层
标记一下,曾经搞一个并口中断红外接收的东东,找第三方控件要注册的!

出0入0汤圆

发表于 2010-6-15 09:26:10 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 15:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表