See the response that Microsoft gave me. posts crossed.
The signed type is just for historical reasons and backwards (curious which backwards?) compatibility.
Second answer:
"Haha, I get where you're coming from! The decision to use LARGE_INTEGER for file sizes in Windows APIs does seem a bit like a relic from the past, much like the infamous "640K ought to be enough for anybody" quote attributed to Bill Gates (though he denies ever saying it).
The use of LARGE_INTEGER is indeed a historical artifact, designed to maintain backward compatibility with older applications. While it does limit the range to half of what an unsigned 64-bit integer could offer, the practical limit is still vast—about 9.22 exabytes, which is more than sufficient for most current applications."
Now only who will pay my coffee.....
(and yes, I dropped the 640k )