Unified Invisible Memory Management Interface (UIMMI)

Because Invisible Memory is not managed by Windows, any application can manage and access Invisible Memory. Obviously, data stored in Invisible Memory by one application can easily be overwritten by another application, which can cause serious problems. To avoid such access violation issues, you need to carefully manage applications to ensure that only one application is using Invisible Memory. Such management operations are tedious and error-prone. Also, in some  scenarios, you might want multiple applications to be able to use Invisible Memory concurrently, rather than the exclusive use by one application.

Considering the above inconvenience and limitations, we have introduced a new functional module called Unidentified Invisible Memory Management Interface (UIMMI). This interface provides a unified way to manage and use Invisible Memory. More importantly, it allows multiple applications to use Invisible Memory at the same time without worrying about access violations.

Use UIMMI

Every application that supports UIMMI has a unified launch button , usually located in the lower left corner of the main interface of the application. Taking Primo Ramdisk as an example, the following steps describe how to enable Invisible Memory through UIMMI.

  1. Open Primo Ramdisk and click on the UIMMI launch button.

  2. UIMMI defines two types of options: global and local. Global options apply to all UIMMI applications, while local options apply only to the current application. Click Enable IM to set up Invisible Memory.

  3. Change the global and local options when necessary. These options are described in detail in the next section of this article. Click Continue. The program will start to detect Invisible Memory address space, and return the result. If successful, detected Invisible Memory can be used in UIMMI applications.


UIMMI Options

Global Options

Front-end Reserve and Quota: These two options define the address range of Invisible Memory that UIMMI is allowed to manage. The figure below illustrates how they affect the UIMMI managed space.

By default, UIMMI will detect and manage the whole Invisible Memory address space. If front-end reserve value is set, that much address space from the beginning of the whole Invisible Memory space is reserved for use by the system or other applications and is not managed by UIMMI. If a quota is set, the maximum amount of Invisible Memory that UIMMI can manage is limited, and the rest (back-end address space) is reserved for use by the system or other applications and is not managed by UIMMI.

With these two options, UIMMI can reserve the corresponding front-end and back-end address space for the system and third-party applications to avoid conflicts caused by the simultaneous use of Invisible Memory. Usually these reserved spaces are used by on-board video adapters as shared video memory. For instance, MSI 880GM-E41 motherboard can set up to 1024 MB of physical memory as shared video memory. If the "UMA Location" option in the BIOS is set to "Below", shared video memory uses Windows managed memory, in which case it does not conflict with UIMMI and there is no need to reserve Invisible Memory address space. But if "UMA Location" is set to "Above", shared video memory will use the back-end address space of Invisible Memory. In this case, UIMMI must reserve the back-end address space to avoid conflicts. An example of a specific setting is as follows: Assuming your computer has 8 GB of physical memory installed and the 32-bit operating system only recognizes 3.25 GB, the expected amount of Invisible Memory should be 4.75 GB. If the shared video memory is set to 1 GB, we need to set UIMMI quota to less than 3.75 GB. Since the MSI 880GM-E41 motherboard only uses the back-end address space, we don't need to set front-end reserve here.

Tips: How to know if the the on-board video adapter is using front-end or back-end address space?
Due to the large number of motherboard models, we cannot classify and list all motherboards. But you can test it by yourselves by following steps.
1. Reserve the Invisible Memory address space at either end (front-end or back-end), and the reserved space size is the same as the shared video memory size.
2. Fill the remaining Invisible Memory with arbitrary data. For example, create a RAM-disk with the remaining Invisible Memory, and then fill the RAM-disk.
3. If you find that the computer has a blurry screen or abnormal display, it means that the remaining Invisible Memory overlaps with the shared video memory. At this point you can try reserving the address space on the other side and repeat step 2.

Hibernation File Location:  This option specifies the root directory for the Invisible Memory hibernation file. By default, it is the system drive where Windows is installed.

Local Options

Invisible Memory Hibernation: When this option is set, the application can safely enter the hybrid-sleep or hibernation, and resume without error. UIMMI creates a file named "imhiberfilex.sys" to save data in Invisible Memory before hibernation. If this option is not set, unexpected errors may occur when the computer resumes from hibernation. Of course, if hibernation is disabled on your computer, you can leave this option unchecked, which can avoid creating hibernation files and save hard disk space.

Note: On Windows 8 or newer operating system, if the "Fast Startup" option is enabled, you have to enable Invisible Memory Hibernation.

Applications that Support UIMMI

All Romex Software products, except VSuite Ramdisk, support UIMMI. VSuite Ramdisk has been replaced by its successor Primo Ramdisk.

Tags