public void VirtualMachineDeath(Types.SuspendPolicy suspendPolicy, RequestId requestId)
            {
                EventRequest            request = VirtualMachine.EventRequestManager.GetEventRequest(EventKind.ClassPrepare, requestId);
                VirtualMachineEventArgs e       = new VirtualMachineEventArgs(VirtualMachine, (SuspendPolicy)suspendPolicy, request);

                VirtualMachine.EventQueue.OnVirtualMachineDeath(e);
            }
        private void HandleVirtualMachineDeath(object sender, VirtualMachineEventArgs e)
        {
            if (e.SuspendPolicy == SuspendPolicy.All)
            {
                Interlocked.Increment(ref _suspended);
            }

            DebugEvent debugEvent = new DebugProgramDestroyEvent(GetAttributesForEvent(e), 0);

            SetEventProperties(debugEvent, e, false);
            Callback.Event(DebugEngine, Process, this, null, debugEvent);
        }
        private static enum_EVENTATTRIBUTES GetAttributesForEvent(VirtualMachineEventArgs e)
        {
            enum_EVENTATTRIBUTES attributes = 0;

            if (e.SuspendPolicy != SuspendPolicy.None)
            {
                attributes |= enum_EVENTATTRIBUTES.EVENT_SYNCHRONOUS;
            }
            else
            {
                attributes |= enum_EVENTATTRIBUTES.EVENT_ASYNCHRONOUS;
            }

            if (e.SuspendPolicy == SuspendPolicy.All)
            {
                attributes |= enum_EVENTATTRIBUTES.EVENT_STOPPING;
            }

            return(attributes);
        }
Пример #4
0
        private void HandleVirtualMachineDeath(object sender, VirtualMachineEventArgs e)
        {
            if (e.SuspendPolicy == SuspendPolicy.All)
                Interlocked.Increment(ref _suspended);

            DebugEvent debugEvent = new DebugProgramDestroyEvent(GetAttributesForEvent(e), 0);
            SetEventProperties(debugEvent, e, false);
            Callback.Event(DebugEngine, Process, this, null, debugEvent);
        }
Пример #5
0
 private static void SetEventProperties(DebugEvent debugEvent, VirtualMachineEventArgs e, bool manualResume)
 {
     SetEventProperties(debugEvent, e.Request, e.SuspendPolicy, e.VirtualMachine, default(IThreadReference), manualResume);
 }
Пример #6
0
        private static enum_EVENTATTRIBUTES GetAttributesForEvent(VirtualMachineEventArgs e)
        {
            enum_EVENTATTRIBUTES attributes = 0;
            if (e.SuspendPolicy != SuspendPolicy.None)
                attributes |= enum_EVENTATTRIBUTES.EVENT_SYNCHRONOUS;
            else
                attributes |= enum_EVENTATTRIBUTES.EVENT_ASYNCHRONOUS;

            if (e.SuspendPolicy == SuspendPolicy.All)
                attributes |= enum_EVENTATTRIBUTES.EVENT_STOPPING;

            return attributes;
        }
 public void VirtualMachineDeath(Types.SuspendPolicy suspendPolicy, RequestId requestId)
 {
     EventRequest request = VirtualMachine.EventRequestManager.GetEventRequest(EventKind.ClassPrepare, requestId);
     VirtualMachineEventArgs e = new VirtualMachineEventArgs(VirtualMachine, (SuspendPolicy)suspendPolicy, request);
     VirtualMachine.EventQueue.OnVirtualMachineDeath(e);
 }
Пример #8
0
 internal void OnVirtualMachineDeath(VirtualMachineEventArgs e)
 {
     var t = VirtualMachineDeath;
     if (t != null)
         t(this, e);
 }
 private static void SetEventProperties(DebugEvent debugEvent, VirtualMachineEventArgs e, bool manualResume)
 {
     SetEventProperties(debugEvent, e.Request, e.SuspendPolicy, e.VirtualMachine, default(IThreadReference), manualResume);
 }