Если вы ожидаете только одного процесса (индекс i), вам следует использовать WaitForSingleObject.Если вы ожидаете несколько процессов, вам нужно передать массив дескрипторов, как говорили другие, а не указатель на PROCESS_INFORMATION.Если вы настаиваете на использовании WaitFoRmultipleObjects для одного объекта, используйте:
WaitForMultipleObjects(1, &information[i].hProcess, TRUE, INFINITE)
Если вы используете что-то отличное от 1, посмотрите на определение PROCESS_INFORMATION:
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadId;
} PROCESS_INFORMATION, *LPPROCESS_INFORMATION;
Следующие dwProcessId и dwThreadIDзатем будут неправильно обрабатываться как дескрипторы, ваш вызов не будет работать должным образом.
Что-то вроде:
HANDLE hProcess[MAX_PROCESSES];
for(int i=0; i<numberOfProgramsRan; i++)
{
hProcess[i] = information[i].hProcess;
}
WaitForMultipleObjects(numberOfProgramsRan, hProcess, TRUE, INFINITE);
Будет ожидать всех ваших процессов.