您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 淮北分类信息网,免费分类信息发布

关于获取进程句柄的问题

2024/4/2 2:54:06发布21次查看
使用createprocess创建一个 进程 后,process_information结构中会包含 进程 的handle,和唯一存在的 进程 id 而后使用openprocess打开 进程 时,根据第一个参数 (dwdesiredaccess:想拥有的该 进程 访问权限 process_all_access //所有能获得的权限 proces
使用createprocess创建一个进程后,process_information结构中会包含进程的handle,和唯一存在的进程id
而后使用openprocess打开进程时,根据第一个参数
(dwdesiredaccess:想拥有的该进程访问权限
process_all_access  //所有能获得的权限
process_create_process  //需要创建一个进程
process_create_thread   //需要创建一个线程
process_dup_handle      //重复使用duplicatehandle句柄
process_query_information   //获得进程信息的权限,如它的退出代码、优先级
process_query_limited_information  /*获得某些信息的权限,如果获得了process_query_information,也拥有process_query_limited_information权限*/
process_set_information    //设置某些信息的权限,如进程优先级
process_set_quota          //设置内存限制的权限,使用setprocessworkingsetsize
process_suspend_resume     //暂停或恢复进程的权限
process_terminate          //终止一个进程的权限,使用terminateprocess
process_vm_operation       //操作进程内存空间的权限(可用virtualprotectex和writeprocessmemory) 
process_vm_read            //读取进程内存空间的权限,可使用readprocessmemory
process_vm_write           //读取进程内存空间的权限,可使用writeprocessmemory
synchronize                //等待进程终止

的不同,返回的句柄值是不同的,而且绝对不等于process_information中的句柄值
当程序不关闭时,用openprocess获取同一个进程,每次也都能得到不同的句柄值
因为openprocess返回的句柄是系统临时给分配的操作句柄。当你没用closehandle(hand)关闭这个句柄,再次调用openprocess获取句柄时,他又会分配一个新的句柄给你。相当于2个句柄都指向的同一个进程
实质上这些“进程句柄”其实不是真正的进程句柄,而是进程句柄在“句柄表”中的索引(偏移),真正的进程句柄保存在进程句柄表中
若在每次句柄使用过后,关闭句柄即closehandle,则用openprocess获取同一个进程就可得到同样的句柄值
每个进程都有句柄表。该表的第一项就是进程自己的句柄,这也是为什么调用getcurrentprocess()总是返回0x7fffffff的原因。
转自:http://blog.csdn.net/lovelyloulou/article/details/5252288
淮北分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录