1)父进程想控制哪些子进程能继承内核对象句柄。可以调用SetHandleInformation函数来改变内核对象句柄的继承标志。
BOOL SetHandleInformation(
HANDLE hObject, //有效句柄标志
DWORD dwMask, //想要更改那个或哪些标志
DWORD dwFlags //希望把标志设为什么
);
每个句柄都关联了两个标志:
#define HANDLE_FLAG_INHERIT 0x00000001
#define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x00000002
如果想打开一个内核对象句柄的继承标志
SetHandleInformation(hObj, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT);
如果想关闭这个标志
SetHandleInformation(hObj, HANDLE_FLAG_INHERIT, 0);
如果告诉系统不允许关闭句柄SetHandleInformation(hObj,HANDLE_FLAG_PROTECT_FROM_CLOSE, HANDLE_FLAG_PROTECT_FROM_CLOSE);
CloseHandle(hObj); //会引发异常