这样调用DLL为什么在XP中正常而在2000中不正常?正在用DELPHI设计一个HOOK小键盘设备的程序,设备提供了一个C++写的DLL,并提供了样例,H文件中的声明如下:
typedef void (CALLBACK*  ptDevGetKey) (int);
typedef void (CALLBACK* DEVICECHANGE_PROC)( BOOL bDevAdded, int nStatus );typedef int (* LPDev_BIND)(ptDevGetKey,DEVICECHANGE_PROC);extern LPDev_BIND Dev_Bind;
CPP文件中的程序示例如下:
static void __stdcall OnDevGetKey( int key )
{
...
}static void CALLBACK OnDevChange( BOOL bAdded, int nStatus ) 
{
...
}Dev_Bind( OnDevGetKey,OnDevChange );
我转成如下DELPHI代码:
  type TOnDevGetKey = procedure(key:integer);stdcall;
  type TOnDevChange = procedure(bDevAdded:boolean;nStatus:integer);stdcall;
  type TDev_Bind = function(OnDevGetKey:TOnDevGetKey;OnDevChange: TOnDevChange):integer;cdecl;
代码在XP中调用能正常HOOK到设备的按键信息,但放到WIN2000下老是出现内存读写错误,现怀疑以下这两行转换出了问题,不知哪位老兄能指点一下,谢谢!
  type TOnDevGetKey = procedure(key:integer);stdcall;
//static void __stdcall OnDevGetKey( int key )  type TOnDevChange = procedure(bDevAdded:boolean;nStatus:integer);stdcall;
//static void CALLBACK OnDevChange( BOOL bAdded, int nStatus )