There is no synchronization mechanism. Events are asynchronous and unscheduled.
The shared memory is shared between two different operating systems running simultaneously on the same computer.
One application is written in a mixture of C++, C, and assembly, and runs in an OS that you've probably never heard of. There are some limited debugging tools. The other side runs in Windows, but is written in Delphi (kind of like a stunted Pascal), and the debugging tools are abysmal.
The structure of some of these pieces... who in their right mind puts a communication buffer in the middle of an IO control block?
I'm trying to discover the root cause of a problem where a part of the data for the IO control is not getting passed properly between the two pieces. I don't know whether it's getting written over, or if it's misaligned, or what is going on.
I did make one change to a structure, but really the code shouldn't be dependent on changing offsets by a change in structure definition, unless it's being referenced in some hidden way...