Giter VIP home page Giter VIP logo

Comments (5)

jazzdelightsme avatar jazzdelightsme commented on July 28, 2024

Thank you for the feedback! The LIST_ENTRY code is definitely only half baked. I think I might've started on it when chipping away at kernel mode support, and just committed what I had done. Unfortunately I don't think I will get to fixing this one up in the very near future, but as always, feedback such as this helps me know what to prioritize when I get time.

Out of curiosity, are you dealing with a LIST_ENTRY in user mode, or are you coaxing DbgShell to work for kernel mode? (I personally haven't often needed to deal with LIST_ENTRY lists in user mode.)

from dbgshell.

Zhentar avatar Zhentar commented on July 28, 2024

Kernel structures, user mode - specifically, _HEAP with its list of _HEAP_SEGMENT (and probably others in short order)

from dbgshell.

Zhentar avatar Zhentar commented on July 28, 2024

Can EnumerateLIST_ENTRY be implemented as a wrapper around EnumerateLIST_ENTRY_raw? I don't know how StreamFromDbgEngThread runs under the hood so I'm wondering if there are any thread safety/deadlock concerns.

from dbgshell.

jazzdelightsme avatar jazzdelightsme commented on July 28, 2024

I should probably just delete EnumerateLIST_ENTRY... I think maybe I had a script implementation of it, and was trying to write it in C# instead... oh, yep; found it: Expand-LIST_ENTRY in OtherUtils.ps1. I don't remember why I wanted to write it in C#... oh, probably so that it would be available to other C# code. I'll need to find some time to page in what I was trying to do there, but I suspect that I will need to largely scrap it and implement in terms of the other "raw" one.

StreamFromDbgEngThread is conceptually very simple. There is a dbgeng thread, and a pipeline execution thread, and cmdlets run on the latter, but actually interacting with dbgeng must happen on the former. StreamFromDbgEngThread just lets you pass in a Func to run on the dbgeng thread, and as the func produces results, StreamFromDbgEngThread handles shuttling them back over to the pipeline execution thread, where they pop out of the returned IEnumerable<T>. It handles all the thread safety stuff, to make it easy to use from the pipeline execution thread.

from dbgshell.

Zhentar avatar Zhentar commented on July 28, 2024

My implementation: Zhentar@11fa946

from dbgshell.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.