BCB如何调用16位DLL 在线等待
例如有16位DLL函数原型 INT FAR PASCAL _SETADDR(INT port_no,INT addr,LPSTR buffer);
用BCB6。0调用却总不成功。
。。。
。。。
INT SETADDR(INT port_no,INT addr,LPSTR buffer)
{
_asm{
push buffer
call SMapLS_IP_EBP_8
push eax
push port_no
push addr
mov edx,globalProcPointer
call QT_Thunk
call SUnMapLS_IP_EBP_8
pop ecx
}
//return _AX;
}
。。。。
调用
。。。。
(FARPROC)LoadLibrary16=GetProcAddress32( "KERNEL32", 35); //取得所需函数
FARPROC)FreeLibrary16=GetProcAddress32("KERNEL32", 36);
(FARPROC)GetProcAddress16=GetProcAddress32("KERNEL32", 37);
(FARPROC)SMapLS_IP_EBP_8=GetProcAddress(GetModuleHandle("KERNEL32"),"SMapLS_IP_EBP_8");
(FARPROC)SUnMapLS_IP_EBP_8=GetProcAddress(GetModuleHandle("KERNEL32"),"SUnMapLS_IP_EBP_8");
dll16=LoadLibrary16("Access.dll"); //载入16动态连接库
globalProcPointer=(DWORD)GetProcAddress16(dll16,"_SETADDR");
i=SETADDR(1,1,"6228202485"); //调用
请各位不吝赐教