On 13/04/16 15:55, Andrew Fish wrote:
OK, but why?  What is the concrete purpose of this, that could not be achieved 
by more simply having multiple EFI_HII_CONFIG_ACCESS_PROTOCOL instances?

I think it has to do with the limitation of one protocol per handle. If there 
are multiple instances how do they get the right one?

That would make some sense. Other than DriverSampleDxe, has there ever been a use case in which a driver actually uses multiple storage mechanisms attached to the same handle?

This is possibly a reflection of the excessive complexity in the HII database 
design.  As far as I can tell, all the functionality of ExtractConfig() could 
be provided with a very simple API such as:

  EFI_STATUS
  EFIAPI
  ExtractConfig (
    IN CONST  EFI_HII_CONFIG_ACCESS_PROTOCOL  *This,
    IN CONST  EFI_STRING                      Name,
    OUT       EFI_STRING                      *Value
  )


I think the concept is the form creator (UI creator) should be able to specify 
how values get stored. The obvious choices are EFI Variable, or local storage 
on the card. The API tries not to impose constrains, or make assumptions.

The above simplified API does not impose any such constraints. It would provide a simple name/value-pair API, with the driver completely free to choose how values were actually stored.

As I remember (it was a long time ago) it was a specification driven design.

Always a sign of impending doom.  :)

Michael
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to