Holy cow, I wrote a book!
If you have a really large file and try to view its properties
in Explorer, you may find that the Version tab doesn't appear.
What's going on?
The Version tab uses the GetFileVersionInfo
family of functions
to obtain version information from files.
It so happens that the GetFileVersionInfo function
works by calling
and then using functions like
FindResource to locate the version resource
so it can
allocate a buffer to hold the version resource plus additional data
to assist in character set translation.
If the file is larger than the available address space in the Explorer
process, then the call to
LoadLibraryEx will fail due to lack of address space
into which to map the image.
Library not loaded means no version resource to show you.
When we explained this behavior to a customer, the customer wanted
to know the exact file size at which the problem occurs.
There is no single exact file size at which the problem occurs
because the amount of available address space is determined by
large numbers of factors which cannot be boiled down to a simple
It depends on the pattern of memory allocation that took place
which shell extensions and
DLLs got loaded at what point in time, where they got relocated to,
which ones got unloaded relative to others loading,
how much memory they allocated and where those allocations ended up.
It's like asking the airline,
"I know that the later I make my reservation, the less likely I'm
going to get the exact seat I want.
What is the cutover point before which I will get a window seat
and after which I won't?"
There is no specific point in time where "all reservations before
this point will definitely get a window seat,
and all reservations after this point will definitely not
It all depends on the pattern of requests before you make
Indeed, it's even possible that if you had made your reservation
later, you would have gotten that window seat, because somebody
who had a window seat called in a cancellation.
One customer apparently didn't understand the unpredictability
of the cutover point and asked,
"Is there a way to change this limit?"