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.