private void SetThreadContext(IntPtr hThread, ref NativeMethods.CONTEXT context)
 {
     if (!NativeMethods.SetThreadContext(hThread, ref context))
     {
         throw new Win32Exception();
     }
 }
 /// <summary>
 /// Set the thread context event
 /// </summary>
 /// <param name="threadId">Current process thread</param>
 /// <param name="context">Context to set</param>
 private void SetThreadContext(IntPtr hThread, ref NativeMethods.CONTEXT context)
 {
     // set the context event. If it fails throw an exception
     if (!NativeMethods.SetThreadContext(hThread, ref context))
     {
         throw new Win32Exception();
     }
 }
 /// <summary>
 /// Retrieve the thread context event
 /// </summary>
 /// <param name="threadId">Current process thread</param>
 /// <param name="context">Thread context to return</param>
 private void GetThreadContext(IntPtr hThread, ref NativeMethods.CONTEXT context)
 {
     // get the thread context. If it fails, we throw an exception
     if (!NativeMethods.GetThreadContext(hThread, ref context))
     {
         throw new Win32Exception();
     }
 }
        /// <summary>
        /// Initializes a new instance.
        /// </summary>
        public BaseSpy()
        {
            m_ContextBuffer = new NativeMethods.CONTEXT();
            m_ContextBuffer.ContextFlags = NativeMethods.ContextFlags.CONTEXT_CONTROL | NativeMethods.ContextFlags.CONTEXT_INTEGER;
            m_EventBuffer = new NativeMethods.DEBUG_EVENT_EXCEPTION();

            m_ToStop  = false;
            m_Stopped = new ManualResetEvent(true);

            m_Dictionary = new Dictionary <uint, byte[]>();
        }
        // --------------------------------------------------------------
        #region CONSTRUCTOR
        // --------------------------------------------------------------

        /// <summary>
        /// Initializes a new instance.
        /// </summary>
        public BaseSpy()
        {
            // initialize the context buffer
            m_ContextBuffer = new NativeMethods.CONTEXT
            {
                ContextFlags = NativeMethods.ContextFlags.CONTEXT_CONTROL | NativeMethods.ContextFlags.CONTEXT_INTEGER
            };

            // initialize the event buffer
            m_EventBuffer = new NativeMethods.DEBUG_EVENT_EXCEPTION();

            // reset the stop flags
            m_ToStop  = false;
            m_Stopped = new ManualResetEvent(true);

            // initialize the data dictionary
            m_Dictionary = new Dictionary <uint, byte[]>();
        }