【问题标题】:What is a "process object" in Windows?什么是 Windows 中的“进程对象”?
【发布时间】:2018-11-02 00:05:00
【问题描述】:

我在阅读 Windows Internals 时遇到了 Windows 中的“进程对象”一词。此对象由对象管理器(Windows 内核中的一个组件)管理。

所以,我对此有一些疑问:

  1. 我了解每个 Windows 进程都由一个 EPROCESS 块表示,并且 PEB 块。那么,这个“进程对象”与 EPROCESS 和 PEB 有什么关系呢?

  2. 这个“进程对象”到底是什么?它位于哪里以及它的用途是什么?

【问题讨论】:

    标签: windows process operating-system


    【解决方案1】:

    正如'Windows kernel opaque structures' 的 Microsoft 文档中所述,EPROCESS 结构是一个不透明的结构,用作进程的进程对象。换言之,EPROCESS 结构与流程对象相同。 您可以使用 PsGetCurrentProcess 或 NtOpenProcess 等函数来获取指向它的指针。

    【讨论】:

    • 感谢您的回复。 EPROCESS 或项目对象位于内核的进程管理器中,对吗?
    • @Kyoma,Process 对象是内核地址空间中的数据结构。它由流程管理器分配,而不是“内部”分配。它前面是一个对象头,它具有句柄计数、对象标志(例如永久)、安全描述符和类型对象的索引(即“\ObjectTypes\Process”)。类型对象具有统计信息和信息,例如类型标志(例如,需要安全性)、通用映射、有效访问掩码和类型过程(转储、打开、关闭、删除、解析、安全性、查询名称、可以关闭) ,如果实现了,比如PspProcessOpen
    • @Kyoma,您还询问了 PEB(流程环境块)。 EPROCESS 结构包含一个指向用户模式PEB 的Peb 指针,该指针在附加到进程地址空间时有效。这是用户模式函数(通常在 ntdll.dll 和 kernelbase.dll 中)可以轻松访问的信息,无需系统调用。例如,PEB 包含一个指向 ProcessParameters 的指针,其中包括命令行、标准句柄和指向环境字符串的指针。
    猜你喜欢
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    相关资源
    最近更新 更多