Creating Processes
The
CreateProcess function creates a new process, which runs independently of the creating
process. However, for simplicity, the relationship is referred to as a parent-child
relationship.
The following code fragment demonstrates how to create a process.
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
"MyChildProcess", // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
ErrorExit( "CreateProcess failed." );
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
If
CreateProcess succeeds, it returns a
PROCESS_INFORMATION structure containing handles and identifiers for the new process and its
primary thread. The thread and process handles are created with full access rights,
although access can be restricted if you specify security descriptors. When
you no longer need these handles, close them by using the
CloseHandle function.
You can also create a process using the
CreateProcessAsUser function. This function allows you to specify the security context of the
user account in which the process will execute.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database