Legacy DLL Shared Memory in Vista
We have a command and control product that is accessed by third party software to monitor activity and/or send directives. A major component of the linkage is a DLL that exposes status values as data elements in a shared memory program section. This mechanism is very fast (millisecond response times are necessary) and is extensible, in that we can add new variables and new functions to the DLL without affecting older third party components. We have reached an impasse with Vista, which partitions session memory. Our product, which runs as a service, can no longer communicate with third party controls that run on the desktop.We can fix our controls to use a different mechanism, but we must continue to support older third party controls.
Our current solution is to cause the DLL to create a "Global\" file mapping and update the fixup vectors within the EXE so that they point at the file mapping and not the DLL shared memory. It's a tricky process, as we have to trap the WinMainCRTStartup call and then essentially perform the same functions as would be performed in a /DELAYLOAD helper function. While there isn't all that much code being executed to do this, it really is more complicated than I would like.
A much simpler mechanism would entail deleting the virtual pages encompassing the shared memory section within the DLL and mapping the "Global\" memory into that spot. Those virtual addresses are protected though, and VirtualFree doesn't have any affect on them. I have tried using EDITBIN to remove the section from the DLL, which does prevent anything from being loaded into that address range. The pages are still committed to the image though, and MapViewOfFileEx won't permit use of that address range.
Does anybody know how to remove a section from an executable? EDITBIN permits you to mark it as not being used, but doesn't get rid of it. I've tried to REBASE the result, but that doesn't remove the section either. I'm thinking about creating my own bin-editor, but then I'm back to complicated solutions.
Any suggestions would be welcome.

