Okay bear with me on the topic title as I wasn't really sure what to call this issue. But here's a thumbnail sketch of how i got here.
About 2 years ago I created a 64bit version of TClock
which Kazubon originally wrote back in 1995.
I had a catastrophic motherboard/disk array failure that resulted in the loss of most of my code library, including the as released code for T-Clock32 & T-Clock x64.
I work for a living so it has taken some time to (try and) put Humpty Dumpty back together again.
I still have an intact ("Working") copy of a pre-release build of the project that I'm trying to get back off the ground with ... But the 64bit code doesn't run correctly anymore (e.g. it crashes the shell).
Now... I'd been asuming that part of the project file was damaged, but the copy I'm working with was on my web server at the time of the crash and therefore not involved in the crash. The compiled binaries included with it run fine. problem is when I recompile the project, the binaries are slightly larger than they should be (were) and the crash the shell instead of displaying the clock.
My version of the code was originally developed on an XP x86 machine and tested on an XP x64 machine. Now I'm running Vista x64 with all servicepacks & updates, and it appears that therein lies the issue.
As a measure of last resort, I created an XP x86 VM, installed MSVS 2005(RTM), updated nothing, and compiled the code. It ran perfectly. ...Which now begs the question...Why?
So far I have run the following (compile & run) tests:
Vista x64 SP1 & MSVS2005 SP1 with all updates applied - Compiles fine (is 1KB larger) and crashes the shell
Vista x86 SP1 & MSVS2005 SP1 with all updates applied - Compiles fine (is 1KB larger) and crashes the shell
XP x86 SP2 & MSVS2005(RTM) with no updates - Compiles fine (is the "right" size) and Runs fine.
XP x86 SP2 & MSVS2005 SP1 with no other updates - Compiles fine (is 1KB larger) and crashes the shell
All combination of the 32bit(x86) version of the project compile and run fine.
The TClock project consists of two files tClock.dll which contains the ShellHook code and always compiles to the same size, and Clock.exe which compiles to either 152KB (working code) or 153KB failing code.
Both T-Clock32 & T-Clock x64 use a single common source code pool that allows the project file (and some conditional #define statements) to define if it will be compiled as 32 or 64bit code.
So, does anyone have a clue why one of the changes in MSVS2005 ServicePack 1 would cause a 64bit shell hook to fail?
I'll gladly make the project file available to anyone willing to help.