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.
There are a number of ways to do this, but I think that the best way would be to use WCF and COM+. If you host a service in COM+, you can access it through WCF in your .NET service, and through COM interfaces in your unmanaged code.
You might want to check out the following sections of the MSDN documentation to get started:
Integrating WCF Services with COM+: http://msdn.microsoft.com/en-us/library/bb735856.aspx
Integrating with COM+ Applications Overview: http://msdn.microsoft.com/en-us/library/ms734723.aspx