I have two Windows services, the first one written in C# and the second written in unmanaged C++, I want to know how can I do two-way interprocess communication.
Sockets are probably your best bet.
With sockets your not necessarily tied to both programs being on the same machine.
Also, it's likely to be the most portable option (heck, Windows even has select() for sockets).