Tras el análisis, descubrí que incluso los objetos _KPROCESS pueden ser miembros de la lista ActiveProcessLinks. ¿Cuál es la diferencia entre los objetos _EPROCESS y _KPROCESS? ¿Cuándo se crea uno y uno no? ¿Cuáles son las diferencias conceptuales entre ellos?cuál es la diferencia entre el objeto _EPROCESS y el objeto _KPROCESS
Respuesta
un vistazo aquí:
http://channel9.msdn.com/Shows/Going+Deep/Arun-Kishan-Process-Management-in-Windows-Vista
EPROCESS
es el modo kernel equivalente del PEB
desde el modo usuario. Se pueden encontrar más detalles en this document en el sitio de Alex Ionescu, así como en the book by Schreiber y otros libros sobre las partes internas de NT.
Usa dt
en WinDbg para tener una idea de cómo se ven.
EPROCESS no está disponible en modo de usuario. Tampoco lo es KPROCESS.
KPROCESS es un subconjunto de EPROCESS. Si observa los campos de un depurador, verá que KPROCESS contiene campos más relacionados con la programación y la contabilidad del proceso en un nivel inferior, mientras que EPROCESS tiene contextos de proceso de alto nivel dentro de este. Los nombres, hasta donde yo sé, provienen de diferentes subsistemas que interactúan con estas estructuras (el Ejecutivo tiene estructuras y funciones frecuentemente prefijadas con Ex, mientras que el Kernel tiene estructuras y funciones frecuentemente prefijadas con Ke)
Puede ver esto en diferentes funciones documentadas. Considere el prototipo de KeStackAttachProcess (http://msdn.microsoft.com/en-us/library/ff549659(v=vs.85).aspx), que es una función de Ke y toma KPROCESS. No hay ninguna función Ex exportada y documentada que acepte EPROCESS (o KPROCESS), pero las funciones de Ps tratan completamente en EPROCESOS.
Existe una división similar para los hilos, con KTHREAD y ETHREAD.
Esto se simplifica, pero la parte del modo kernel del Windows O/S se divide en tres partes: HAL, Kernel y Subsistemas ejecutivos. Los Subsistemas Ejecutivos se ocupan de la política y operación general de O/S. El kernel trata los detalles específicos de la arquitectura del proceso para operaciones de bajo nivel (por ejemplo, spinlocks, switching de hilos) así como la programación. El HAL trata con las diferencias que surgen en las implementaciones particulares de una arquitectura de procesador (por ejemplo, cómo se enrutan las interrupciones en esta implementación del x86). Todo esto se explica con más detalle en el libro de Windows Internals.
Cuando crea un nuevo proceso de Win32, tanto Kernel como los subsistemas ejecutivos desean rastrearlo. Por ejemplo, Kernel quiere saber la prioridad y la afinidad de los hilos en el proceso porque eso afectará la programación. Los Subsistemas Ejecutivos quieren rastrear el proceso porque, por ejemplo, el Subsistema Ejecutivo de Seguridad desea asociar un token con el proceso para que podamos hacer una verificación de seguridad más adelante.
La estructura que utiliza Kernel para rastrear el proceso es KPROCESS. La estructura que utilizan los Subsistemas Ejecutivos para rastrearla es EPROCESS. Como detalle de implementación, KPROCESS es el primer campo de EPROCESS, por lo que los Subsistemas Ejecutivos asignan la estructura EPROCESS y luego llaman al Kernel para inicializar la parte de KPROCESS. Al final, ambas estructuras son parte del Objeto de proceso que representa la instancia del proceso de usuario. Esto también debería estar cubierto en el libro de Windows Internals.
-Scott
- 1. Diferencia entre el objeto y el objeto
- 2. ¿Cuál es la diferencia entre setattr() y el objeto .__ setattr __()?
- 3. ¿Cuál es la diferencia entre el Javascript objeto y el objeto JSON
- 4. ¿Cuál es la diferencia entre una matriz y un objeto?
- 5. Diferencia entre el objeto Node y el objeto Element?
- 6. ¿Cuál es la diferencia entre una instancia y un objeto?
- 7. Diferencia entre objeto y *?
- 8. Diferencia entre el objeto dinámico y System.Object
- 9. ¿Cuál es la diferencia entre un objeto diferido y su propio objeto promesa?
- 10. en C++, ¿cuál es la diferencia entre un objeto y un puntero a un objeto?
- 11. ¿Cuál es la diferencia entre un objeto de función y un objeto invocable?
- 12. ¿Cuál es la diferencia entre un objeto MVC Model, un objeto de dominio y un DTO
- 13. ¿Cuál es la diferencia entre objeto e instancia?
- 14. Diferencia entre null == objeto y objeto == nulo
- 15. ¿Cuál es la diferencia entre el archivo objeto y la biblioteca estática (archivo)?
- 16. ¿Cuál es la diferencia entre el alcance de un objeto y su contexto en javascript?
- 17. Diferencia entre objeto y NSObject
- 18. ¿Cuál es la diferencia entre el formato OMF y COFF?
- 19. Diferencia entre las anotaciones de matriz multidimensional (objeto [] [] y objeto [,])
- 20. Diferencia entre "var" y "objeto" en C#
- 21. Diferencia entre objeto y clase en PHP?
- 22. Cuál es la diferencia entre $ y jQuery
- 23. ¿Diferencia entre un objeto y un hash?
- 24. ¿Cuál es la diferencia entre el NSImage y el UIImage?
- 25. ¿Cuál es la diferencia entre el tenedor y el hilo?
- 26. ¿cuál es la diferencia entre el objetivo y el proyecto?
- 27. Backbone.Js - ¿Cuál es la diferencia entre el y $ el?
- 28. ¿Cuál es la diferencia entre el mango y el hilo?
- 29. ¿Cuál es la diferencia entre el JSP y el JSTL?
- 30. ¿Diferencia entre un objeto y un diccionario?
Muchas gracias –
@Eknath Iyer: De nada. Viste tu comentario sobre la respuesta de Jason.Aún puede votar su respuesta, incluso si no puede aceptar dos respuestas. – 0xC0000022L