Resources | developer.brewmp.com Resources | developer.brewmp.com

Developer

resources

SysRsc

A basic Brew MP primitive that supports a type of resource. SysRsc primitives are special ModRsc primitives that the component infrastructure recognizes and organizes into a system-wide registry, which can be queried using the IModInfo interface. It has a unique 32-bit ID, and defines the format of the ID and the data fields. A system resource ID is a variable length binary string, which makes it extremely flexible. Similar to ModRsc, two entries of system resources must not have the same key (i.e., the same type and ID).

Prototype

SysRsc { 
  type = 0xf000ba00, 
  id = 0x7890ffff, 
  data = "xyz\0\5\9",
}
  • type: A unique 32-bit ID that defines the ID and the data.
  • id: Must be of type string or number (a ClassID). If a number, it will be converted to a string of little-endian format. This is the key under which it will be stored in the registry.
  • data: Associated resource data. A string value is accepted as is. Numbers are converted into a string of little-endian format.

Declaring a MIME type and its handler

Where there is a file named myApp.bid that contains the following definition of a friendly ClassID:

#define AEECLSID_myApp 0x6F3B438B

The CIF file that contains the SysRsc primitive can include AEECLSID_myApp.bid, which provides a definition of the friendly ClassID. You can use either friendly ClassIDs or raw ClassIDs.

include "AEEClassIDs.h" -- Need to include for AEECLSID_APP
include "myApp.bid" -- Need to include for AEECLSID_myApp
SysRsc { 
    type = AEECLSID_APP, 
    id   = "img/png", 
    data = AEECLSID_myApp, 
}

Note: AEECLSID_myApp should be specified as the handler for MIME type .img/.png.

See the ModRsc topic for more information.

License System Resource in the MIF

AEEUID_LicenseSystem defines a system resource (SysRsc) identifier that may be used to specify the license system (if any) that governs an application. An application developer, carrier, or OEM that wishes to forgo any license enforcement on their application can include the SysRsc entry as listed in the example below in the application CIF/MIF. SysRsc allows the MIF to determine which license system to invoke or ignore the license check altogether.

The example shown here tells Brew that there is no license required for this application.

include "AEELicenseSystem.bid"
 SysRsc { 
   type = AEEUID_LicenseSystem, -- System resource identifier 
   id = AEECLSID_MYTESTAPP, -- My app clsid 
   data = NO_LICENSE_REQUIRED, -- "none", 
}

Replace AEECLSID_MYTESTAPP with your application ClassID. Only one instance of this resource per application ClassID needs to be added in the CIF. Note that this is not the same as specifying "No License" in the MIF.

The application must be signed by an accepted/valid signing authority before Brew MP will honor the request to forgo license checking. When an attempt is made to launch the application, Brew MP looks for the presence of this entry in the signed portion of the MIF. If a matching entry is found, then all license related checks are bypassed. Note that license checks typically enforced while a licensed application is executing (minutes of use, expiry) are also bypassed. If the application has a valid license associated with it, and passes signature validation, then the application is allowed to launch.

If the signed portion of the MIF does not include this information, the default License System is invoked by Brew MP, and asked if the application may be launched.

If the application does not have a valid license associated with it, or the rights contained in the license have expired or have been used up, then the license system issues the appropriate error.

If the license system resource identifier is malformed or cannot be understood, the AEE_ILicenseSystem_EUNKNOWN error is issued. If the license system cannot be instantiated, the AEE_ILicenseSystem_EABSENT error is issued.

Licensing policy is never applied to extensions.

The license system resource is not required in the following situations:

  • If the application is statically hashed
  • If the intention is to run the application under a developer enablement signature
  • If the application is const.

The presence of the license system resource does not do any harm, so it is recommended adding it if there is any chance that the application may transition out of any of these states.

For more information, see AEEUID_LicenseSystem in the Brew MP API Reference.