This issue occurs because the Windows Boot Manager does not release the heap-allocated buffer before loading Winload.exe.
In the x86-based version of Windows 8, the block I/O code of the Windows Boot Manager needs at most two additional blocks to be read into the buffer that is allocated by the caller. A new buffer is heap-allocated to complete the read. Winload.exe maps all the allocations of the Windows Boot Manager one by one before the memory manager initialization is completed.
To map all the allocations, a static array is used for 500 memory descriptors. Additionally, Winload.exe tries to map the WIM file and aligned WIM buffer regions that are larger than 300 MB. In this situation, Winload.exe runs out of descriptors and cannot return to the Windows Boot Manager. Therefore, the issue that is described in "Symptoms" section occurs.
Note The issue does not occur under the one of the following situations:
- The WIM file is read in 1 MB chunks. The startup performance in Windows 8 compared to the startup performance in earlier versions of Windows is improved. More specifically, the WIM file can be read from disk in one large read instead of in 1 MB chunks
- You start an x64-based version of Windows 8 or Windows RT. The issue does not occur because the Windows Boot Manager creates the map for Winload.exe and does not have a static descriptor limit at that time.