Jinoh Kang (@iamahuman) commented about dlls/ntdll/tests/pipe.c:
- U(ctx.iosb).Status = 0xdeadbabe;
 - ctx.iosb.Information = 0xdeadbeef;
 - thread = CreateThread(NULL, 0, synchronousio_thread, &ctx, 0, 0);
 - /* wait for I/O to start, which transitions the pipe handle from signaled to nonsignaled state. */
 - while ((ret = WaitForSingleObject(ctx.pipe, 0)) == WAIT_OBJECT_0) Sleep(1);
 - ok(ret == WAIT_TIMEOUT, "WaitForSingleObject returned %lu (error %lu)\n", ret, GetLastError());
 - memset(&iosb, 0x55, sizeof(iosb));
 - res = pNtCancelSynchronousIoFile(thread, &iosb, &iosb);
 - todo_wine {
 - ok(res == STATUS_NOT_FOUND, "NtCancelSynchronousIoFile returned %lx\n", res);
 - res = pNtCancelSynchronousIoFile(NULL, &ctx.iosb, &iosb);
 - ok(res == STATUS_INVALID_HANDLE, "NtCancelSynchronousIoFile returned %lx\n", res);
 - res = pNtCancelSynchronousIoFile(thread, &ctx.iosb, &iosb);
 - ok(res == STATUS_SUCCESS || broken(res == STATUS_NOT_FOUND) /* 32-bit */,
 "Failed to cancel I/O\n");- ok(U(iosb).Status == STATUS_SUCCESS || broken(U(iosb).Status == STATUS_NOT_FOUND) /* 32-bit */,
 
Is this broken on WOW64 (32-bit application on 64-bit Windows), real 32-bit Windows, or both?
In any case, I suggest using appropriate flags to test if this is actually the broken platform.
See `dlls/kernel32/tests/virtual.c` for the WOW64 case. For application bitness case, we can test for the `_WIN64` macro.