Figure 5-1. Data structures associated with processes and threads
Figure 5-2. Structure of an executive process block
Figure 5-3. Structure of the executive process block
Figure 5-4. Fields of the process environment block
Figure 6-5. The main stages of process creation
Figure 3: Windows NT process and its resources
Figure 4: An example of a process state transition diagram
A primary token was assigned to process
BOOL ok = CreateProcess( NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
ExitProcess(0);
CloseHandle(process);
if (*tmp == L'-' && (! SbieApi_QueryProcessInfo( (HANDLE)(ULONG_PTR)GetCurrentProcessId(), 0))) {}
return OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, phToken);
status = NtQueryInformationProcess( NtCurrentProcess(), ProcessBasicInformation, &info, sizeof(PROCESS_BASIC_INFORMATION), &len);
hParentProcess = OpenProcess( SYNCHRONIZE, FALSE, (ULONG)info.InheritedFromUniqueProcessId);
GetWindowThreadProcessId(hwnd, &pid);
BOOL ok = GetProcessTimes(hProcess, &time, &time1, &time2, &time3);
if (EnumProcesses(pids, 16384, &len)) len /= sizeof(ULONG);
if (! ProcessIdToSessionId(GetCurrentProcessId(), &session_id)) session_id = 0;
status = WaitForSingleObject(hParentProcess, INFINITE); if (status == WAIT_OBJECT_0) ExitProcess(0);
if (RegisterWaitForSingleObject( &WaitHandles[0], hProcess, ConsoleCallbackSlave, (void *)WaitHandles, INFINITE, WT_EXECUTEONLYONCE)) {}