Beispiel #1
0
        private bool SymDebugCallback(
            IntPtr hProcess,
            DbgHelpCallbackActionCode ActionCode,
            IntPtr CallbackData
            )
        {
            if (_trace_symbol_loading)
            {
                switch (ActionCode)
                {
                case DbgHelpCallbackActionCode.CBA_EVENT:
                    var evt = (IMAGEHLP_CBA_EVENTW)Marshal.PtrToStructure(CallbackData, typeof(IMAGEHLP_CBA_EVENTW));
                    _trace_writer.WriteLine(Marshal.PtrToStringUni(evt.desc).TrimEnd());
                    return(true);
                }
            }

            if (_enable_symsrv_fallback)
            {
                switch (ActionCode)
                {
                case DbgHelpCallbackActionCode.CBA_DEFERRED_SYMBOL_LOAD_START:
                {
                    var load_evt = (IMAGEHLP_DEFERRED_SYMBOL_LOADW)Marshal.PtrToStructure(CallbackData, typeof(IMAGEHLP_DEFERRED_SYMBOL_LOADW));
                    return(CheckOrDownloadSymbolFile(load_evt.FileName));
                }
                }
            }

            return(false);
        }
Beispiel #2
0
 private bool SymDebugCallback(
     IntPtr hProcess,
     DbgHelpCallbackActionCode ActionCode,
     long CallbackData,
     long UserContext
     )
 {
     if (_callbacks.ContainsKey(hProcess))
     {
         return(_callbacks[hProcess](hProcess, ActionCode, new IntPtr(CallbackData)));
     }
     return(false);
 }