Replacing and Hiding Plug-ins in Composite ROMs

From v9.3, the Symbian platform supports building a composite NAND ROM, which allows several ROM images to be mapped to a single ROM (e.g. Z:) drive. This provides an easy method of customising ROMs, as new ROM images can be added without requiring rebuilding and reflashing of the ROM images already present on a device.

This page describes how to use this technique to:

  • hide an existing ROM ECom plug-in, effectively removing it from the ROM drive.

  • update or customise an existing ROM ECom plug-in

When Static Plug-in Information (SPI) is used (see How to improve load time with SPI files), each ROM section that contains ECom plug-ins will have an SPI file, and ECom will read each file.

Note: this functionality depends on the rule that the ordering of images defined using rom_image matches the ordering of the mounting drives configured in the estart component. For more information on how drives are mounted for composite ROMs, see Mounting multiple ROM images as a single ROM drive.

Hiding an ECom plug-in

To hide an ECom plug-in, use the HIDE_ECOM_PLUGIN keyword in the obey (.iby) file. Its first argument is the DLL name, and the second argument is the registration file name.

The following example shows ROM image 2 hiding plugin1 from ROM image 1:

//romimage1.iby
ECOM_PLUGIN(plugin1.dll,plugin1.rsc)
ECOM_PLUGIN(plugin2.dll,plugin2.rsc)
//romimage2.iby
ROM_IMAGE[2] HIDE_ECOM_PLUGIN(plugin1.dll,plugin1.rsc) //hide ECom plugin 1 from image 1

Replacing an ECom plug-in

To replace a plug-in, simply re-define the plug-in, using the ECOM_PLUGIN macro in the Obey file.

The following example shows ROM image 2 replacing plugin1 from ROM image 1:

//romimage1.iby
ECOM_PLUGIN(plugin1.dll,plugin1.rsc)
ECOM_PLUGIN(plugin2.dll,plugin2.rsc)
…
//romimage2.iby
ROM_IMAGE[2] ECOM_PLUGIN(plugin1.dll,plugin1.rsc) //replace ECOM plugin 1 in image 1

For reference information on the relevant obey file keywords, and their related macros, see:

  • __ECOM_PLUGIN, which also discusses the macro ECOM_PLUGIN.

  • _HIDE__ECOM_PLUGIN, which also discusses the macro HIDE_ECOM_PLUGIN.