On Windows, the file map offset must be a multiple of the system
We handle the alignment requirement internally. We round down the given
offset to the next aligned value. We then map the aligned offset plus
the offset difference plus the map length. We adjust the returned
pointer value to the original offset and store the original pointer
inside the file map structure for use by the unmap function.