这是在vc中的调用过程:
这是:EasyIrqSample.cpp
#include <windows.h>
#include <conio.h>
#include "easyirq.h"// the function that is called every IRQ
void __stdcall irqHandler(DWORD irqNum) {
MessageBox(0, "IRQ here !", "", 0);
}int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) {
// turn on IRQ 7 handling
if ( easyIrq(7, TRUE, &irqHandler) ) {
MessageBox(0, "some error", "error", 0);
return 1;
}
// just wait irqs
MessageBox(0, "click OK to finish", "", 0);
// turn off IRQ 7 handling (mask irq)
easyIrq(7, FALSE, &irqHandler);
return 0;
}
这是:EasyIrq.h
extern "C" DWORD __stdcall easyIrq(DWORD irqNumber, DWORD onoff, void (__stdcall *callbackfunction)(unsigned long));// return values of easyIrq function
#define EASY_IRQ_ERR_CANT_LOAD_DRIVER 1
#define EASY_IRQ_ERR_CANT_CALL_OPENVXDHANDLE 2
#define EASY_IRQ_ERR_CANT_CREATE_EVENT 3
#define EASY_IRQ_ERR_DEVICEIOCONTROL_ON 4
#define EASY_IRQ_ERR_CANT_OPEN_IRQ 5
#define EASY_IRQ_ERR_DEVICEIOCONTROL_OFF 6
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这是vb的调用过程未通过:
form1中的代码:
Private Sub Command1_Click()
Call easyIrq(7, true,address0f cout)
End Sub
Private Sub Command1_Click()
Call easyIrq(7, ByVal true,address0f cout)
End SubModule1中的代码:
Public Declare Function easyIrq Lib "EasyIrq.dll" _
(ByVal irqNumber As Long, ByVal onoff As Long, ByVal callbackfunction As Long) As Long
Public count As Long
Public Sub cout(coun As Long)
count = count + 1
End Sub
这是:EasyIrqSample.cpp
#include <windows.h>
#include <conio.h>
#include "easyirq.h"// the function that is called every IRQ
void __stdcall irqHandler(DWORD irqNum) {
MessageBox(0, "IRQ here !", "", 0);
}int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) {
// turn on IRQ 7 handling
if ( easyIrq(7, TRUE, &irqHandler) ) {
MessageBox(0, "some error", "error", 0);
return 1;
}
// just wait irqs
MessageBox(0, "click OK to finish", "", 0);
// turn off IRQ 7 handling (mask irq)
easyIrq(7, FALSE, &irqHandler);
return 0;
}
这是:EasyIrq.h
extern "C" DWORD __stdcall easyIrq(DWORD irqNumber, DWORD onoff, void (__stdcall *callbackfunction)(unsigned long));// return values of easyIrq function
#define EASY_IRQ_ERR_CANT_LOAD_DRIVER 1
#define EASY_IRQ_ERR_CANT_CALL_OPENVXDHANDLE 2
#define EASY_IRQ_ERR_CANT_CREATE_EVENT 3
#define EASY_IRQ_ERR_DEVICEIOCONTROL_ON 4
#define EASY_IRQ_ERR_CANT_OPEN_IRQ 5
#define EASY_IRQ_ERR_DEVICEIOCONTROL_OFF 6
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这是vb的调用过程未通过:
form1中的代码:
Private Sub Command1_Click()
Call easyIrq(7, true,address0f cout)
End Sub
Private Sub Command1_Click()
Call easyIrq(7, ByVal true,address0f cout)
End SubModule1中的代码:
Public Declare Function easyIrq Lib "EasyIrq.dll" _
(ByVal irqNumber As Long, ByVal onoff As Long, ByVal callbackfunction As Long) As Long
Public count As Long
Public Sub cout(coun As Long)
count = count + 1
End Sub
解决方案 »
- 在运行一个转换程序时候出现'2147483638(8000000a)Automation',100分相送,请各位大侠帮看看下,谢谢
- RecordSet二次查询问题-RecordSet能否用SQL查询
- 一个有点搞不明白的问题,请大家进来看看
- 关于《文件系统对象》
- 为什么使用FindFirst 会报3251 错误?
- 在VB里如何给一个BYTE数组赋值?
- 怎样在程序中动态设置ODBC?????
- Animation控件的一个控制?!
- FTP传输速度问题???100分求解!
- 有在VB里面调用过DLL的吗?
- 怎样同步两个数据库的结构?
- 我的iis不能用是怎么回事,win2000professinal +iis5.0
void (__stdcall *callbackfunction)(unsigned long));
这是一个回调函数的指针,怎么可以用long类型!我觉得是个比较高难的调用,一般api的调用没用过这么复杂的不知道这个参数用 addressof 修饰下好不好使
count = count + 1
End Sub
我可以把源码发给你吗?还是没有搞定