当父进程建立子进程时,子进程将继承父进程的内核对象。这时若是要控制子进程使用父进程的内核对象。能够使用 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); 一、关于设置句柄为不可继承的用法,在建立一个回路的socket时使用,若是能够子进程能够继承的话,会出现多个回路的socket,通信会受影响 二、关于设置句柄不能够关闭,受保护时,父进程建立子进程,子进程再建立孙进程时,子进程把句柄关闭,致使孙进程没法继续使用,这时候要保护