7,763
社区成员
发帖
与我相关
我的任务
分享
extern "C"__declspec(dllexport) unsigned char WINAPI WriteUserCard(char* s);
extern "C"__declspec(dllexport)
unsigned char WINAPI WriteUserCard(char* s)
{
unsigned long passbuffer;
unsigned char x1,x2,y1,y2,random1,random2,random3,random4;
unsigned char passtemp[13]="\0";
unsigned int cardkind;
char* ss;
char sstemp[128]="\0";
unsigned char Pass1=0,Pass2=0,Pass3=0;
unsigned char ch='\0';
unsigned int i;
ss=sstemp;
ss=s;
cardkind=**();
if (cardkind!= 2)
{
i=CardCheckPassword(**,**,**);
switch (i)
{
case 0: //EC==0
ch='0';
break;
case 8:
// comp pass
CardWrite(0x80,0x1d,ss);
ch='8';
break;
case 2: //The First Password Error!
// i = comp pass
if(i==8)
{
CardWrite(0x*,0x*,"********");
CardWriteByte(0x*,0x*,0x*);
CardWrite(0x*,0x*,ss);
ch='8';
}
if(i==0) {ch='0';}
if(i==1) {ch='1';}
break;
case 1:
ch='1';
break;
}
}
void CardWrite(unsigned char Offset,unsigned short int Len,unsigned char* Data)
Private Function IntToBin(N As String, ByRef bytes() As Byte, s As Integer, L As Integer) As String
Dim Result As String
Dim i As Long
Dim j As Byte
Dim tmp As String
Result = ""
i = CLng(Val(N))
For j = s To s + L - 1 Step 1
bytes(j) = i Mod 256
Result = Result & bytes(j)
i = i \ 256
Next j
IntToBin = Result
End Function
Dim bytes(19) As Byte
Dim tmp As String
tmp = IntToBin("301344", bytes, 1, 3)
tmp = IntToBin("1", bytes, 4, 1)
tmp = IntToBin("666666", bytes, 5, 4)
tmp = IntToBin("3", bytes, 9, 3)
tmp = IntToBin("4", bytes, 12, 3)
tmp = IntToBin("5", bytes, 15, 3)
'bytes数组传递进去赋值
Dim dd As Long
dd = VarPtr(bytes(0))
MsgBox dd
Dim ch As String
Dim Result As String
ch = Module1.WriteUserCard(dd)
MsgBox ch
Declare Function ReadUserCard Lib "whmq.dll" () As Long
Declare Function WriteUserCard Lib "whmq.dll" (ByVal lng As Long) As Byte