I was worried that mapping the file will fail if you're low on address space and are running this function on a large PE file. It ought to be possible to write a test to see how the function behaves when you've used up oodles of address space, though it'd be tricky to make the test reliable.
I see that Windows has a similar problem in MapFileAndCheckSum (which is said to be a caller of this function) http://www.daniweb.com/forums/thread122484.html so who knows, maybe Windows also maps the file...