예제 #1
0
        public void NewParameterizedObject(CorFunction managedFunction, CorType[] argumentTypes, CorValue[] arguments)
        {
            ICorDebugType[] types       = null;
            int             typesLength = 0;

            ICorDebugValue[] values     = null;
            int            valuesLength = 0;
            ICorDebugEval2 eval2        = (ICorDebugEval2)m_eval;

            if (argumentTypes != null)
            {
                types = new ICorDebugType[argumentTypes.Length];
                for (int i = 0; i < argumentTypes.Length; i++)
                {
                    types[i] = argumentTypes[i].m_type;
                }
                typesLength = types.Length;
            }
            if (arguments != null)
            {
                values = new ICorDebugValue[arguments.Length];
                for (int i = 0; i < arguments.Length; i++)
                {
                    values[i] = arguments[i].m_val;
                }
                valuesLength = values.Length;
            }
            eval2.NewParameterizedObject(managedFunction.m_function, (uint)typesLength, types, (uint)valuesLength, values);
        }
예제 #2
0
        public CorValue CreateValueForType(CorType type)
        {
            ICorDebugValue val   = null;
            ICorDebugEval2 eval2 = (ICorDebugEval2)m_eval;

            eval2.CreateValueForType(type.m_type, out val);
            return(val == null ? null : new CorValue(val));
        }
예제 #3
0
        public void NewParameterizedArray(CorType type, int rank, int dims, int lowBounds)
        {
            ICorDebugEval2 eval2      = (ICorDebugEval2)m_eval;
            uint           udims      = (uint)dims;
            uint           ulowBounds = (uint)lowBounds;

            eval2.NewParameterizedArray(type.m_type, (uint)rank, ref udims, ref ulowBounds);
        }
예제 #4
0
        public void NewParameterizedObjectNoConstructor(CorClass managedClass, CorType[] argumentTypes)
        {
            ICorDebugType[] types       = null;
            int             typesLength = 0;
            ICorDebugEval2  eval2       = (ICorDebugEval2)m_eval;

            if (argumentTypes != null)
            {
                types = new ICorDebugType[argumentTypes.Length];
                for (int i = 0; i < argumentTypes.Length; i++)
                {
                    types[i] = argumentTypes[i].m_type;
                }
                typesLength = types.Length;
            }
            eval2.NewParameterizedObjectNoConstructor(managedClass.m_class, (uint)typesLength, types);
        }
예제 #5
0
        /** Rude abort the current computation. */
        public void RudeAbort()
        {
            ICorDebugEval2 eval2 = (ICorDebugEval2)m_eval;

            eval2.RudeAbort();
        }
예제 #6
0
 public CorEval(ICorDebugEval eval)
     : base(eval)
 {
     this.eval2 = eval as ICorDebugEval2;
 }
예제 #7
0
        private void InvokeAssemblyLoad(ICorDebugEval2 eval, ICorDebugValue assemblyCodeInTargetProcess)
        {
            Logger.WriteLine("Calling Assembly.Load()");

            ICorDebugType[] types = new ICorDebugType[0];
            ICorDebugValue[] values = new ICorDebugValue[1] { assemblyCodeInTargetProcess };

            eval.CallParameterizedFunction(_loadAssemblyMethod.Interface, 0, types, (uint)values.Length, values);
            Logger.WriteLine("Assembly.Load() call made. Waiting for results.");
        }