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

Function DetourCreateProcessWithDllExW

lib_fiber/cpp/src/detours/creatwth.cpp:1600–1659  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1598}
1599
1600BOOL WINAPI DetourCreateProcessWithDllExW(_In_opt_ LPCWSTR lpApplicationName,
1601 _Inout_opt_ LPWSTR lpCommandLine,
1602 _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
1603 _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
1604 _In_ BOOL bInheritHandles,
1605 _In_ DWORD dwCreationFlags,
1606 _In_opt_ LPVOID lpEnvironment,
1607 _In_opt_ LPCWSTR lpCurrentDirectory,
1608 _In_ LPSTARTUPINFOW lpStartupInfo,
1609 _Out_ LPPROCESS_INFORMATION lpProcessInformation,
1610 _In_ LPCSTR lpDllName,
1611 _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEW pfCreateProcessW)
1612{
1613 if (pfCreateProcessW == NULL) {
1614 pfCreateProcessW = CreateProcessW;
1615 }
1616
1617 PROCESS_INFORMATION backup;
1618 if (lpProcessInformation == NULL) {
1619 lpProcessInformation = &backup;
1620 ZeroMemory(&backup, sizeof(backup));
1621 }
1622
1623 if (!pfCreateProcessW(lpApplicationName,
1624 lpCommandLine,
1625 lpProcessAttributes,
1626 lpThreadAttributes,
1627 bInheritHandles,
1628 dwCreationFlags | CREATE_SUSPENDED,
1629 lpEnvironment,
1630 lpCurrentDirectory,
1631 lpStartupInfo,
1632 lpProcessInformation)) {
1633 return FALSE;
1634 }
1635
1636
1637 LPCSTR sz = lpDllName;
1638
1639 if (!DetourUpdateProcessWithDll(lpProcessInformation->hProcess, &sz, 1) &&
1640 !DetourProcessViaHelperW(lpProcessInformation->dwProcessId,
1641 lpDllName,
1642 pfCreateProcessW)) {
1643
1644 TerminateProcess(lpProcessInformation->hProcess, ~0u);
1645 CloseHandle(lpProcessInformation->hProcess);
1646 CloseHandle(lpProcessInformation->hThread);
1647 return FALSE;
1648 }
1649
1650 if (!(dwCreationFlags & CREATE_SUSPENDED)) {
1651 ResumeThread(lpProcessInformation->hThread);
1652 }
1653
1654 if (lpProcessInformation == &backup) {
1655 CloseHandle(lpProcessInformation->hProcess);
1656 CloseHandle(lpProcessInformation->hThread);
1657 }

Callers

nothing calls this directly

Calls 2

DetourProcessViaHelperWFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…