| 956 | |
| 957 | |
| 958 | BOOL WINAPI DetourCreateProcessWithDllW(_In_opt_ LPCWSTR lpApplicationName, |
| 959 | _Inout_opt_ LPWSTR lpCommandLine, |
| 960 | _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, |
| 961 | _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, |
| 962 | _In_ BOOL bInheritHandles, |
| 963 | _In_ DWORD dwCreationFlags, |
| 964 | _In_opt_ LPVOID lpEnvironment, |
| 965 | _In_opt_ LPCWSTR lpCurrentDirectory, |
| 966 | _In_ LPSTARTUPINFOW lpStartupInfo, |
| 967 | _Out_ LPPROCESS_INFORMATION lpProcessInformation, |
| 968 | _In_ LPCSTR lpDllName, |
| 969 | _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEW pfCreateProcessW) |
| 970 | { |
| 971 | DWORD dwMyCreationFlags = (dwCreationFlags | CREATE_SUSPENDED); |
| 972 | PROCESS_INFORMATION pi; |
| 973 | |
| 974 | if (pfCreateProcessW == NULL) { |
| 975 | pfCreateProcessW = CreateProcessW; |
| 976 | } |
| 977 | |
| 978 | BOOL fResult = pfCreateProcessW(lpApplicationName, |
| 979 | lpCommandLine, |
| 980 | lpProcessAttributes, |
| 981 | lpThreadAttributes, |
| 982 | bInheritHandles, |
| 983 | dwMyCreationFlags, |
| 984 | lpEnvironment, |
| 985 | lpCurrentDirectory, |
| 986 | lpStartupInfo, |
| 987 | &pi); |
| 988 | |
| 989 | if (lpProcessInformation) { |
| 990 | CopyMemory(lpProcessInformation, &pi, sizeof(pi)); |
| 991 | } |
| 992 | |
| 993 | if (!fResult) { |
| 994 | return FALSE; |
| 995 | } |
| 996 | |
| 997 | LPCSTR rlpDlls[2]; |
| 998 | DWORD nDlls = 0; |
| 999 | if (lpDllName != NULL) { |
| 1000 | rlpDlls[nDlls++] = lpDllName; |
| 1001 | } |
| 1002 | |
| 1003 | if (!DetourUpdateProcessWithDll(pi.hProcess, rlpDlls, nDlls)) { |
| 1004 | TerminateProcess(pi.hProcess, ~0u); |
| 1005 | return FALSE; |
| 1006 | } |
| 1007 | |
| 1008 | if (!(dwCreationFlags & CREATE_SUSPENDED)) { |
| 1009 | ResumeThread(pi.hThread); |
| 1010 | } |
| 1011 | return TRUE; |
| 1012 | } |
| 1013 | |
| 1014 | BOOL WINAPI DetourCopyPayloadToProcess(_In_ HANDLE hProcess, |
| 1015 | _In_ REFGUID rguid, |
nothing calls this directly
no test coverage detected
searching dependent graphs…