This schema defines EFI and Framework Data Elements Abstract is valid for all Description Files This section is required. This is a single sentence to describe the module and will be used in sample files as the abstract data in the header comment section. This is a sub-element of AntTask This is an ant command that will be inserted into a biuld sequence. Since ant commands are valid XML statements, special care must be taken to use the correct tokens for reserved words and escape quote characters. This is a sub-element of UserDefinedAntTasks Define a file that contains one or more ant tasks that are to be added into or replacing of sequences of build steps. These files will be called using the ant-call task on a file name. These files must be valid apache-ant formatted task files. BaseName is valid for all Description Files We need to be able to permit different attributes for every basename BootModes is valid for all Description Files This is a list of BootModes Supported by the Module BuildOptions is valid for MBD and FPD files. Specific Build Options, by Tool Chain, than should be applied, overriding any global options C_Name is valid for all Description Files ComponentName is valid for all Description Files Describe the valid Framework Component Type A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean. A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean. This is a list of DataHubRecord elements. The Name of the Database, "FrameworkDatabase" The default setting of a PCD entry. This section is required for new modules and libraries and must contain more information than the Abstract. This is a list of Events Module has an event that is waiting to be signaled. Event is named by GUID. This is a child of MSA files, both Library and Module. This is a list of Extern statements, right now, only Driver Binding information is provided. Driver Module Library Module Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined. Permit User Defined Extern Tags Module Call Backs Driver Module Library Module Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined. Permit User Defined Extern Tags Module Call Backs Define the FFS File attributes within a sections and containing sections information Describe the valid content of a filename This is a list of Filenames Describe the list of a Formset elements Describe the valid content of a Formset Describe the valid content of a Formset Describe the valid content of a GUID Describe the valid content of a PCD GUID element Describe the valid content of a PCD GUID element This section is used to describe how a GUID, PPI or PROTOCOL is to be used within the context of PCDs. One or More Package Names or Arch sections is required. Includes are not files, but paths to where header files are located. Different Instances of Libraries Define in the MSA and/or SPD, what class of library is being produced by a library module - for components, it can also specify what class of library is consumed. This element defines a class of library, along with the path to the Include Header for this library This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes. This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes. This is record format for a Module entry in the Framework Database file. This describes the fields in an Module record in the Framework Database. The Path field is relative to the workspace to Module Surface Area (MSA) files. This tag is used in the Framework Package Database File to track package installation This is the valid content of a Module Name Describe the valid EFI Phase that the Module is designed to execute under. Describe the valid content of a Surface Area Package Description (SPD) file Describe the valid content of a Surface Area Package Description (SPD) file Define where we want our output to go. The Attribute, IntermediateDirectories, default MODULE, says that intermediate files will be local to the module, versus a unified directory structure. Child of Module Surface Area documents, MSA and MBD files, Library Modules and Other Modules One or more PcdData or PcdBuildData Elements Only one type is permitted This is a child of PCDs and can occur in the MSA and MBD files. This is date element is used in the Module Surface Area (MSA) file and contains references to be used by a Platform Build There is ONE required Attribute, ItemType Max Number of Bytes of the data. This tag is used in the Package Surface Area Description File to track package dependencies for a module This defines the minimum header file needed to support a given ModuleType. This tag is used in the Framework Package Database File to track all packages installed in a workspace. This tag is used in the Framework Package Database File to track individual package information. The Path is a relative path to the SPD File. This tag is used in the Package Surface Area Description File to track package dependencies for a module Describe the valid content of a filename NEW: Will become a child of ModuleSA in the FPD Child of PcdBuildDeclarations This is date element is used in the platform build description file and contains valid data for a Platform Build There is ONE required Attribute, ItemType This as a unique identifier defined for either this name space. The Target Attribute may be used to define a Target name space, such as PCI. This specifies the size of the Pcd Datum. It is either 8, 16, 32 or 64 bits for values, 1 bit for BOOLEAN and variable length for elements defined as VOID* This Bit means that the Variable data is associated with HII This bit enables the Vital Product Data area within flash for maintaining PCD information This is only applicable to ItemType DYNAMIC_EX This element is a list of two entries per line, the first should be an integer, while the second entry should be a string value This section is for a list of SkuData Elements, ID and Value This value comes from a production line database, and has nothing to do with the number of SkuData IDs that have been defined. This is the specific Sku ID for this build. Max Number of Bytes of the data. This is the Variable's GUID if and only if HII is enabled. This is the C Name for the Variable, and is valid if and only HII is enabled. If HII is enabled, This is the offset into the variable data entry, If Vpd is enabled, then it's the Offset into the VPD area of the image defined by platform manufacturer, if neither HII nor Vpd are enabled, it's the offset into the PCD Data Area. HII and VPD can never be enabled at the same time (as of the date of this document.) FIELD IS NOT USED! REMOVE in FINAL! This is an enumerated data type that will be used for DYNAMIC_EX, PEIM or DXE only Child of Framework Platform Description (FPD) We permit the FPD to use an external XML file for PCD information or else the information must be contained within the XML data element, PcdBuildData. Child of PcdBuildDeclarations This is date element is used in the platform build description file and contains valid data for a Platform Build There is ONE required Attribute, ItemType This as a unique identifier defined for either this name space. The Target Attribute may be used to define a Target name space, such as PCI. This specifies the size of the Pcd Datum. It is either 8, 16, 32 or 64 bits for values, 1 bit for BOOLEAN and variable length for elements defined as VOID* This Bit means that the Variable data is associated with HII This bit enables the Vital Product Data area within flash for maintaining PCD information This is only applicable to ItemType DYNAMIC_EX This element is a list of two entries per line, the first should be an integer, while the second entry should be a string value This section is for a list of SkuData Elements, ID and Value This value comes from a production line database, and has nothing to do with the number of SkuData IDs that have been defined. This is the specific Sku ID for this build. Max Number of Bytes of the data. This is the Variable's GUID if and only if HII is enabled. This is the C Name for the Variable, and is valid if and only HII is enabled. If HII is enabled, This is the offset into the variable data entry, If Vpd is enabled, then it's the Offset into the VPD area of the image defined by platform manufacturer, if neither HII nor Vpd are enabled, it's the offset into the PCD Data Area. HII and VPD can never be enabled at the same time (as of the date of this document.) FIELD IS NOT USED! REMOVE in FINAL! This is an enumerated data type that will be used for DYNAMIC_EX, PEIM or DXE only Child of Package Surface Area Description (SPD) This permits entering information about a package's PCD information This is the valid content of the PCD table of a Module. The contents may not be wired at build time, and these only refer to Platform Build values, not modules. This element is valid for PcdInfo.xml and FPD files. There is ONE required Attribute, ItemType Max Number of Bytes of the data. Database Entry to locate the Platform Build Tips - path to FPD file. Define the Name of a Platform Provide for one or more Ppi or PpiNotify sections. If either Protocol or ProtocolNotify sections are needed, one or more of them should be specified within this section Sections refers to the Firmware Filesystem sections, PE32, UI, VER, DXS, etc. and how they are made Multiple Filenames may be specified, and they may also be scoped to a specific Architecture. This string is used to provide the name and version of the Specification that the component conforms to. This is list of System Table elements. This is a sub-element of BuildOptions Permit Users to define their own custom ANT tasks. A list of EFI Variables described by GUID string pair. This is an EFI Variable Entry This entry represents the Hex Byte Offset {0x0, 0xn} to where the data starts. This entry represents the Location of the Starting Bit {0,8} of the start of Data. A value of zero or 1 indicates that there is no BitOffset into the byte. This number represents the number of bits to use {0, 7} starting at the BitOffset. A value of 0 indicates that the entire Byte should be used. This is an EFI Variable Entry This entry represents the Hex Byte Offset {0x0, 0xn} to where the data starts. This entry represents the Location of the Starting Bit {0,8} of the start of Data. A value of zero or 1 indicates that there is no BitOffset into the byte. This number represents the number of bits to use {0, 7} starting at the BitOffset. A value of 0 indicates that the entire Byte should be used.