本文演示如何通过 CreateProcess 创建一个进程句柄和主线程句柄可以被继承的子进程。
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES LPSECURITY_ATTRIBUTES , // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information);
CreateProcess 的第三,第四参数分别表示新进程的进程属性和主线程属性,如果希望创建一个新进程,使得新进程的进程句柄和主线程句柄在当前进程的句柄表中可以被继承,则需要对 LPSECURITY_ATTRIBUTES 进行设置。
下面通过一个例子来测试进程句柄继承。