Each Windows AIO request is an overlapped ReadFile/WriteFile at the request's offset, which on a synchronous handle also moves the descriptor's file pointer; on the console AIO transfers leave it alone. The requests now go through the positioned path sceKernelPread and sceKernelPwrite use (NativePositioned in Stdio.cpp, exposed as NativePositioned_nid_no_patch), which restores the pointer afterwards. Negative offsets still fail with EINVAL before the transfer. GuestAio sets the offset to 2 before a write batch and checks it is still 2 after. TechnicalDebt records that a concurrent read or write on the same descriptor can see the moved pointer in between, as for the pread family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UTjpbMX7BUFMZZaxJE98zV |
||
|---|---|---|
| .. | ||
| DirectoryDescriptor.hpp | ||
| File.hpp | ||
| FileFlags.hpp | ||
| NativeStat.hpp | ||