[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

how to pass array from dll into IDL?



Hi ,

I need to pass a bytearray from the dll to IDL (5.2).
I am writing a wrapper for a framegrabber which uses the dll functions to aquire
the single frames(monochrome). 

Then I try to pass the pointer address to idl, then this address seems not to work.
Here my example:

in dll:

IDL_LONG TestFunction(int argc, void* argv[])
{
        IDL_LONG *answer;
	BYTE b=255; //BYTE is UCHAR
	BYTE *pb;
	answer = (IDL_LONG *)argv[0];
	pb=&b;
	*answer = (IDL_LONG)pb;
	return(0L); //Return zero if all okay
}

in IDL:

a=10L
err=Call_External('aquire.dll','TestFunction',a)
print,a
IDL>10415668

This address seems not to be the address for b in dll. I tested this with:
var = EXTPROC_DEREF(addr,BYTE=1)
print,var
IDL>94 not 255
-> EXTPROC_DEREF comes from http://www.rlkling.com/

So her are my questions: How can I access these different address spaces?
How can I test this address in IDL?
Is there any possibility to transfer whole arrays(frames)?
And if, how fast can I get these arrays(25ms)?

Thanks

Max