private static void ClearBreakpoint(DkmProcess process, DkmRuntimeInstructionBreakpoint breakpoint) { var runtimeBreakpoints = process.GetOrCreateDataItem(() => new RuntimeDllBreakpoints()); runtimeBreakpoints.Handlers.Remove(breakpoint.UniqueId); breakpoint.Close(); }
public static PyTypeObject GetPyType <TObject>(DkmProcess process) where TObject : PyObject { var map = process.GetOrCreateDataItem(() => new ProxyTypes(process)).PyTypeFromType; return(map[typeof(TObject)]); }
private static DkmRuntimeInstructionBreakpoint CreateBreakpoint(DkmProcess process, ulong addr, RuntimeDllBreakpointHandler handler, bool enable) { var runtimeBreakpoints = process.GetOrCreateDataItem(() => new RuntimeDllBreakpoints()); var bp = process.CreateBreakpoint(Guids.LocalComponentGuid, addr); if (enable) { bp.Enable(); } runtimeBreakpoints.Handlers.Add(bp.UniqueId, handler); return(bp); }
private static ProxyInfo?FindProxyInfoForPyType(DkmProcess process, ulong typePtr) { if (typePtr == 0) { return(null); } ProxyInfo proxyInfo; var map = process.GetOrCreateDataItem(() => new ProxyTypes(process)).ProxyInfoFromPyTypePtr; if (map.TryGetValue(typePtr, out proxyInfo)) { return(proxyInfo); } // If we didn't get a direct match, look at tp_base and tp_bases. var typeObject = new PyTypeObject(process, typePtr); var tp_base = typeObject.tp_base.Raw.Read(); var baseProxyInfo = FindProxyInfoForPyType(process, tp_base); if (baseProxyInfo != null) { return(baseProxyInfo); } var tp_bases = typeObject.tp_bases.TryRead(); if (tp_bases != null) { foreach (var bas in tp_bases.ReadElements()) { baseProxyInfo = FindProxyInfoForPyType(process, bas.Raw.Read()); if (baseProxyInfo != null) { return(baseProxyInfo); } } } return(null); }
public static PointerProxy <PyInterpreterState> interp_head(DkmProcess process) { return(process.GetOrCreateDataItem(() => new InterpHeadHolder(process)).Proxy); }
public static PythonRuntimeInfo GetPythonRuntimeInfo(this DkmProcess process) { return(process.GetOrCreateDataItem(() => new PythonRuntimeInfo())); }
public static PyObject None(DkmProcess process) { return(process.GetOrCreateDataItem(() => new NoneHolder(process)).None); }
void IDkmExceptionManager.ClearExceptionTriggers(DkmProcess process, Guid sourceId) { var em = process.GetOrCreateDataItem(() => new ExceptionManager(process)); em.ClearExceptionTriggers(process, sourceId); }
void IDkmExceptionManager.AddExceptionTrigger(DkmProcess process, Guid sourceId, DkmExceptionTrigger trigger) { var em = process.GetOrCreateDataItem(() => new ExceptionManager(process)); em.AddExceptionTrigger(process, sourceId, trigger); }
public override void Handle(DkmProcess process) { var exceptionHelper = process.GetOrCreateDataItem(() => new ExceptionManagerLocalHelper(process)); exceptionHelper.MonitorExceptions = MonitorExceptions; }
public static PyBoolObject33 Create(DkmProcess process, bool value) { var values = process.GetOrCreateDataItem(() => new ValuesHolder(process)); return(value ? values.True : values.False); }