$GMW_NV_Create = new Win32::API("gm5s32", "GMW_NV_Create", [], P);
$GMW_NV_SetValue = new Win32::API("gm5s32", "GMW_NV_SetValue", [], V);

$NewNV = $GMW_NV_Create->Call;
$GMW_NV_SetValue->Call($NewNV, "Name", "John");

A little more information on what's going on:

After playing with this problem for hours, I'm still not any closer to a 
solution, but at least now I think I know what the problem is :)  Using the 
example from my original message, $GMW_NV_Create->Call; should return a 
pointer to the structure defined in the C code.  It seems, though, that 
Perl is mangling the value of that pointer somehow, either on the return 
from $GMW_NV_Create, or on the call to $GMW_NV_SetValue, because *EVERY* 
time I try to use a function that relies on a previous call to 
$GMW_NV_Create, I get an Access Exception (failed read at specified 
address) and Perl crashes (this is on WinNT 4 SP 6 by the way).  I've tried 
it on several different machines and had the same results every time.  For 
that matter, the "bad" address that's being passed is always in a 64-byte 
range, regardless of what machine I run it on.
I've tested similar code in C and C++ just to make sure it wasn't a problem 
with one of the functions, and they worked ok, so I suspect the problem is 
related either to how I'm "wrapping" $NewNV to send to functions, or to how 
Perl is handling address pointers.  I'm still at a loss as to what to do 
about it though... I don't want to go back to programming in C :)

Thanks in advance for any help,
John

---
You are currently subscribed to perl-win32-users as: [archive@jab.org]
To unsubscribe, forward this message to
         [EMAIL PROTECTED]
For non-automated Mailing List support, send email to  
         [EMAIL PROTECTED]

Reply via email to