Hi again,

After a Friday night dedicated to building and debugging together with
Charlie Russel, I've come to the conclusion that we can in fact ship DQSD
for 64-bit platforms!

There are two main problems:

1) Building DQSDTools.dll for a 64-bit architecture
2) Getting the installer to register DQSD as a deskband for the 64-bit
explorer.exe and *not* the 32-bit

As for (1), there are a couple of options:

- Build it using VS2005 Beta, AKA Whidbey -- it has a cross-compiler that
can produce 64-bit executables on a regular 32-bit build machine
- Build it remotely, using VS2003 .NET + 64-bit compiler tools from the
Platform SDK. This is what we did when we got it to work; I connected to
Charlie's machine, and built DQSDTools.dll there

Either works fine, as long as someone has access to either Whidbey or 64-bit
Windows.

#2 is a bit more difficult. 64-bit Windows has a pretty comprehensive
side-by-side system for 32-bit apps. 

There's a 32-bit \system32 directory with all the system DLLs, called
\WINDOWS\SysWOW64, while the new 64-bit system modules are, ironically,
placed in WINDOWS\system32 :-)

Also, the registry is partitioned into the usual HKLM\SOFTWARE and a 32-bit
compatibility section under HKLM\SOFTWARE\Wow6432Node. So, as far as I can
see, all 32-bit apps are automatically redirected to
HKLM\SOFTWARE\Wow6432Node when they attempt to read or write to
HKLM\SOFTWARE. 
The same goes for the Windows directory (32-bit apps get \WINDOWS\SysWow64
when they ask for the system root) and the Program Files directory (Program
Files (x86) for 32-bit). And probably a lot of other stuff... Just found an
article at [1] if you're interested.

The crux of the problem with DQSD is that the installer .exe is a 32-bit
app, so when it attempts to write the registry stuff that sets the DQSD band
up, it writes to HKLM\SOFTWARE\Wow6432Node\Classes. When 64-bit explorer.exe
attempts to read its extensions from the registry, it enumerates classes in
HKLM\SOFTWARE\Classes... DQSD isn't there, obviously.

So, to get DQSD to install for 64-bit Windows, we need a 64-bit executable
that can write the pertinent registry info, so the 32-bit compat layer
doesn't get in the way. The article I mentioned earlier brings up an API we
can call to disable the file system redirection, and I guess there are
similar hooks for the registry. I think we might be able to build a 32-bit
installer that disables redirection, writes the correct registry entries,
and deploys a 64-bit DQSDTools.dll... 

Does this sound like a good plan?

- Kim


[1] http://www.route64.net/documents/M03.pdf



-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.
Get your fingers limbered up and give it your best shot. 4 great events, 4
opportunities to win big! Highest score wins.NEC IT Guy Games. Play to
win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20
_______________________________________________
Archive: https://lists.sourceforge.net/lists/listinfo/dqsd-devel

Reply via email to