I have been having a bit of a hack at the source code to get it working on my
debian-amd64 laptop with the windows x64 bcm43xx wireless driver..
I compiled it with v0.12 rather than latest CVS. I had to modify one asm
statement and I compiled it without longlong.h and divdi3.c as these files
created compile errors. at a quick glance they only seem to provide 64bit
operations on 32bit platforms. it compiled fine without these two files!
at the moment I'm having the same problem. modprobe ndiswrapper fails with load
driver(). after a bit of debugging, it seems that in pe_loader.c, the
load_driver() function calls check_nt_hdr() which does a number of checks on
the windows driver file (including checking that it 32 bit!). I think this is
where it needs to be made 64bit clean, but I think it also requires a bit of
knowledge of how the data in the windows driver is ordered (something about RVA
which I haven't quite researched yet) and whether the 64 bit driver is ordered
differently to the 32 bit driver.
will let you know more as I progress with it.
Quoting Jonathan Berry <berryja@...>:
> I have a AMD64 laptop with an integrated Broadcom wireless card.
> Before you say "Not again...", yes I do know all of the issues
> surrounding using ndiswrapper in 64-bit linux. It seems that there
> may be Windows x64 drivers out for some Broadcom chipsets, so I would
> like to look at the code and see if I could help with porting the code
> to be 64-bit safe. The problem is, I do not know where to start. I
> downloaded the latest code from CVS, and to my surprise, it compiled
> with only a couple of warnings. Unfortunately, after running
> "ndiswrapper -i <inf>" with the 64-bit driver, the "modprobe
> ndiswrapper" fails with the following error in loadndisdriver:
> loadndisdriver: load_driver(327): unable to load system files: Invalid
> Seems like it could be a driver problem, or an ndiswrapper problem
> with 64-bit. I'm not sure which.
> So, my question is, can someone point out some places to start working
> on the source files to port to 64-bit? I guess I need to figure out
> which variables need to stay 32-bits long and which need to be
> increased to 64-bits. Also, what kinds of things are going on in
> longlong.h? I'm not an extremely experienced developer, I have not
> done much with x86 assembly, but I have done a decent amount of
> programming in C/C++. Some starting pointers would be helpful.
> SF email is sponsored by - The IT Product Guide
> Read honest & candid reviews on hundreds of IT Products from real users.
> Discover which products truly live up to the hype. Start reading now.
> Ndiswrapper-general mailing list