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

Function DetourCreateProcessWithDllA

lib_fiber/cpp/src/detours/creatwth.cpp:900–955  ·  view source on GitHub ↗

/////////////////////////////////////////////////////////////////////////

Source from the content-addressed store, hash-verified

898//////////////////////////////////////////////////////////////////////////////
899//
900BOOL WINAPI DetourCreateProcessWithDllA(_In_opt_ LPCSTR lpApplicationName,
901 _Inout_opt_ LPSTR lpCommandLine,
902 _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
903 _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
904 _In_ BOOL bInheritHandles,
905 _In_ DWORD dwCreationFlags,
906 _In_opt_ LPVOID lpEnvironment,
907 _In_opt_ LPCSTR lpCurrentDirectory,
908 _In_ LPSTARTUPINFOA lpStartupInfo,
909 _Out_ LPPROCESS_INFORMATION lpProcessInformation,
910 _In_ LPCSTR lpDllName,
911 _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEA pfCreateProcessA)
912{
913 DWORD dwMyCreationFlags = (dwCreationFlags | CREATE_SUSPENDED);
914 PROCESS_INFORMATION pi;
915 BOOL fResult = FALSE;
916
917 if (pfCreateProcessA == NULL) {
918 pfCreateProcessA = CreateProcessA;
919 }
920
921 fResult = pfCreateProcessA(lpApplicationName,
922 lpCommandLine,
923 lpProcessAttributes,
924 lpThreadAttributes,
925 bInheritHandles,
926 dwMyCreationFlags,
927 lpEnvironment,
928 lpCurrentDirectory,
929 lpStartupInfo,
930 &pi);
931
932 if (lpProcessInformation != NULL) {
933 CopyMemory(lpProcessInformation, &pi, sizeof(pi));
934 }
935
936 if (!fResult) {
937 return FALSE;
938 }
939
940 LPCSTR rlpDlls[2];
941 DWORD nDlls = 0;
942 if (lpDllName != NULL) {
943 rlpDlls[nDlls++] = lpDllName;
944 }
945
946 if (!DetourUpdateProcessWithDll(pi.hProcess, rlpDlls, nDlls)) {
947 TerminateProcess(pi.hProcess, ~0u);
948 return FALSE;
949 }
950
951 if (!(dwCreationFlags & CREATE_SUSPENDED)) {
952 ResumeThread(pi.hThread);
953 }
954 return TRUE;
955}
956
957

Callers

nothing calls this directly

Calls 1

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…