MCPcopy Create free account
hub / github.com/acl-dev/acl / DetourCreateProcessWithDllsA

Function DetourCreateProcessWithDllsA

lib_fiber/cpp/src/detours/creatwth.cpp:1661–1720  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1659}
1660
1661BOOL WINAPI DetourCreateProcessWithDllsA(_In_opt_ LPCSTR lpApplicationName,
1662 _Inout_opt_ LPSTR lpCommandLine,
1663 _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
1664 _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
1665 _In_ BOOL bInheritHandles,
1666 _In_ DWORD dwCreationFlags,
1667 _In_opt_ LPVOID lpEnvironment,
1668 _In_opt_ LPCSTR lpCurrentDirectory,
1669 _In_ LPSTARTUPINFOA lpStartupInfo,
1670 _Out_ LPPROCESS_INFORMATION lpProcessInformation,
1671 _In_ DWORD nDlls,
1672 _In_reads_(nDlls) LPCSTR *rlpDlls,
1673 _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEA pfCreateProcessA)
1674{
1675 if (pfCreateProcessA == NULL) {
1676 pfCreateProcessA = CreateProcessA;
1677 }
1678
1679 PROCESS_INFORMATION backup;
1680 if (lpProcessInformation == NULL) {
1681 lpProcessInformation = &backup;
1682 ZeroMemory(&backup, sizeof(backup));
1683 }
1684
1685 if (!pfCreateProcessA(lpApplicationName,
1686 lpCommandLine,
1687 lpProcessAttributes,
1688 lpThreadAttributes,
1689 bInheritHandles,
1690 dwCreationFlags | CREATE_SUSPENDED,
1691 lpEnvironment,
1692 lpCurrentDirectory,
1693 lpStartupInfo,
1694 lpProcessInformation)) {
1695 return FALSE;
1696 }
1697
1698 if (!DetourUpdateProcessWithDll(lpProcessInformation->hProcess, rlpDlls, nDlls) &&
1699 !DetourProcessViaHelperDllsA(lpProcessInformation->dwProcessId,
1700 nDlls,
1701 rlpDlls,
1702 pfCreateProcessA)) {
1703
1704 TerminateProcess(lpProcessInformation->hProcess, ~0u);
1705 CloseHandle(lpProcessInformation->hProcess);
1706 CloseHandle(lpProcessInformation->hThread);
1707 return FALSE;
1708 }
1709
1710 if (!(dwCreationFlags & CREATE_SUSPENDED)) {
1711 ResumeThread(lpProcessInformation->hThread);
1712 }
1713
1714 if (lpProcessInformation == &backup) {
1715 CloseHandle(lpProcessInformation->hProcess);
1716 CloseHandle(lpProcessInformation->hThread);
1717 }
1718

Callers

nothing calls this directly

Calls 2

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…