The version 3 registration resource file is an evolution of the version 2 . This version is evolved to accommodate extended interfaces.
#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.