首页 > 其他 > 详细

SetHandleInformation设置内核对象标志

时间:2014-11-16 11:58:11      阅读:288      评论:0      收藏:0      [点我收藏+]
当父进程创建子进程时,子进程将继承父进程的内核对象。这时如果要控制子进程使用父进程的内核对象。可以使用
SetHandleInformation设置。
BOOL SetHandleInformation(HANDLE hObject, DWORD dwMask, DWORD dwFlags);
改变句柄的标志,目前可改变的标志有两种
#define HANDLE_FLAG_INHERIT   0x00000001  // 继承标志
#define HANDLE_FLAG_PROJECT_FROM_CLOSE   0x00000001 // 保护不允许关闭句柄标志
例如
// 设置句柄值可继承:
SetHandleInformation(hObject, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT);
// 设置句柄不可继承:
SetHandleInformation(hObject, HANDLE_FLAG_INHERIT, 0);
// 设置句柄值不可关闭,受保护:
SetHandleInformation(hObject, HANDLE_FLAG_PROJECT_FROM_CLOSE, HANDLE_FLAG_PROJECT_FROM_CLOSE);
// 设置句柄值可关闭,不受保护:
SetHandleInformation(hObject, HANDLE_FLAG_PROJECT_FROM_CLOSE, 0);



1、关于设置句柄为不可继承的用法,在创建一个回路的socket时使用,如果可以子进程可以继承的话,会出现多个回路的socket,通讯会受影响

2、关于设置句柄不可以关闭,受保护时,父进程创建子进程,子进程再创建孙进程时,子进程把句柄关闭,导致孙进程无法继续使用,这时候要保护

  

SetHandleInformation设置内核对象标志

原文:http://www.cnblogs.com/bizhu/p/4101206.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!