Help with FFI structure pointer

Ron Teitelbaum Ron at USMedRec.com
Tue Aug 1 19:30:06 UTC 2006


All,

I'm sure someone saw this coming.  I could use some help.

Ok I built a structure but the use of the structure is kinda odd.

What I need to do is pass the structure in as null for the first call. Then
I need to pass the real structure in for subsequent calls.
Finally I need to free the structure through the API using the structure
pointer.

I handled the first two problems by implementing 

<apicall: MyStruct 'MyAPICall' (long) module: 'my.dll'>  and sending in nil.
And 
<apicall: MyStruct 'MyAPICall' (MyStruct) module: 'my.dll'>  <- this is so
cool!  I assume that Andreas wrote this code, it is beautiful!

Ok now here it the problem:

I have to call 

<apicall: void 'FreeContext' (MyStruct *) module: 'my.dll'>  or something.  

The pointer needs to be sent to the apicall.  Did I do this correctly (using
MyStruct *) and it just doesn't work or is there another way to get the
handle of the structure.  The structure itself has a handle ivar but it's a
byteArray. 

The result using MyStruct * is:  
---------------------------------------------------------------------
Tue Aug 01 14:28:54 2006

Exception code: C0000005
============
which appears to be a buffer overrun: 
// MessageId: STATUS_ACCESS_VIOLATION
//
// MessageText:
//
//  The instruction at "0x%08lx" referenced memory at "0x%08lx". The memory
could not be "%s".
//
#define STATUS_ACCESS_VIOLATION          ((NTSTATUS)0xC0000005L)    // winnt
============
Exception addr: 77A8CE7E
Access violation (read access) at 0000000D
EAX:000C04E0	EBX:7C809794	ECX:00000000	EDX:00000001
ESI:00000001	EDI:000C04E0	EBP:0006FB80	ESP:0006FB74
EIP:77A8CE7E	EFL:00210202
FP Control: FFFF037F
FP Status:  FFFF4000
FP Tag:     FFFFFFFF
VM Version: Squeak 3.7.1 (release) from Sep 23 2004
Compiler: gcc 2.95.2 19991024 (release)

Current byte code: 225
Primitive index: 120

Loaded plugins:
	SoundGenerationPlugin 23 September 2004 (i)
	SoundPlugin 23 September 2004 (i)
	crypt32.dll
	SqueakFFIPrims 23 September 2004 (e)
	ZipPlugin 23 September 2004 (i)
	SocketPlugin 23 September 2004 (i)
	DSAPrims 23 September 2004 (i)
	UUIDPlugin 23 September 2004 (i)
	LargeIntegers v1.3 23 September 2004 (i)
	Matrix2x3Plugin 23 September 2004 (i)
	FloatArrayPlugin 23 September 2004 (i)
	B2DPlugin 23 September 2004 (i)
	BitBltPlugin 23 September 2004 (i)
	SecurityPlugin 23 September 2004 (i)
	FilePlugin 23 September 2004 (i)
	MiscPrimitivePlugin 23 September 2004 (i)


Stack dump:

619600144 Win32FFICertificateStore>freeCertContext
619599740 Win32FFICertificateStore>?
.

Thank you for any help!

Ron Teitelbaum




More information about the Squeak-dev mailing list