| 
                   | 
               
                  
                   | 
            |
ECom provides two ways to prevent a RAM-based plug-in from being used:
by using the ROM-only resolver to restrict plug-ins to those that live in ROM
by preventing a ROM-based implementation from being overridden by a RAM-based implementation.
The ROM-only resolver provides the ability to prevent the use of plug-ins that are not in the ROM when searching for an implementation.
            To use this resolver, applications must specify
            KRomOnlyResolverUid as the CResolver
            UID passed to those variants of
            REComSession::ListImplementationsL() and
            REComSession::CreateImplementationL() that take the
            TUid aResolverUid parameter. 
            
         
If an installable upgrade to a ROM-based plug-in is correctly supplied by a vendor, then the ROM-only resolver will find and use the upgrade. Platform security controls are used to ensure that the upgrade is secure. For details, see How to upgrade ROM-based plug-ins securely.
            A plug-in wishing to prevent one or more of its implementations being
            overridden by a RAM-based implementation with a higher version number can
            specify that those implementations are ROM-only. It does this in the source
            resource file (.rss). 
            
         
            The resource file is where the plug-in declares its set of
            implementations and interfaces. The resource structures are usually defined in
            the file RegistryInfo.rh, which is included in the source resource
            (.rss) file. However, a plug-in that wants to declare one or more
            ROM-only implementations must use slightly modified resource
            structures declared in the file RegistryInfoV2.rh, and this header
            file must be used instead of (i.e. not in addition to)
            RegistryInfo.rh. 
            
         
            The two structs: REGISTRY_INFO and
            IMPLEMENTATION_INFO are slightly modified
            in RegistryInfoV2.rh: 
            
         
                  The REGISTRY_INFO struct
                  contains an additional member labelled resource_format_version
                  that, when set to RESOURCE_FORMAT_VERSION_2, tells ECom that this plug-in
                  resource file is in the version 2 format. 
                  
               
                  The IMPLEMENTATION_INFO struct
                  contains an additional member labelled rom_only. This is set to 1
                  to indicate a ROM-only implementation, and is set to 0 for implementations that
                  do not require this protection. 
                  
               
Care must be taken to explicitly set one of these values for all implementations declared in the file; those implementation that are not intended to be ROM-only must have a value set.
Note that RAM-based plug-ins can also use the version 2 resource file format. However, any implementation in such a plug-in that tries to declare itself as ROM-only is discarded and cannot be used.
See the example in writing a version 2 registration resource file.