Zhiyi Zhang (@zhiyi) commented about dlls/user32/tests/monitor.c:
broken(res == DISP_CHANGE_FAILED), /* win8 TestBot */ "ChangeDisplaySettingsExA returned unexpected %ld\n", res); for (device = 0; device < device_count; ++device)
expect_dm(&devices[device].original_mode, devices[device].name, 0);
expect_dm(&devices[device].original_mode, devices[device].name, 0, FALSE);- event0 = CreateEventW(NULL, FALSE, FALSE, L"test_ChangeDisplaySettingsEx_event0");
 - ok(!!event0, "OpenEventA failed, error %#lx\n", GetLastError());
 - event1 = CreateEventW(NULL, FALSE, FALSE, L"test_ChangeDisplaySettingsEx_event1");
 - ok(!!event1, "OpenEventA failed, error %#lx\n", GetLastError());
 - event2 = CreateEventW(NULL, FALSE, FALSE, L"test_ChangeDisplaySettingsEx_event2");
 - ok(!!event2, "OpenEventA failed, error %#lx\n", GetLastError());
 
I think only one child_process_exit_event should be enough. You start a child process. The child process changes display mode according to argv parameters, set process exit events, and then exits.