frame: use a more Win32 friendly version of reading a file in memory
It's only used when the file cannot be mapped in memory. This was not a real implementation of pread. As the comment suggests, the original offset was not respected. But we don't care in this case as we want to read the whole file from start to end. It is now a cancelation point. We can't cancel during the duration of the ReadFile call, but at least we cancel when it's done even if the whole file is not read.