public static T Invoke<T>(IntPtr address, params Object[] parameters)
{
var returnType = typeof(T);
var paramTypes = parameters.Select(o => o.GetType()).ToArray();
var method = new DynamicMethod("Invoke", typeof(UInt32), null, typeof(Program).Module);
var il = method.GetILGenerator();
il.Emit(OpCodes.Ldc_I4, (Int32)address);
il.Emit(OpCodes.Conv_I);
il.EmitCalli(OpCodes.Calli, CallingConvention.StdCall, typeof(UInt32), null);
il.Emit(OpCodes.Ret);