Leser: 18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#dll_test.pl################################################
use Win32::API;
my $recv = new Win32::API('mydll', '_recvData@8','PI','I');
if(not defined $recv)
{
die "Can´t import API recvData: $!\n";
}
else
{
my $size = 8;
my $buffer = "\x00" x $size;
my $p_buffer = unpack('L', pack('P', $buffer));
$recv->Call($p_buffer, $size);
}
############################################################
1
2
3
4
5
recvData(u_char **p_buffer, u_int size)
for((u_int)i=0; i<size; i++)
*(*p_buffer+i)='x';
*(*p_buffer+i)='\0';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#dll_test.pl################################################
use Win32::API;
my $recv = new Win32::API('mydll', '_recvData@8','PI','I');
if(not defined $recv)
{
die "Can´t import API recvData: $!\n";
}
else
{
my $size = 8;
my $p_resultString = pack("A$size",); #pack a ASCII String for pointer parameter in recv
$recv->Call($p_resultString , $size);
my $result = unpack("A$size", $p_resultString); #unpack ASCII String
}
############################################################