The version 3 registration resource file is an evolution of the version 2 . This version is evolved to accommodate extended interfaces.
Set Info_format
to the type of info record that is, IMPLEMENTATION_INFO
or BINARY_IMPLEMENTATION_INFO
.
default_data
:
The data identifier field used by the resolver to determine if the implementation
matches a client request.
In IMPLEMENTATION_INFO
structure, the data type
is changed to accommodate maximum 2 strings with 255 bytes each.
In BINARY_IMPLEMENTATION_INFO
,
the data type is changed to accommodate a maximum 512 bytes.
opaque_data
:
A binary data field that can contain additional data. This additional data
can be used by the custom resolvers.
In IMPLEMENTATION_INFO
structure, the data type
is changed to accommodate maximum 2 strings with 255 bytes each.
In BINARY_IMPLEMENTATION_INFO
structure,
the data type is changed to accommodate a maximum 512 bytes.
extended_interfaces
a
maximum 8 UID's extended interfaces for both IMPLEMENTATION_INFO
structure
and BINARY_IMPLEMENTATION_INFO
structure.
FLAG_ROM_ONLY
changed
from bool data type to bit flag.
rom_only
set to 1 indicates the ROM-only implementation
must be used.
rom_only
set to 0 indicates the ROM-only
implementation can be overidden.
In REGISTRY_INFO
structure,
the resource_format_version must be RESOURCE_FORMAT_VERSION_3
.
In INTERFACE_INFOstructure
,
the interface_uid
is renamed to instantiation_interface_uid
.
In REGISTRY_INFO
structure,
the resource_format_version
must be RESOURCE_FORMAT_VERSION_3
.
#define IMPLEMENTATION_INFO_RECORD_TYPE1 1 STRUCT IMPLEMENTATION_INFO { BYTE info_format; // = IMPLEMENTATION_INFO_RECORD_TYPE1 LONG implementation_uid; BYTE version_no; LTEXT display_name; LEN BYTE LTEXT8 default_data[]; // maximum 2 strings with 255 bytes each LEN BYTE LTEXT8 opaque_data[]; // maximum 2 strings with 255 bytes each LONG extended_interfaces[]; // maximum 8 extended interfaces BYTE flags; } #define IMPLEMENTATION_INFO_RECORD_TYPE2 2 STRUCT BINARY_IMPLEMENTATION_INFO { BYTE info_format; // = IMPLEMENTATION_INFO_RECORD_TYPE2 LONG implementation_uid; BYTE version_no; LTEXT display_name; BYTE default_data[]; // maximum 512 bytes BYTE opaque_data[]; // maximum 512 bytes LONG extended_interfaces[]; // maximum 8 extended interfaces BYTE flags; } STRUCT INTERFACE_INFO { LONG instantiation_interface_uid; STRUCT implementations[]; // maximum 8 implementations for each interface } STRUCT REGISTRY_INFO { LONG resource_format_version; // Use RESOURCE_FORMAT_VERSION_3 LONG dll_uid; STRUCT interfaces[]; // maximum 4 interfaces }
Maximum of fourINTERFACE_INFO
structures can be defined
in one resource file.
Maximum of eight IMPLEMENTATION_INFO
or BINARY_IMPLEMENTATION_INFO
structures
in each INTERFACE_INFO
. Totally eight structures can be
defined.
Maximum eight extended interfaces in each IMPLEMENTATION_INFO
record.
In a IMPLEMENTATION_INFO
record a maximum of two strings
with 255 bytes each can be used for default_data
oropaque_data
definitions.
In a BINARY_IMPLEMENTATION_INFO
record, a maximum
of 512 bytes each for default_data
or opaque_data
definitions.