Once again Rands hits the nail on the head with The Nerd Handbook...…
I'm looking into adding CLR deadlock detection into the CLR hosting code that's used inside The Server Framework and, once again, the fact that you can't cleanly shutdown the CLR host is causing me problems... Since the CLR can't be stopped by a host without terminating the host process (and that's by design...) you need to be aware that any of the code that you have plugged into the CLR by way of the hosting interfaces can be called into during process shutdown. Since most of the code that you plug in will be in the form of COM objects you can…
After completing some work for client with the custom CLR hosting server I've started looking into a problem for another client, it's a bit of a transition as the problem that he's having is with a DDE connection from his server to a SCADA system that monitors the industrial plant where the server is based. DDE was the original way that Windows programs shared data between them. It's been around since 1987 and, well, that shows. The API is at once familiar (as an ancestor to COM) and quaint (which is a polite way of saying that I find some…
I'm currently rebuilding my world with Visual Studio 2008. So far things are going ok, but as I mentioned back when I was playing with Beta 2, the new C4627 warning about header files being skipped when processing precompiled headers is a bit broken... It seems that the code that works out if a header file is skipped (ie not included in the precompiled header but above the #pragma hdrstop line works on exact path matches rather than a file include graph. So, if header A includes header B and the precompiled header builds by including A but the source…
Raymond Chen has just blogged about "The importance of the FORMAT_MESSAGE_IGNORE_INSERTS flag" over on The Old New Thing. That's another annoying bug fixed ;). I've occasionally wondered why I get some less than informative error messages sometimes, I wasn't passing the flag in my GetLastErrorMessage() function and it calls itself if FormatMessage() fails and so sometimes I get an "invalid parameter" error messages when what I could get might actually be more useful to me.…