alphetwx
驱动牛犊
驱动牛犊
  • 注册日期2007-01-14
  • 最后登录2010-11-11
  • 粉丝0
  • 关注0
  • 积分193分
  • 威望40点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
阅读:2006回复:3

windows中进程pid号生成的公式是什么?有谁知道?

楼主#
更多 发布于:2007-12-16 10:17
只知道是与csrss有关,但不知道是怎样的,没能力去反汇编,希望高人们说下~~~~~~

应该是与EPROCESS和GetTickCount有关的吗??
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-12-16 13:25
进程的PID是由ExCreateHandle生成的,PspCreateProcess中有如下代码:

    Process->UniqueProcessId = ExCreateHandle (PspCidTable, &CidEntry);
  
进程创建时系统从PspCidTable中分配出一个Hanlde,PID则是该HANDLE的GenericHandleOverlay,以后可以用ExMapHandleToPointer函数从这个ID得到Cid
驱动开发者 呵呵
alphetwx
驱动牛犊
驱动牛犊
  • 注册日期2007-01-14
  • 最后登录2010-11-11
  • 粉丝0
  • 关注0
  • 积分193分
  • 威望40点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-12-17 22:39
呵呵,不太明白,其实我想知道的是pid生成的规律,以及影响pid大小的因素,通常情况下运行过的进程越多,新创建的pid也就越大,但为什么有些新创建进程的pid的值却比较小呢?还有有时候新创建进程pid的值会上升得很厉害,这又是为什么呢?
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
地板#
发布于:2007-12-17 23:22
因为根本是随机的~~
CreateHandleTable时只是找一个可用的Index~~~
驱动开发者 呵呵
游客

返回顶部