cbw32.dll是主要的东东,是硬件卡的接口。应该是厂家随硬件提供的。
提供7684个功能函数供调用。对功能和接口熟悉的话,可以直接调用----如果你有手册的话。
=============================================================================
cb.dll可看成是 接口的接口,大概是其他人为方便而写的,它调用cbw32.dll完成功能, 提供一个接口供应用程序使用,这个实际也就是一个分派函数。
cb.dll的接口只有一个,是DispatchAPI,也就是你在自己的程序中需要调用的函数。
大致的伪C代码是这样,IDA直接F5出来的,凑合看看:
int __thiscall DispatchAPI(void *this)
{
int v1; // esi@2
char Dst; // [sp+4h] [bp-44h]@1
int v4; // [sp+44h] [bp-4h]@1
v4 = (int)this;
_memmove(&Dst, &unk_10003080, 0x40u);
if ( !_setjmp3(&unk_10003080, 0) )
{
v1 = v4;
switch ( *(_DWORD *)(v4 + 20) )
{
case 0:
TlsSetValue(dwTlsIndex, *(LPVOID *)(v4 + 24));
TlsSetValue(dword_10003064, *(LPVOID *)v4);
TlsSetValue(dword_10003068, *(LPVOID *)(v4 + 4));
v1 = v4;
goto LABEL_4;
case 0xE:
LABEL_4:
*(_DWORD *)(v1 + 4) = 5000;
*(_DWORD *)v1 = &FoxTable;
break;
default:
break;
case 1:
(*(void (__thiscall **)(int))(v4 + 24))(v4 + 36);
break;
case 2:
*(_DWORD *)v4 = sub_10001537(*(_DWORD *)v4, *(_DWORD *)(v4 + 4));
break;
case 4:
_FreeHand(*(_DWORD *)v4);
break;
case 6:
*(_DWORD *)v4 = _HandToPtr(*(_DWORD *)v4);
break;
case 0xA:
(*(void (__fastcall **)(_DWORD, _DWORD))(v4 + 24))(*(_DWORD *)v4, *(_DWORD *)(v4 + 4));
break;
case 0xB:
*(_DWORD *)v4 = (*(int (__fastcall **)(_DWORD, int))(v4 + 24))(*(_DWORD *)v4, v4 + 36);
break;
case 0x10:
*(_DWORD *)v4 = sub_1000148C(*(_DWORD *)v4);
break;
case 0x11:
sub_100014D9(*(_DWORD *)v4);
break;
case 0x12:
*(_DWORD *)v4 = sub_10001510(*(_DWORD *)v4);
break;
}
}
_memmove(&unk_10003080, &Dst, 0x40u);
return 0;
}
=======================================================
cb.dll调用了cbw32.dll中的3个函数,
cbDIn
cbDConfigPort
cbDOut
似乎都是需要3个参数。
======================================================
你既然有cbw32的LIB和H文件,完全可以根据对硬件的使用要求自己写个
DLL,或者根据需要,直接在程序里调用cbw32.dll的功能函数。
最好不要寄希望于各种碰运气形式的修改。。。。。。
win32下不管什么语言写成的DLL,格式都是一样的,知道输出函数名和参数及功能后,
就可以用各种语言规定的方式进行调用。
另外那个楼主所讲的应用中可以使用的 GET_INPUT set—output 等等几个函数
因为不是cb.dll的输出函数 所以看不到,而是
dd offset aSet_output
dd offset @set_output@4
dd offset aIiii
dd offset aGet_input
dd offset @get_input@4
这样的形式,以参数形式传给DispatchAPI,在cb.dll中再调用
cbw32.dll里的
cbDIn
cbDConfigPort
cbDOut
这3个函数来完成。
楼主提供的资料很有限,只能是这么多了。
祝LZ好运。