DC said:
Thanks for the hints and sorry for an additional stupid question (I
don't know much about x64 architecture...): I guess when the app is
run in 32 Bit mode, it will also behave like it was run under Win32
and not address more than 2GB? That is no option then, since the
ability to use huge amounts of RAM is why the app was ported to x64 in
the first place.
Let me see, you are talking about porting, but you rely on a 32 bit
application to get your data from, this is not what I call porting, porting
means that you control the whole code base that should be ported. You are
accessing Excel data, right, excel is still 32 bit, you can't possibly have
worksheets larger than 2GB.
I could not have been that hard to at least "bridge" the 64 Bit OleDB
Drivers to the 32 Bit OleDB Drivers (or ODBC drivers). This makes me
wonder how much dedication MS spents to x64 systems.
What for? Excel (all Office for that matter) is still 32 bit, why would you
ever need JET 64 bit drivers for?
I will look for other solutions like write a litte 32 Bit Program that
only executes the Jet Imports (and communicates with the 64 Bit
somehow and I don't know how other than exchanging files) or have SQL
Server import the Excel data to a temp table, but it is a pity that
this is necessary. My app is a windows service, I wonder how deep the
porting issues would possibly be if I had to work with graphics and
printer drivers.
?? What do printer drivers and graphics have to do with all this is beyond
me.
What you need to do is plit your application into a 32 bit part and a 64 bit
part, use COM interop to cross the 64/32 bit boundary.
For instance, drop the code (just a simple class library compiled as 32 bit)
that retrieves the Excel data into a COM+ (System.EnterpriseServices) as a
"server type" application, and call that server methods from your 64 bit
Windows service. This is exactly why System.EnterpriseServices are made for.
Willy.