Pointer parameter to a mapped C dll function

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • gwampach
    New Member
    • Apr 2008
    • 1

    Pointer parameter to a mapped C dll function

    Hello,

    I'm a new Perl programmer and I'm using the Win32::API module to use functions of a C dll.
    I'm using ActivePerl 5.8.8.

    Here is the C code of the function I need to use:
    [code=c]
    const char* DecodeSomething (GUInt64 time, GUInt16 msgId, GUInt16 bodyLength, GUInt8 dxpNum, GUInt8* bodyData);
    [/code]

    So I mapped this function in Perl like this:
    [code=perl]
    $decodeSomethin g = Win32::API->new($dll, 'DecodeSomethin g', 'IIIIP', 'P');
    [/code]
    And I try to use it like this:

    [code=perl]
    $data = [0x03, 0x00, 0x13, 0x15, 0x3B];
    $decodedRecord = $decodeSomethin g->Call(0xB4B65BB B, 0x0F, 0x20, 0x1, $data);
    [/code]

    But running this code raise a "Perl command line interpreter error'.

    I think that the error is related to passing a char pointer and/or receiving a char pointer. I am not sure if my Perl translation of the C function header is correct: $decodeSomethin g = Win32::API->new($dll, 'DecodeSomethin g', 'IIIIP', 'P');, especially using the P parameter type.
    Note that using other functions in this dll with only integer parameters works just fine.

    Any hint would be greatly appreciated.

    Thanks in advance for your help.
    Last edited by numberwhun; Apr 24 '08, 02:22 PM. Reason: Please use code tags!
Working...