I asked before, but I don't think I got an answer: what's unimplemented about the "io" parameter? It's not obvious just from reading the function.
As shown in the tests, the implementation's behaviour regarding `io` is not precise. On Windows 10, supplying an invalid address results in `STATUS_ACCESS_VIOLATION`; however, this implementation (and Windows < 10) simply fails with `STATUS_NOT_FOUND`.
This is indicative of the Windows implementation actually doing *something* with the block, so it's worth a FIXME until the behaviour matches Windows. Also, the FIXME won't cause much noise as it's not a common case (e.g. `CancelSynchronousIo` does not use it).