MdeModulePkg RamDiskDxe: Fix wrong HII behavior for more than 8 RAM disks

The RamDiskDxe driver originally uses a variable-length HII varstore to
retrieve the HII checkbox status of each registered RAM disk.

However, HII does not support the variable-length varstore feature.
Therefore, only the checkbox status for the first 8 RAM disks are tracked
for the following definition of HII varstore structure considering the
alignment:

typedef struct {
  UINT64    Size;
  UINT8     RamDiskList[0];
  } RAM_DISK_CONFIGURATION;

This commit uses the private data of each registered RAM disks to track
the HII checkbox status instead to resolve the issue.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
This commit is contained in:
Hao Wu
2016-04-20 13:23:59 +08:00
parent 259d87146b
commit 09abc63675
5 changed files with 38 additions and 30 deletions

View File

@@ -23,9 +23,9 @@
#define MAIN_FORM_ID 0x1000
#define MAIN_GOTO_FILE_EXPLORER_ID 0x1001
#define MAIN_REMOVE_RD_QUESTION_ID 0x1002
#define MAIN_CHECKBOX_QUESTION_ID_START 0x1003
#define MAIN_LABEL_LIST_START 0x1004
#define MAIN_LABEL_LIST_END 0x1005
#define MAIN_LABEL_LIST_START 0x1003
#define MAIN_LABEL_LIST_END 0x1004
#define MAIN_CHECKBOX_QUESTION_ID_START 0x1100
#define CREATE_RAW_RAM_DISK_FORM_ID 0x2000
#define CREATE_RAW_SIZE_QUESTION_ID 0x2001
@@ -33,11 +33,10 @@
#define CREATE_RAW_DISCARD_QUESTION_ID 0x2003
typedef struct {
//
// The size of the RAM disk to be created.
//
UINT64 Size;
//
// CheckBox status for created RAM disks
//
UINT8 RamDiskList[0];
} RAM_DISK_CONFIGURATION;
#endif