Managed callback to native code (reverse p/invoke) - C#