Hi everyone,

So I was playing around with the data provider and the 64-bit version of 
2.1 beta 2 embedded this weekend, and I managed to get it to work.

I've got a .zip containing my changes (as applied to the provider 
2.5.0-alpha1) here: 
http://codeka.com/tmp/firebird.net-2.5.0-alpha1-64bit-patches.zip

There wasn't a lot of changes required, really, though there is one that 
kind of worries me.

The hardest thing for me to figure out was the fact that the XSQLVAR 
structures were being offset incorrectly in a 64-bit build. I don't know 
if it's due to a bug in the structure packing of the embedded DLL or 
what, but I had to change the XsqldaMarshaler.ComputeLength to read:

private int ComputeLength(int n)
{
     int length = (Marshal.SizeOf(typeof(XSQLDA)) +
           n * Marshal.SizeOf(typeof(XSQLVAR)));

     if (IntPtr.Size == 8)
         length += 4;

     return length;
}


Basically, we need to offset the first XSQLVAR structure by 4 in a 
64-bit build.

Other than that, the only other thing I had to change was the 
StatusVector stuff in IDbClient so that it's an IntPtr instead of an int.

Now, I've only tested this against my little test app that I linked to 
last week, as well as doing a quick test on our own internal app (which 
does not make use of many of firebird's features *by far* so there's 
plenty of opportunity for other things to be screwed up still :-) but at 
least we're part of the way there...

Dean.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Firebird-net-provider mailing list
Firebird-net-provider@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider

Reply via email to