Thanks to Roelf Toxopeus, I have gotten past this part of the puzzle:

\c #define CFUUIDGetUUIDBytes1(res,uuid) (*(CFUUIDBytes *)(res) = CFUUIDGetUUIDBytes((CFUUIDRef)uuid))
c-function CFUUIDGetUUIDBytes1 CFUUIDGetUUIDBytes1 a a -- void

: CFUUIDGetUUIDBytes ( res uuid -- bytes0-3 bytes4-7 bytes8-11 bytes12-15 )
        over >r  CFUUIDGetUUIDBytes1  r>  4 0 do
                dup @  swap cell+  loop  drop ;

\c typedef long (* func3)(void*,int,int,int,int,void*);
\c #define call_QueryInterface(x,y0,y1,y2,y3,z,f) (((func3)f) (x,y0,y1,y2,y3,z))
c-function call_QueryInterface call_QueryInterface a n n n n a func -- n

...
        iodev @ CFUUIDBytesBuf kIOUSBDeviceInterfaceID CFUUIDGetUUIDBytes dev
iodev @ @ QueryInterface @ call_QueryInterface abort" Unable to create a device interface"
...

Anton actually had the CFUUIDGetUUIDBytes correct, but missed a trailing )

Roelf supplied the magic glue to QueryInterface

Now to figure out the next piece.

Thanks! ;)

DaR


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to