summaryrefslogtreecommitdiff
path: root/BaseTools/Conf/XMLSchema
diff options
context:
space:
mode:
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2011-10-29 06:59:30 +0000
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2011-10-29 06:59:30 +0000
commit0d2711a69397d2971079121df4326d84736c181e (patch)
tree0d3c93b9db1df5a30a0d15ec9d70c75768c1f67c /BaseTools/Conf/XMLSchema
parent421fb3b504cfe18033c49a40fcd46bab45a0fb50 (diff)
downloadedk2-platforms-0d2711a69397d2971079121df4326d84736c181e.tar.xz
Sync BaseTools Trunk (version r2387) to EDKII main trunk.
Signed-off-by: lgao4 Reviewed-by: gikidy git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12602 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'BaseTools/Conf/XMLSchema')
-rw-r--r--BaseTools/Conf/XMLSchema/DistributionPackage.xsd5742
1 files changed, 2871 insertions, 2871 deletions
diff --git a/BaseTools/Conf/XMLSchema/DistributionPackage.xsd b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd
index 1d3c690441..8f136ae04e 100644
--- a/BaseTools/Conf/XMLSchema/DistributionPackage.xsd
+++ b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd
@@ -12,2876 +12,2876 @@ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- elementFormDefault="qualified" targetNamespace="http://www.uefi.org/2011/1.1"
- xmlns="http://www.uefi.org/2011/1.1">
- <xs:element name="DistributionPackage">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI
- Distribution Package description (PKG) file. It describes the content
- of:</xs:documentation>
- <xs:documentation xml:lang="en-us"> 1) Package descriptions with
- definitions and headers.</xs:documentation>
- <xs:documentation xml:lang="en-us"> 2) Modules in either source or binary
- format. (Note that Binary format is for FFS leaf section file types
- only, complete FFS files cannot be distributed using this distribution
- format.) </xs:documentation>
- <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools
- used to modify the binary images to create UEFI/PI compliant images. </xs:documentation>
- <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to
- distribute other miscellaneous content that is not specific to UEFI/PI
- images. </xs:documentation>
- <xs:documentation xml:lang="en-us"> The Package Surface Area describes the
- content of packages, while the Module Surface Area provides information
- relevant to source and/or binary distributions. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This header contains (legal)
- information usually required for distributing both binary and/or
- source code. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The list of packages in this
- distribution. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Packages are groups of files
- and/or modules that are similar in nature.</xs:documentation>
- <xs:documentation xml:lang="en-us"> Packages are uniquely identified
- by a package GUID and a package version. </xs:documentation>
- <xs:documentation xml:lang="en-us"> A package can declare public
- mappings of C names to GUID values. </xs:documentation>
- <xs:documentation xml:lang="en-us"> A package can provide header
- files for library classes and/or other industry standard
- definitions. </xs:documentation>
- <xs:documentation xml:lang="en-us"> A package can also declare
- public mappings of platform configuration database (PCD)
- &quot;knobs&quot; to control features and operation of
- modules within a platform. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Finally, a package lists the
- library instances and/or modules that are provided in a
- distribution package. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The listing of UEFI/PI compliant
- modules in this distribution that are NOT part of a Package. Every
- module that is provided as part of a package needs to be described
- in a PackageSurfaceArea.Modules section. </xs:documentation>
- <xs:documentation xml:lang="en-us"> The ModuleSurfaceArea section
- describes how each module in a distribution is coded, or, in the
- case of a binary module distribution, how it was built. </xs:documentation>
- <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and
- modules are uniquely identified by the Module's GUID and version
- number. </xs:documentation>
- <xs:documentation xml:lang="en-us"> This section will typically be
- used for modules that don't require any additional files that
- would be included in a package. For example, the Enhanced FAT
- driver binary does not need to have a package description, as no
- additional files are provided. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section is for distributing
- vendor specific executable tools, tool source code and/or
- configuration files. These tools are primarily for manipulating
- code and/or binary images. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Tools in this section
- can:</xs:documentation>
- <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files
- to create source code files and build scripts. </xs:documentation>
- <xs:documentation xml:lang="en-us"> 2) Modify image files to conform
- to UEFI/PI specifications. </xs:documentation>
- <xs:documentation xml:lang="en-us"> 3) Generate binary files from
- certain types of text/unicode files. </xs:documentation>
- <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or
- Firmware Device images. </xs:documentation>
- <xs:documentation xml:lang="en-us"> 5) Implement external
- encoding/decoding/signature/GUIDed tools. </xs:documentation>
- <xs:documentation xml:lang="en-us"> 6) Distribution Package
- create/install/remove tools. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The list of miscellaneous files
- in this distribution. Any files that are not listed in either the
- Package, Module or Tools sections can be listed here. This section
- can be used to distribute specifications for packages and modules
- that are not &quot;industry standards&quot; such as a
- specification for a chipset or a video device. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The UserExtensions section is
- used to disseminate processing instructions that may be custom to
- the content provided by the distribution. This section contains
- information that is common to all aspects of this disribution.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
-
- </xs:complexType>
- </xs:element>
- <!-- End of the DistributionPackage Description -->
-
- <xs:element name="DistributionHeader">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section defines the content of
- the UEIF/PI compliant Distribution Package Header. This is the only
- required element of a UEFI/PI compliant distribution package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Name">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the User Interface Name
- for this Distribution Package. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Each Distribution Package is
- uniquely identified by it's GUID and Version number.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="BaseName" type="xs:NCName" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The reference name of
- the Distribution Package file. This single word name can
- be used by tools as a keyword or for directory and/or file
- creation. </xs:documentation>
- <xs:documentation xml:lang="en-us"> White space and special
- characters (dash and underscore characters may be used)
- are not permitted in this name. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This 128-bit GUID and the
- Version attribute uniquely identify this Distribution Package. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Backward compatible releases of
- a distribution package need only change the version number, while
- non-backward compatible changes require the GUID to change
- (resetting the version number to 1.0 is optional.)
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This value, along with
- the GUID, is used to uniquely identify this object. The
- higher the number, the more recent the content.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Vendor"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A string identifying who created
- this distribution package. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The date and time this
- distribution was created. The format is: YYYY-MM-DDThh:mm:ss, for
- example: 2001-01-31T13:30:00 (note the T character separator
- between the calendar date and the time. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Copyright"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The copyright for this file that
- is generated by the creator of the distribution. If a derivative
- work is generated from an existing distribution, then the existing
- copyright must be maintained, and additional copyrights may be
- appended to the end of this element. It may also be the primary
- copyright for all code provided in the Distribution Package.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="License" type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A license that describes any
- restrictions on the use of this distribution. If a derivative work
- is allowed by the original license and a derivative work is
- generated from an existing distribution, then the existing license
- must be maintained, and additional licenses may be appended to the
- end of this element. It may also be the primary license for all
- code provided in the distribution file. Alternatively, this may
- point to a filename that contains the License. The file (included
- in the content zip file) will be stored in the same location as
- the distribution package's .pkg file. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Abstract"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A one line description of the
- Distribution Package. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Description"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A complete description of the
- Distribution Package. This description may include the release
- name of the file, the version of the file, and a complete
- description of the file contents and/or features including a
- description of the updates since the previous file release.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The packaging utilities will use this
- MD5 sum value of the included ZIP file containing files and/or code. If
- this element is not present, then installation tools should assume that
- the content is correct, or that other methods may be needed to verify
- content. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal"
- default="1.1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>
- <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>
- <xs:documentation xml:lang="en-us"> #1 Updated to present date and new
- version which is important to reflect the present state of the
- matter</xs:documentation>
- <xs:documentation xml:lang="en-us"> #2 Added definition/enumeration of
- UNDEFIND type 2 is important since there is a large body of legacy code
- for which the GUID’s and other code/data objects were not decorated with
- their usage. This document will allow for importing today’s source
- artifacts and producing decorations using the ‘Undefined’ versus having
- an error</xs:documentation>
- <xs:documentation xml:lang="en-us">#3 Allow for inclusion of ARM and future
- architecture types</xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="ReadOnly" type="xs:boolean" default="false"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> If set to true, all content within
- this Distribution Package should NOT be modified. The default
- permits modification of all content. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="RePackage" type="xs:boolean" default="false"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> If set to true, then the content
- can be repackaged into another distribution package. The default
- prohibits repackaging the Distribution content. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
- </xs:element>
- <!-- End of the DistributionHeader element. -->
-
- <xs:element name="PackageSurfaceArea">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A package is a collection of related
- objects - Includes, Libraries and Modules. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Each package is uniquely identified by
- it's GUID and Version number. Backward compatible releases of a package
- need only change the version number, while non-backward compatible
- changes require the GUID to change (resetting the version number to 1.0
- is optional.) </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
-
- <xs:element minOccurs="1" maxOccurs="1" name="Header">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Name">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the User Interface
- Name for this package. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="BaseName" type="xs:NCName"
- use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is a single
- word BaseName of the package. This BaseName can be
- used by tools as a keyword and for directory/file
- creation. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This GUID and the Version
- attribute uniquely identify a given package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This value, along
- with the GUID, is used to uniquely identify this
- object. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Backward
- compatible changes must make sure this number is
- incremented from the most recent version.
- Non-backward compatible changes require a new GUID,
- and the version can be reset. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> If the package requires a
- different copyright than the distribution package, this
- element can list one or more copyright lines.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="License"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> If the package requires
- licenses that are different from the distribution package
- license, this element can contain one or more license text
- paragraphs (or license filenames.) </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A one line description of
- this package. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Description"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A complete description of
- a package. This description may include the release name of
- the package, the version of the package, and a complete
- description of the package contents and/or features
- including a description of the updates since the previous
- package’s release. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="PackagePath"
- type="xs:anyURI">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This element is the
- location (in the ZIP file) for the root directory of a
- package. </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea Header element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The term cloned is used here to
- indicate that this package as been copied and modified to a
- completely different package. An example might be for a new
- generation of chipsets that have few or no elements in common with
- the original. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This GUID and the Version
- attribute uniquely identify the Package that this Package
- was copied from. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This value, along
- with the GUID, is used to uniquely identify the
- package that this package was cloned from.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea ClonedFrom element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Library Classes are public
- interfaces that can be used by modules. One or more library
- instances can implement a library class, however only one library
- instance can be linked to an individual module. This provides the
- platform integrator with the flexibility of choosing one library
- instance's implementation over a different library instance.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded"
- name="LibraryClass">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
- type="xs:anyURI">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The header file
- provides definitions and function prototypes for a
- library class. Modules can be coded against these
- functions, using the definitions in this header,
- without concerning themselves about the libraries'
- implementation details. This is a PackagePath relative
- path and filename for the include file.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1"
- name="RecommendedInstance">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This GUID and
- the Version attribute uniquely identify the
- Recommended Library Instance.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This
- value, along with the GUID, is used to
- uniquely identify this object. If this
- value is not specified, then any version
- of the library instance is recommended.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="Keyword" type="xs:NCName" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The single word name
- of the Library Class that module developers will use to
- identify a library class dependency. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attributeGroup ref="SupportedArchMod" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea LibraryClassDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section is used to list
- header files for industry standards not under the auspices of
- UEFI.org. For example, headers that contain definitions and data
- structures for the USB specifications. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded"
- name="IndustryStandardHeader">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
- type="xs:anyURI">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The package relative
- path and filename (in the content zip file) of the
- industry standard include file. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea IndustryStdIncludes element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> All top level header files that
- are included by a package that are not listed above. They cannot
- be:</xs:documentation>
- <xs:documentation xml:lang="en-us"> 1) Local to a module (module
- specific.) </xs:documentation>
- <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>
- <xs:documentation xml:lang="en-us"> 3) A library class header.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded"
- name="PackageHeader">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the Package
- relative path and filename location within the content
- ZIP file. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attributeGroup ref="SupportedArchMod" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea PackageIncluces element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="Modules">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="ModuleSurfaceArea" minOccurs="1"
- maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section lists the
- Module Surface Area for all modules provided with this
- package. </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea Modules element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section defines the mapping
- of GUID C names to GUID values as a Registry Format GUID. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Modules that use these GUIDs
- must specify their dependency on this package. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Individual GUID
- Declarations </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName"
- type="xs:NCName" />
- <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
- type="RegistryFormatGuid" />
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="UiName" type="xs:normalizedString" use="optional" />
- <xs:attribute name="GuidTypes" type="GuidListType"
- use="optional" />
- <xs:attributeGroup ref="SupportedArchMod" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea GuidDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section defines the mapping
- of Protocol C names to GUID values as a Registry Format GUID. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Modules that use these Protocols
- must specify their dependency on this package. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Individual Protocol
- Declarations </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName"
- type="xs:NCName" />
- <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
- type="RegistryFormatGuid" />
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="UiName" type="xs:normalizedString" use="optional" />
- <xs:attributeGroup ref="SupportedArchMod" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea ProtocolDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section defines the mapping
- of Ppi C names to GUID values as a Registry Format GUID. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Modules that use these Ppis must
- specify their dependency on this package. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Individual PPI
- Declarations </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName"
- type="xs:NCName" />
- <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
- type="RegistryFormatGuid" />
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="UiName" type="xs:normalizedString" use="optional" />
- <xs:attributeGroup ref="SupportedArchMod" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea PpiDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section is used to declare
- platform configuration knobs that are defined by this package. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Modules that use these PCD
- values must specify their dependency on this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1"
- name="TokenSpaceGuidCname" type="xs:NCName">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Specifies the C name
- of the Token Space GUID of which this PCD Entry is a
- member. This C name should also be listed in the GUIDs
- section, (specified above,) where the C name is
- assigned to a GUID value. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Token">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Specifies the 32-bit
- token value for this PCD Entry. The Token number must
- be unique to the Token Space that declares the PCD. </xs:documentation>
- <xs:documentation xml:lang="en-us"> The minLength of 3
- is required to handle the "0x" prefix to the hex
- number. </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- <xs:maxLength value="10" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="CName"
- type="xs:NCName" />
- <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
- type="PcdDatumTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A string that
- contains the data type of this PCD Entry. PCD data
- types are restricted to the following set:UINT8,
- UINT16, UINT32, UINT64, VOID*, BOOLEAN.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage"
- type="PcdItemListType">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A string that
- contains one or more PCD Item types separated by
- spaces. The PCD Item types are restricted to
- FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"
- type="xs:normalizedString" />
- <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is a
- recommended maximum data size for VOID* data types,
- the actual value should be defined by the Platform
- Integrator. It is not required for the other data
- types. </xs:documentation>
- <xs:documentation xml:lang="en-us"> The minLength of 3
- is required to handle the "0x" prefix to the hex
- number. </xs:documentation>
-
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
-
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="PcdError">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Valid Error messages
- that may be implemented in a module for the PCD Entry.
- Only One Error Number per PcdError, (multiple
- ErrorMessage entries are permitted) and multiple
- PcdError elements are permitted. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:choice minOccurs="1" maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> One of the
- following types of comparisons, which must be
- able to evaluate to either true or false.
- </xs:documentation>
- </xs:annotation>
- <xs:element minOccurs="0" maxOccurs="1"
- name="ValidValueList">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The PCD
- Value must be space separated list of values.
- Values are restricted to the data type of this
- PCD. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="Lang" type="xs:language"
- use="optional" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1"
- name="ValidValueRange" type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The PCD must
- be within a specifed range of numeric values.
- Restricted to C style Relational, Equality and
- Logicial Operators and parenthesis are valid.
- Only the CName for this PCD is permitted in
- the ValidValueRange expression. All other
- values must be numeric.</xs:documentation>
- <xs:documentation xml:lang="en-us"> LValue (op
- RValue)+ </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1"
- name="Expression" type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A in-fix
- logical expression using C style logical
- operators. </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:choice>
- <xs:element minOccurs="1" maxOccurs="1"
- name="ErrorNumber">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A hexadecimal
- value for the error message as defined by
- specifications. </xs:documentation>
- <xs:documentation xml:lang="en-us"> The minLength
- of 3 is required to handle the "0x" prefix to
- the hex number. </xs:documentation>
-
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded"
- name="ErrorMessage">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This string
- should be defined by specifications. There are
- pre-defined error number ranges in the UEFI/PI
- specificaiton. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language"
- default="en-us" use="optional" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attributeGroup ref="SupportedArchMod" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea PcdDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section is used to describe
- any PCD interdependencies or relationships. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This entry must used
- TokenSpaceGuidCName.PcdCname for every named PCD. Restricted
- to Relational, Equality and Logical Operators (NOT, AND, OR,
- GT, GE, EQ, LE, LT and XOR) and parenthesis are valid. Only
- the TokenSpaceGuidCName.PcdCname us permitted to name PCDs
- in the expression. All other values must be numeric. </xs:documentation>
- <xs:documentation xml:lang="en-us"> LValue (op RValue)+
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="MiscellaneousFiles">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section contains files that
- are not part of the code distributed with this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Only required if different
- from the Package Copyright. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="License"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Only required if different
- from the Package License. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A one line description of
- this section's content. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A complete description of
- the files in this section. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the PackagePath
- relative path and filename location within the ZIP file.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="Executable" type="xs:boolean"
- default="false" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> If true, used by
- installation tools to ensure that a file that must
- be executable has the correct properties to permit
- execution. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
-
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea Misc element. -->
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section is used for any
- processing instructions that may be custom to the content provided
- by this package that are common to this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:sequence>
- <xs:any processContents="lax" minOccurs="0" maxOccurs="1" />
- </xs:sequence>
- <xs:attribute name="UserId" type="xs:NCName" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is a single word
- identifier for grouping similar content that does not fit into
- previously defined sections or other sections of the
- Distribution. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="Identifier" type="xs:string" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This can be used to
- differentiate multiple sections with a grouping. </xs:documentation>
- <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
- Identifier might indicate specific steps and tools required
- before processing module content, while a different
- UserExtensions section with a POST_PROCESS Identifier might
- describe steps that need to be executed after operations on
- the modules in this package. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:anyAttribute processContents="lax" />
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea UserExtensions element. -->
-
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of the PackageSurfaceArea element. -->
-
- <xs:element name="ModuleSurfaceArea">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Each module is uniquely identified by
- it's GUID and Version number. Backward compatible releases of a module
- need only change the version number, while non-backward compatible
- changes require the GUID to change (resetting the version number to 1.0
- is optional.) </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
-
- <xs:element minOccurs="1" maxOccurs="1" name="Header">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Name">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the User Interface
- Name for this Module. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="BaseName" type="xs:NCName"
- use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is a single
- word BaseName that will be used to create a module
- meta-data file. </xs:documentation>
- <xs:documentation xml:lang="en-us"> This name should
- also be used to create output file names and
- directories. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This GUID and the Version
- attribute uniquely identify a given Module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This value, along
- with the GUID, is used to uniquely identify this
- object. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Backward
- compatible changes must make sure this number is
- incremented from the most recent version.
- Non-backward compatible changes require a new GUID,
- and the version can be reset. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is only required if
- the Copyright is different from either the Package or
- Distribution copyright. Multiple copyright lines are
- permitted within this section. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="License"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is only required if
- the license is different from either the Package or
- Distribution license. Multiple licenses are permitted
- within this section. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A brief text description
- of the module. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Description"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A complete description of
- the module contents and/or features including a description
- of the updates since the previous module release.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Module Surface Area Header Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> List general information about a
- module, including the Supported Architectures, this module's type,
- specifications the module is coded against, and other
- informational content. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="ModuleType"
- type="ModuleTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> One of the Enumerated
- module types that limit the use of a module.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Path"
- type="xs:anyURI">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> For stand-alone modules
- that are NOT part of any package, this is the path to the
- root of the module as listed in the ZIP file. For modules
- included in a package, this is the location, relative to the
- root of the package (PackagePath) this module belongs to.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This element is only
- required for the PEIM that produces the PCD PPI or the DXE
- Driver that produces the PCD Protocol. </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PEI_PCD_DRIVER" />
- <xs:enumeration value="DXE_PCD_DRIVER" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="1"
- name="UefiSpecificationVersion" type="xs:decimal" />
-
- <xs:element minOccurs="0" maxOccurs="1"
- name="PiSpecificationVersion" type="xs:decimal" />
-
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="Specification">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is a list of other
- specifications that this module is written against. These
- entries can be used in #define statements (depending on the
- build system implementation, they may be autogenerated.)
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:NCName">
- <xs:attribute name="Version" type="xs:decimal"
- use="required" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Different firmware
- execution paths may be taken based on a given state of the
- hardware, firmware, or through feature settings. A BootMode
- may be declared (PRODUCES) or discovered (CONSUMES) based on
- these states and feature settings. The supported boot modes
- map to the PI specification Boot Modes. The boot modes
- listed with Recovery are to indicate that the BootMode is
- valid during a recovery boot. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence minOccurs="0">
- <xs:element minOccurs="1" maxOccurs="1"
- name="SupportedBootModes">
- <xs:simpleType>
- <xs:list>
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="FULL" />
- <xs:enumeration value="MINIMAL" />
- <xs:enumeration value="NO_CHANGE" />
- <xs:enumeration value="DIAGNOSTICS" />
- <xs:enumeration value="DEFAULT" />
- <xs:enumeration value="S2_RESUME" />
- <xs:enumeration value="S3_RESUME" />
- <xs:enumeration value="S4_RESUME" />
- <xs:enumeration value="S5_RESUME" />
- <xs:enumeration value="FLASH_UPDATE" />
- <xs:enumeration value="RECOVERY_FULL" />
- <xs:enumeration value="RECOVERY_MINIMAL" />
- <xs:enumeration value="RECOVERY_NO_CHANGE" />
- <xs:enumeration value="RECOVERY_DIAGNOSTICS" />
- <xs:enumeration value="RECOVERY_DEFAULT" />
- <xs:enumeration value="RECOVERY_S2_RESUME" />
- <xs:enumeration value="RECOVERY_S3_RESUME" />
- <xs:enumeration value="RECOVERY_S4_RESUME" />
- <xs:enumeration value="RECOVERY_S5_RESUME" />
- <xs:enumeration value="RECOVERY_FLASH_UPDATE" />
- <xs:enumeration value="UNDEFINED" />
- </xs:restriction>
- </xs:simpleType>
- </xs:list>
- </xs:simpleType>
- </xs:element>
-
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module
- always supports the given boot modes.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module may
- support a given mode on some execution paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module will
- change the boot mode. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIME_PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module will
- change the boot mode on some exection paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The package
- creator does not know how the boot mode is used.
- </xs:documentation>
- <xs:/annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional" />
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Event"
- nillable="true">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The functions that make up
- the Event, Timer, and Task Priority Services are used during
- preboot to create, close, signal, and wait for events; to
- set timers; and to raise and restore task priority levels as
- defined in the UEFI specification. GUIDed events should be
- listed in the Guids section. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module will
- register a notification function and calls the
- function when it is signaled. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module will
- register a notification function and calls the
- function when it is signaled on some execution
- paths. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module will
- signal all events in an event group.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module will
- signal all events in an event group under some
- execution paths. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The package
- creator does not know how an event is used.
- </xs:documentation>
- <xs:/annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="EventType" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER" />
- <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER" />
- <xs:enumeration value="UNDEFINED"/>
- </xs:restriction>
- </xs:simpleType>
-
-
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional" />
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB"
- nillable="false">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is a list of
- non-GUIDed Hand Off Blocks (HOBs) produced or consumed by
- this module. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="HobType" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PHIT" />
- <xs:enumeration value="MEMORY_ALLOCATION" />
- <xs:enumeration value="RESOURCE_DESCRIPTOR" />
- <xs:enumeration value="FIRMWARE_VOLUME" />
- <xs:enumeration value="LOAD_PEIM" />
- <xs:enumeratino value="UNDEFINED" />
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A HOB must be
- present in the system. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> If present, the
- HOB will be used. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The HOB is
- always produced by the module. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The HOB may be
- produced by the module under some execution paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The package
- creator knows that a HOB is used, but does not
- know how it is used.
- </xs:documentation>
- <xs:/annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional" />
- </xs:complexType>
- </xs:element>
-
- </xs:sequence>
- <xs:attributeGroup ref="SupportedArchMod" />
- </xs:complexType>
- </xs:element>
- <!-- End of ModuleProperties Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section may be included for
- Modules that are copied from a different module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This GUID and the Version
- attribute uniquely identify the Module that this Module was
- copied from. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This value, along
- with the GUID, is used to uniquely identify this
- object. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of ClonedFrom Section. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A list of the different Library
- Classes consumed by a driver, core and/or application module, or
- produced by a Library module. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded"
- name="LibraryClass">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Keyword"
- type="xs:NCName">
- <xs:annotation>
- <xs:documentation xml:lang="en-us "> Used by tools to
- identify different instances of libraries that provide
- the library class. This keyword identifies the library
- class this module needs to be linked against.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1"
- name="RecommendedInstance">
- <xs:complexType>
- <xs:all>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This GUID and
- the Version attribute uniquely identify the
- recommended Library Instance for this module .
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This
- value, along with the GUID, is used to
- uniquely identify this object.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:all>
- </xs:complexType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Library instances
- can provide code for a library class, or may require
- other library instances themselves. Since different
- execution paths in a library (or module) may need
- different library classes based on some setting,
- library classes may not alway be required.
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PRODUCES" />
- <xs:enumeration value="CONSUMES" />
- <xs:enumeration value="SOMETIMES_CONSUMES" />
- <xs:enumeration value="UNDEFINED" />
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
-
- <xs:attributeGroup ref="SupportedArchMod" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A FeatureFlag
- attribute must evaluate to either true or false - it may
- be a fixed value of true or false, a C name or an in-fix
- expression. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of LibraryClassDefinitions Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the module
- relative (ModuleProperties.Path) path and filename location
- within the ZIP file. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="Family" type="FamilyTypes"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The Family
- attribute is used to restrict usage to a given
- family of compilers, such as GCC or MSFT. Since not
- all code processing tools use the same syntax,
- especially for assembly, this field can be used to
- identify different syntax. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag"
- type="xs:normalizedString" use="optional" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of SourceFiles Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded"
- name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the module
- relative (ModuleProperties.Path) path and filename
- location within the ZIP file. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="FileType" use="optional">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Binary
- file distribution is limited to UEFI/PI
- FFS leaf section file types.
- </xs:documentation>
- </xs:annotation>
- <xs:enumeration value="GUID" />
- <xs:enumeration value="FREEFORM" />
- <xs:enumeration value="UEFI_IMAGE" />
- <xs:enumeration value="PE32">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A
- UEFI/PI FFS Leaf section file type, not
- a raw PE32 file. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PIC" />
- <xs:enumeration value="PEI_DEPEX" />
- <xs:enumeration value="DXE_DEPEX" />
- <xs:enumeration value="TE" />
- <xs:enumeration value="VER" />
- <xs:enumeration value="UI" />
- <xs:enumeration value="BIN" />
- <xs:enumeration value="FV" />
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag"
- type="xs:normalizedString" use="optional" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="AsBuilt">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section
- contains information about how the module was coded,
- such as Compiler Tools, Flags, PCDs (only PatchPcd
- and/or PcdEx) and Library Class Instances used to
- build the binary. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
-
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="PatchPcdValue">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The element is
- the Patchable PCD Value that was used during the
- build. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1"
- name="TokenSpaceGuidValue"
- type="RegistryFormatGuid" />
- <xs:element minOccurs="1" maxOccurs="1"
- name="PcdCName" type="xs:NCName" />
- <xs:element minOccurs="1" maxOccurs="1"
- name="Token">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The
- minLength of 3 is required to handle the
- "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- <xs:maxLength value="10" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1"
- name="DatumType" type="PcdDatumTypes" />
- <xs:element minOccurs="0" maxOccurs="1"
- name="MaxDatumSize">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This
- field is required if the Pcd Datum Type is
- VOID* </xs:documentation>
- <xs:documentation xml:lang="en-us"> The
- minLength of 3 is required to handle the
- "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1"
- name="Value" type="xs:normalizedString" />
- <xs:element minOccurs="1" maxOccurs="1"
- name="Offset">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The
- minLength of 3 is required to handle the
- "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="PcdError">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Error
- information implemented by the module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1"
- name="ErrorNumber">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The
- minLength of 3 is required to handle the
- "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="0"
- maxOccurs="unbounded"
- name="ErrorMessage">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang"
- type="xs:language" default="en-us"
- use="optional" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="PcdExValue">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The element is
- the DynamicEx PCD Value that was used during the
- build. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1"
- name="TokenSpaceGuidValue"
- type="RegistryFormatGuid" />
- <xs:element minOccurs="1" maxOccurs="1"
- name="Token">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The
- minLength of 3 is required to handle the
- "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- <xs:maxLength value="10" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1"
- name="DatumType" type="PcdDatumTypes" />
- <xs:element minOccurs="0" maxOccurs="1"
- name="MaxDatumSize">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This
- field is required if the Pcd Datum Type is
- VOID* </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1"
- name="Value" type="xs:normalizedString" />
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="PcdError">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Error
- information implemented by the module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1"
- name="ErrorNumber">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The
- minLength of 3 is required to handle the
- "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="0"
- maxOccurs="unbounded"
- name="ErrorMessage">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang"
- type="xs:language" default="en-us"
- use="optional" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="1"
- name="LibraryInstances">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the
- actual library instance that was used to link
- against the module. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded"
- name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This
- GUID and the Version attribute uniquely
- identify the actual Library Instance
- linked in this module. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version"
- type="xs:decimal" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This
- value, along with the GUID, is used to
- uniquely identify this object.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="BuildFlags">
- <xs:complexType mixed="true">
- <xs:simpleContent>
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Any
- description of OS, Tool, and flags for the
- individual tool can go in this section.
- </xs:documentation>
- </xs:annotation>
- <xs:extension base="xs:string">
- <xs:anyAttribute processContents="lax" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of AsBuilt -->
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of BinaryFiles Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
- <xs:complexType>
- <xs:all>
- <xs:element minOccurs="0" maxOccurs="1" name="Description"
- type="xs:string" />
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This GUID and the
- Version attribute uniquely identify Package that this
- Module depends on. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This value,
- along with the GUID, is used to uniquely
- identify this object. If the version attribute
- is not specified, the most recent version of
- the package can be used. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:all>
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageDependencies -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="Guids">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName"
- type="xs:NCName" />
- <xs:element minOccurs="0" maxOccurs="1" name="VariableName"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Only valid for
- Variable GUID types. </xs:documentation>
- <xs:documentation> This can be either a Hex Array or
- Unicode Data. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">The module does
- not install the GUID, and the GUID must be present
- for the module to execute. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module does
- not install the GUID, however, the GUID will be
- used if it is present. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The module
- always installs the GUID. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The Module will
- install the GUID under certain execution paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The package
- creator knows that a GUID is used, but does not
- know how it is used. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="GuidType" type="GuidListType"
- use="required" />
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Guids Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="Protocols">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A listing of protocols required
- or produced by this module. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol"
- nillable="true">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName"
- type="xs:NCName" />
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PRODUCES" />
- <xs:enumeration value="SOMETIMES_PRODUCES" />
- <xs:enumeration value="CONSUMES" />
- <xs:enumeration value="SOMETIMES_CONSUMES" />
- <xs:enumeration value="TO_START" />
- <xs:enumeration value="BY_START" />
- <xs:enumeration value="UNDEFINED" />
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="Notify" type="xs:boolean" use="optional" />
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Protocols Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PPIs">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A listing of PPIs required or
- produced by this module. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi"
- nillable="true">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName"
- type="xs:NCName" />
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PRODUCES" />
- <xs:enumeration value="SOMETIMES_PRODUCES" />
- <xs:enumeration value="CONSUMES" />
- <xs:enumeration value="SOMETIMES_CONSUMES" />
- <xs:enumeration value="UNDEFINED" />
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="Notify" type="xs:boolean" use="optional" />
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PPIs Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="Externs">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> These elements specify
- additional information about the module. This area may be used by
- tools to generate code. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">
- <xs:complexType>
- <xs:sequence>
- <xs:choice minOccurs="1">
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1"
- name="EntryPoint" type="xs:NCName" />
- <xs:element minOccurs="0" maxOccurs="1"
- name="UnloadImage" type="xs:NCName" />
- </xs:sequence>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1"
- name="Constructor" type="xs:NCName" />
- <xs:element minOccurs="0" maxOccurs="1"
- name="Destructor" type="xs:NCName" />
- </xs:sequence>
- </xs:choice>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="1" />
- </xs:sequence>
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Externs Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section describes how a
- platform is coded with respect to the platform configuration
- knobs. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName"
- type="xs:NCName" />
- <xs:element minOccurs="1" maxOccurs="1"
- name="TokenSpaceGuidCName" type="xs:NCName" />
- <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"
- type="xs:normalizedString" />
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="PcdItemType" type="PcdItemTypes"
- use="required" />
- <xs:attribute name="PcdUsage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PRODUCES" />
- <xs:enumeration value="SOMETIMES_PRODUCES" />
- <xs:enumeration value="CONSUMES" />
- <xs:enumeration value="SOMETIMES_CONSUMES" />
- <xs:enumeration value="UNDEFINED" />
- </xs:restriction>
- </xs:simpleType>
-
-
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional" />
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PcdCoded Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PeiDepex">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the PEI dependency
- expression for a Dependency Section. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Expression" type="xs:string" minOccurs="1"
- maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> An in-fix expression, of C
- identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
- as well as parenthesis () in the in-fix notation. The
- operators are restricted to grammar defined in the PI
- specification. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="1" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PeiDepex Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="DxeDepex">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the DXE dependency
- expression for a Dependency Section. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Expression" type=" xs:string " minOccurs="1"
- maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> An in-fix expression, of C
- identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
- as well as parenthesis () in the in-fix notation. The
- operators are restricted to grammar defined in the PI
- specification. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="1" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of DxeDepex Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="SmmDepex">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the SMM dependency
- expression for a Dependency Section. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Expression" type=" xs:string " minOccurs="1"
- maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> An in-fix expression, of C
- identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
- as well as parenthesis () in the in-fix notation. The
- operators are restricted to grammar defined in the PI
- specification. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="1" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of SmmDepex Section -->
-
-
- <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section is used to provide
- comments and/or list auxiliary files, such as pdb or map files.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Description"
- type="xs:string" />
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the path and
- filename location within the ZIP file. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="Executable" type="xs:boolean"
- default="false" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> If true, used by
- installation tools to ensure that a file that must
- be executable has the correct properties to permit
- execution. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Module Surface Area Misc Section -->
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section is used for any
- processing instructions that may be custom to the content provided
- by the distribution that are common to module. </xs:documentation>
- <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>
- <xs:documentation xml:lang="en-us"> The content can be plain text as
- well as any user-defined, properly formatted XML structure.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:attribute name="UserId" type="xs:NCName" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is a single word
- identifier for grouping similar content. For example,
- ReferenceBuild might be used to identify non-PI compliant
- build steps, with two different UserExtensions sections, one
- with an Identifier of Prebuild, and another of PostBuild. Both
- UserExtensions sections would use the same UserId.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="Identifier" type="xs:string" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This can be any string used
- to differentiate or identify this section from other
- UserExtensions sections. </xs:documentation>
- <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
- Identifier might indicate specific steps and tools required
- before processing module content, while a different
- UserExtensions section with a POST_PROCESS Identifier might
- describe steps that need to be executed after operations on
- this module. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:anyAttribute processContents="lax" />
- </xs:complexType>
- </xs:element>
- <!-- End of Module Surface Area UserExtensions Section -->
-
- </xs:sequence>
- <xs:attribute name="BinaryModule" type="xs:boolean" default="false"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This attribute is used when the
- binaries are distributed for this module and no code generation from
- source files is required. If set, then the BinaryFiles section
- should be used, and any files listed in the SourceFiles section do
- not have to be built. Additionally, the AsBuilt section for each
- binary file must be included. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
-
- </xs:element>
- <!-- End of the ModuleSurfaceArea element. -->
-
- <xs:element name="Tools">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Header">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Name"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">This is the User Interface
- Name for this Tools Distribution.</xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is only required if
- the Copyright is different from the Distribution Package
- copyright. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="License"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is only required if
- the License is different from the Distribution Package
- license. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is only required if
- the Abstract is different from the Distribution Package
- Abstract. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Description"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is only required if
- the Description is different from the Distribution Package
- Description. </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the path and filename
- location within the ZIP file. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="OS" type="SupportedOs" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is required for
- tools that execute; it should not be used for
- configuration files. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="Executable" type="xs:boolean"
- default="false" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> If true, used by
- installation tools to ensure that a file that must be
- executable has the correct properties to permit execution.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of the Tools element. -->
-
- <xs:element name="MiscellaneousFiles">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This section contains a list of files
- that are not part of the code distributed with modules, packages or
- tools. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Header">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Name"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The User interface name
- for this content. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is only required if
- the Copyright is different from the Distribution Package
- Copyright. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="License"
- type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is only required if
- the License is different from the Distribution Package
- License. </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
- type="xs:normalizedString" />
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"
- type="xs:string" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is the path and filename
- location within the ZIP file. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="Executable" type="xs:boolean"
- default="false" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> If true, used by
- installation tools to ensure that a file that must be
- executable has the correct properties to permit execution.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of the Misc element. -->
-
- <xs:element name="UserExtensions">
- <xs:complexType mixed="true">
- <xs:sequence>
- <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="UserId" type="xs:NCName" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This is a single word identifier
- for grouping similar content. For example, ReferenceBuild might be
- used to identify non-PI compliant build steps, with two different
- UserExtensions sections, one with an Identifier of Prebuild, and
- another of PostBuild. Both UserExtensions sections would use the
- same UserId. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="Identifier" type="xs:string" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This can be any string used to
- differentiate or identify this section from other UserExtensions
- sections. </xs:documentation>
- <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
- Identifier might indicate specific steps and tools required before
- processing distribution package content, while a different
- UserExtensions section with a POST_PROCESS Identifier might describe
- steps that need to be executed after operations on this content.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:anyAttribute processContents="lax" />
- </xs:complexType>
- </xs:element>
- <!-- The following elsements are common definitions used with the ref attribute for elements. -->
-
- <xs:element name="HelpText">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us"
- use="optional" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
-
- <!-- The following attribute groups are used in various elements above. -->
-
- <xs:attributeGroup name="SupportedArchMod">
- <xs:attribute name="SupArchList" type="ArchListType" use="optional" />
- <xs:attribute name="SupModList" type="ModuleListType" use="optional" />
- </xs:attributeGroup>
-
- <!-- The following data types are used to restrict content. -->
-
- <xs:simpleType name="ArchListType">
- <xs:list itemType="ArchTypes" />
- </xs:simpleType>
-
- <xs:simpleType name="ArchTypes">
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="IA32" />
- <xs:enumeration value="X64" />
- <xs:enumeration value="IPF" />
- <xs:enumeration value="EBC" />
- <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Any processor architecture not
- listed above. The Architecture must be a target architecture of one
- or more compiler tool chains. </xs:documentation>
- </xs:annotation>
- </xs:pattern>
- </xs:restriction>
- </xs:simpleType>
-
-
- <xs:simpleType name="FamilyTypes">
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="MSFT" />
- <xs:enumeration value="GCC" />
- <xs:pattern value="[A-Z][a-zA-Z0-9]*">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Any other family of build
- utilities for which compiler tools exist. </xs:documentation>
- </xs:annotation>
- </xs:pattern>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="GuidListType">
- <xs:list itemType="GuidTypes" />
- </xs:simpleType>
-
- <xs:simpleType name="GuidTypes">
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="Event" />
- <xs:enumeration value="File" />
- <xs:enumeration value="FV" />
- <xs:enumeration value="GUID" />
- <xs:enumeration value="Hii" />
- <xs:enumeration value="HOB" />
- <xs:enumeration value="SystemTable" />
- <xs:enumeration value="TokenSpaceGuid" />
- <xs:enumeration value="Variable" />
- <xs:enumeration value="UNDEFINED" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="HexNumber">
- <xs:restriction base="xs:hexBinary">
- <xs:pattern value="0x([a-fA-F0-9])+" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="Md5Sum">
- <xs:restriction base="xs:normalizedString">
- <xs:pattern value="[a-zA-Z0-9]{32}" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="ModuleListType">
- <xs:list itemType="ModuleTypes" />
- </xs:simpleType>
-
- <xs:simpleType name="ModuleTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The following module types are defined
- by specifications. </xs:documentation>
- <xs:documentation xml:lang="en-us"> Module types for components and
- libraries defined for this distribution mechanism. </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="BASE ">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Use of this module is not
- restricted. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_CORE">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only applicable to
- the DXE core. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only applicable to
- a DXE driver. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_RUNTIME_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only applicable to
- a DXE runtime driver. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_SAL_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only applicable to
- an IPF DXE runtime driver. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_SMM_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only applicable to
- a DXE SMM driver. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PEI_CORE">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only applicable to
- the PEI core. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PEIM">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only valid for PEI
- modules. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SEC">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only applicable to
- Security phase. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UEFI_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only valid for UEFI
- drivers. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UEFI_RUNTIME_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only valid for UEFI
- runtime drivers.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UEFI_APPLICATION">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only valid for UEFI
- applications. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SMM_CORE">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only applicable to the SMM
- core.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="USER_DEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This content is restricted to a specific
- implementation. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This enumeration is for use in a list that
- where the package creator does not know the what module types are supported
- by a module. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This pattern has been added for use in a
- module lists - for future expansion. </xs:documentation>
- </xs:annotation>
- </xs:pattern>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="PcdDatumTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The following data types are defined
- by the PCD specification (or PCD section of the UEFI/PI specifications.)
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:normalizedString">
- <xs:enumeration value="UINT8" />
- <xs:enumeration value="UINT16" />
- <xs:enumeration value="UINT32" />
- <xs:enumeration value="UINT64" />
- <xs:enumeration value="BOOLEAN" />
- <xs:enumeration value="VOID*" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="PcdItemListType">
- <xs:list itemType="PcdItemTypes" />
- </xs:simpleType>
-
- <xs:simpleType name="PcdItemTypes">
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="FeaturePcd">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The Feature PCD is a binary,
- evaluating to either true or false. This is used during build to
- include/exclude content. It can also be used during execution to
- force execution paths within drivers, or to enable/disable features
- within a driver for a given platform. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="FixedPcd">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The Fixed PCD is a #define value
- that is set at build time. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PatchPcd">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The Patch PCD is a #define that is
- set at build time, and that can be modified within a binary file.
- Additional information, such as the offset location of the value,
- along with it's length may need to be provided.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="Pcd">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This PCD type has an overloaded
- definition. Prior to build, the platform integrator may choose to
- implement a PCD as Fixed, Patchable or a Dynamic PCD. If the
- platform integrator choose to use the PCD as dynamic, then a PCD
- driver is required in the platform (PEI/DXE/both) to track the PCD
- in some sort of 'database' of these items. For Dynamic PCDs, the
- PcdGet* must pass in the token space guid and the token number to
- retrieve data (PcdSet* also needs these values.) </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PcdEx">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The PCD can only be used as
- Dynamic, and the platform firmware must contain a driver to maintain
- a 'database' of these items. For Dynamic PCDs, the PcdGet* must pass
- in the token space guid and the token number to retrieve data
- (PcdSet* also needs these values.) </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
-
-
-
- <xs:simpleType name="RegistryFormatGuid">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> A GUID must contain five different
- Hexadecimal character sets that are separated by a dash (-) character.
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:string">
- <xs:pattern
- value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"
- />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="SupportedOs">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The EDK II build system supports
- workstations running one of the following supported operating systems.
- This is the OS for the developer's workstation, not the target platform.
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Win32">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and
- Windows Vista. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="Win64">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and
- Windows Vista. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="Linux32" />
- <xs:enumeration value="Linux64" />
- <xs:enumeration value="OS/X32" />
- <xs:enumeration value="OS/X64" />
- <xs:enumeration value="GenericWin">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Typically, this is used for
- Windows Batch files. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="GenericNix">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Typically use for shell scripts -
- valid for any Linux and Mac OS/X. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*" />
- </xs:restriction>
- </xs:simpleType>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
+ targetNamespace="http://www.uefi.org/2011/1.1" xmlns="http://www.uefi.org/2011/1.1">
+ <xs:element name="DistributionPackage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI Distribution Package
+ description (PKG) file. It describes the content of:</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and
+ headers.</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 2) Modules in either source or binary format. (Note
+ that Binary format is for FFS leaf section file types only, complete FFS files
+ cannot be distributed using this distribution format.) </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools used to modify
+ the binary images to create UEFI/PI compliant images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to distribute other
+ miscellaneous content that is not specific to UEFI/PI images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The Package Surface Area describes the content of
+ packages, while the Module Surface Area provides information relevant to source
+ and/or binary distributions. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This header contains (legal) information
+ usually required for distributing both binary and/or source code.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The list of packages in this
+ distribution. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Packages are groups of files and/or
+ modules that are similar in nature.</xs:documentation>
+ <xs:documentation xml:lang="en-us"> Packages are uniquely identified by a
+ package GUID and a package version. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> A package can declare public mappings of
+ C names to GUID values. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> A package can provide header files for
+ library classes and/or other industry standard definitions. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> A package can also declare public
+ mappings of platform configuration database (PCD) &quot;knobs&quot; to
+ control features and operation of modules within a platform. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Finally, a package lists the library
+ instances and/or modules that are provided in a distribution package.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The listing of UEFI/PI compliant modules
+ in this distribution that are NOT part of a Package. Every module that
+ is provided as part of a package needs to be described in a
+ PackageSurfaceArea.Modules section. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The ModuleSurfaceArea section describes
+ how each module in a distribution is coded, or, in the case of a binary
+ module distribution, how it was built. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and modules
+ are uniquely identified by the Module's GUID and version number. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> This section will typically be used for
+ modules that don't require any additional files that would be included
+ in a package. For example, the Enhanced FAT driver binary does not need
+ to have a package description, as no additional files are provided.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is for distributing vendor
+ specific executable tools, tool source code and/or configuration files.
+ These tools are primarily for manipulating code and/or binary images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Tools in this section
+ can:</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files to create
+ source code files and build scripts. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to
+ UEFI/PI specifications. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 3) Generate binary files from certain
+ types of text/unicode files. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware
+ Device images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 5) Implement external
+ encoding/decoding/signature/GUIDed tools. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 6) Distribution Package
+ create/install/remove tools. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The list of miscellaneous files in this
+ distribution. Any files that are not listed in either the Package,
+ Module or Tools sections can be listed here. This section can be used to
+ distribute specifications for packages and modules that are not
+ &quot;industry standards&quot; such as a specification for a chipset or
+ a video device. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The UserExtensions section is used to
+ disseminate processing instructions that may be custom to the content
+ provided by the distribution. This section contains information that is
+ common to all aspects of this disribution. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the DistributionPackage Description -->
+
+ <xs:element name="DistributionHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the content of the UEIF/PI
+ compliant Distribution Package Header. This is the only required element of a
+ UEFI/PI compliant distribution package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the User Interface Name for this
+ Distribution Package. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Each Distribution Package is uniquely
+ identified by it's GUID and Version number. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The reference name of
+ the Distribution Package file. This single word name can
+ be used by tools as a keyword or for directory and/or
+ file creation. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> White space and special
+ characters (dash and underscore characters may be used)
+ are not permitted in this name. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This 128-bit GUID and the Version
+ attribute uniquely identify this Distribution Package. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Backward compatible releases of a
+ distribution package need only change the version number, while
+ non-backward compatible changes require the GUID to change (resetting
+ the version number to 1.0 is optional.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along with
+ the GUID, is used to uniquely identify this object. The
+ higher the number, the more recent the content.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A string identifying who created this
+ distribution package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The date and time this distribution was
+ created. The format is: YYYY-MM-DDThh:mm:ss, for example:
+ 2001-01-31T13:30:00 (note the T character separator between the calendar
+ date and the time. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Copyright" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The copyright for this file that is
+ generated by the creator of the distribution. If a derivative work is
+ generated from an existing distribution, then the existing copyright
+ must be maintained, and additional copyrights may be appended to the end
+ of this element. It may also be the primary copyright for all code
+ provided in the Distribution Package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A license that describes any
+ restrictions on the use of this distribution. If a derivative work is
+ allowed by the original license and a derivative work is generated from
+ an existing distribution, then the existing license must be maintained,
+ and additional licenses may be appended to the end of this element. It
+ may also be the primary license for all code provided in the
+ distribution file. Alternatively, this may point to a filename that
+ contains the License. The file (included in the content zip file) will
+ be stored in the same location as the distribution package's .pkg file.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Abstract" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A one line description of the
+ Distribution Package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Description" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of the
+ Distribution Package. This description may include the release name of
+ the file, the version of the file, and a complete description of the
+ file contents and/or features including a description of the updates
+ since the previous file release. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The packaging utilities will use this
+ MD5 sum value of the included ZIP file containing files and/or code. If
+ this element is not present, then installation tools should assume that
+ the content is correct, or that other methods may be needed to verify
+ content. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal"
+ default="1.1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>
+ <xs:documentation xml:lang="en-us"> #1 Updated to present date and new
+ version which is important to reflect the present state of the
+ matter</xs:documentation>
+ <xs:documentation xml:lang="en-us"> #2 Added definition/enumeration of
+ UNDEFIND type 2 is important since there is a large body of legacy code
+ for which the GUID’s and other code/data objects were not decorated with
+ their usage. This document will allow for importing today’s source
+ artifacts and producing decorations using the ‘Undefined’ versus having
+ an error</xs:documentation>
+ <xs:documentation xml:lang="en-us">#3 Allow for inclusion of ARM and future
+ architecture types</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If set to true, all content within this
+ Distribution Package should NOT be modified. The default permits
+ modification of all content. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If set to true, then the content can be
+ repackaged into another distribution package. The default prohibits
+ repackaging the Distribution content. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the DistributionHeader element. -->
+
+ <xs:element name="PackageSurfaceArea">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A package is a collection of related objects -
+ Includes, Libraries and Modules. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Each package is uniquely identified by it's GUID and
+ Version number. Backward compatible releases of a package need only change the
+ version number, while non-backward compatible changes require the GUID to change
+ (resetting the version number to 1.0 is optional.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element minOccurs="1" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the User Interface
+ Name for this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NMTOKEN"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a
+ single word BaseName of the package. This BaseName
+ can be used by tools as a keyword and for
+ directory/file creation. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version
+ attribute uniquely identify a given package.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value,
+ along with the GUID, is used to uniquely identify
+ this object. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Backward
+ compatible changes must make sure this number is
+ incremented from the most recent version.
+ Non-backward compatible changes require a new
+ GUID, and the version can be reset.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If the package requires a
+ different copyright than the distribution package, this
+ element can list one or more copyright lines.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If the package requires
+ licenses that are different from the distribution package
+ license, this element can contain one or more license text
+ paragraphs (or license filenames.) </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A one line description of
+ this package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Description"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of a
+ package. This description may include the release name of
+ the package, the version of the package, and a complete
+ description of the package contents and/or features
+ including a description of the updates since the previous
+ package’s release. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackagePath"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This element is the location
+ (in the ZIP file) for the root directory of a package.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea Header element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The term cloned is used here to indicate
+ that this package as been copied and modified to a completely different
+ package. An example might be for a new generation of chipsets that have
+ few or no elements in common with the original. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version
+ attribute uniquely identify the Package that this Package
+ was copied from. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value,
+ along with the GUID, is used to uniquely identify
+ the package that this package was cloned from.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea ClonedFrom element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Library Classes are public interfaces
+ that can be used by modules. One or more library instances can implement
+ a library class, however only one library instance can be linked to an
+ individual module. This provides the platform integrator with the
+ flexibility of choosing one library instance's implementation over a
+ different library instance. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The header file
+ provides definitions and function prototypes for a
+ library class. Modules can be coded against these
+ functions, using the definitions in this header,
+ without concerning themselves about the libraries'
+ implementation details. This is a PackagePath
+ relative path and filename for the include file.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="RecommendedInstance">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and
+ the Version attribute uniquely identify the
+ Recommended Library Instance. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value,
+ along with the GUID, is used to uniquely identify
+ this object. If this value is not specified, then
+ any version of the library instance is
+ recommended. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Keyword" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The single word name
+ of the Library Class that module developers will use
+ to identify a library class dependency.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea LibraryClassDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to list header
+ files for industry standards not under the auspices of UEFI.org. For
+ example, headers that contain definitions and data structures for the
+ USB specifications. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded"
+ name="IndustryStandardHeader">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package
+ relative path and filename (in the content zip
+ file) of the industry standard include file.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea IndustryStdIncludes element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> All top level header files that are
+ included by a package that are not listed above. They cannot
+ be:</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 3) A library class header.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the
+ Package relative path and filename location within
+ the content ZIP file. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea PackageIncluces element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="Modules">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section lists the
+ Module Surface Area for all modules provided with this
+ package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea Modules element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the mapping of GUID
+ C names to GUID values as a Registry Format GUID. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these GUIDs must
+ specify their dependency on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Individual GUID Declarations
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
+ type="RegistryFormatGuid"/>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="UiName" type="xs:normalizedString"
+ use="optional"/>
+ <xs:attribute name="GuidTypes" type="GuidListType"
+ use="optional"/>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea GuidDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the mapping of
+ Protocol C names to GUID values as a Registry Format GUID. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these Protocols must
+ specify their dependency on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Individual Protocol
+ Declarations </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
+ type="RegistryFormatGuid"/>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="UiName" type="xs:normalizedString"
+ use="optional"/>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea ProtocolDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the mapping of Ppi
+ C names to GUID values as a Registry Format GUID. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these Ppis must specify
+ their dependency on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Individual PPI Declarations
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
+ type="RegistryFormatGuid"/>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="UiName" type="xs:normalizedString"
+ use="optional"/>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea PpiDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to declare platform
+ configuration knobs that are defined by this package. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these PCD values must
+ specify their dependency on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="TokenSpaceGuidCname" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Specifies the C
+ name of the Token Space GUID of which this PCD
+ Entry is a member. This C name should also be
+ listed in the GUIDs section, (specified above,)
+ where the C name is assigned to a GUID value.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Specifies the
+ 32-bit token value for this PCD Entry. The Token
+ number must be unique to the Token Space that
+ declares the PCD. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength of
+ 3 is required to handle the "0x" prefix to the hex
+ number. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
+ type="PcdDatumTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A string that
+ contains the data type of this PCD Entry. PCD data
+ types are restricted to the following set:UINT8,
+ UINT16, UINT32, UINT64, VOID*, BOOLEAN.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage"
+ type="PcdItemListType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A string that
+ contains one or more PCD Item types separated by
+ spaces. The PCD Item types are restricted to
+ FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"
+ type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a
+ recommended maximum data size for VOID* data
+ types, the actual value should be defined by the
+ Platform Integrator. It is not required for the
+ other data types. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength of
+ 3 is required to handle the "0x" prefix to the hex
+ number. </xs:documentation>
+
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="PcdError">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Valid Error
+ messages that may be implemented in a module for
+ the PCD Entry. Only One Error Number per PcdError,
+ (multiple ErrorMessage entries are permitted) and
+ multiple PcdError elements are permitted.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> One of the
+ following types of comparisons, which must be able
+ to evaluate to either true or false.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="ValidValueList">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The PCD Value
+ must be space separated list of values. Values are
+ restricted to the data type of this PCD.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Lang" type="xs:language"
+ use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="ValidValueRange" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The PCD must
+ be within a specifed range of numeric values.
+ Restricted to C style Relational, Equality and
+ Logicial Operators and parenthesis are valid. Only
+ the CName for this PCD is permitted in the
+ ValidValueRange expression. All other values must
+ be numeric.</xs:documentation>
+ <xs:documentation xml:lang="en-us"> LValue (op
+ RValue)+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="Expression" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A in-fix
+ logical expression using C style logical
+ operators. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:choice>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="ErrorNumber">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A hexadecimal
+ value for the error message as defined by
+ specifications. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength
+ of 3 is required to handle the "0x" prefix to the
+ hex number. </xs:documentation>
+
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded"
+ name="ErrorMessage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This string
+ should be defined by specifications. There are
+ pre-defined error number ranges in the UEFI/PI
+ specificaiton. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language"
+ default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea PcdDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to describe any PCD
+ interdependencies or relationships. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This entry must used
+ TokenSpaceGuidCName.PcdCname for every named PCD. Restricted
+ to Relational, Equality and Logical Operators (NOT, AND, OR,
+ GT, GE, EQ, LE, LT and XOR) and parenthesis are valid. Only
+ the TokenSpaceGuidCName.PcdCname us permitted to name PCDs
+ in the expression. All other values must be numeric. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> LValue (op RValue)+
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section contains files that are not
+ part of the code distributed with this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Only required if different
+ from the Package Copyright. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Only required if different
+ from the Package License. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A one line description of
+ this section's content. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of
+ the files in this section. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the PackagePath
+ relative path and filename location within the ZIP file.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Executable" type="xs:boolean"
+ default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If true, used
+ by installation tools to ensure that a file that
+ must be executable has the correct properties to
+ permit execution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea Misc element. -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used for any processing
+ instructions that may be custom to the content provided by this package
+ that are common to this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="UserId" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a single word identifier
+ for grouping similar content that does not fit into previously
+ defined sections or other sections of the Distribution.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="Identifier" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This can be used to
+ differentiate multiple sections with a grouping. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
+ Identifier might indicate specific steps and tools required
+ before processing module content, while a different
+ UserExtensions section with a POST_PROCESS Identifier might
+ describe steps that need to be executed after operations on the
+ modules in this package. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea UserExtensions element. -->
+
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the PackageSurfaceArea element. -->
+
+ <xs:element name="ModuleSurfaceArea">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Each module is uniquely identified by it's GUID and
+ Version number. Backward compatible releases of a module need only change the
+ version number, while non-backward compatible changes require the GUID to change
+ (resetting the version number to 1.0 is optional.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element minOccurs="1" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the User Interface
+ Name for this Module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NMTOKEN"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a
+ single word BaseName that will be used to create a
+ module meta-data file. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> This name
+ should also be used to create output file names
+ and directories. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version
+ attribute uniquely identify a given Module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value,
+ along with the GUID, is used to uniquely identify
+ this object. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Backward
+ compatible changes must make sure this number is
+ incremented from the most recent version.
+ Non-backward compatible changes require a new
+ GUID, and the version can be reset.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the
+ Copyright is different from either the Package or
+ Distribution copyright. Multiple copyright lines are
+ permitted within this section. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the
+ license is different from either the Package or Distribution
+ license. Multiple licenses are permitted within this
+ section. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A brief text description of
+ the module. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Description"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of
+ the module contents and/or features including a description
+ of the updates since the previous module release.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Module Surface Area Header Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> List general information about a module,
+ including the Supported Architectures, this module's type,
+ specifications the module is coded against, and other informational
+ content. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="ModuleType"
+ type="ModuleTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> One of the Enumerated module
+ types that limit the use of a module. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> For stand-alone modules that
+ are NOT part of any package, this is the path to the root of
+ the module as listed in the ZIP file. For modules included
+ in a package, this is the location, relative to the root of
+ the package (PackagePath) this module belongs to.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This element is only
+ required for the PEIM that produces the PCD PPI or the DXE
+ Driver that produces the PCD Protocol. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PEI_PCD_DRIVER"/>
+ <xs:enumeration value="DXE_PCD_DRIVER"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion"
+ type="xs:decimal"/>
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion"
+ type="xs:decimal"/>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a list of other
+ specifications that this module is written against. These
+ entries can be used in #define statements (depending on the
+ build system implementation, they may be autogenerated.)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NCName">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Different firmware execution
+ paths may be taken based on a given state of the hardware,
+ firmware, or through feature settings. A BootMode may be
+ declared (PRODUCES) or discovered (CONSUMES) based on these
+ states and feature settings. If the usage is UNDEFINE, it
+ implies that a Boot Mode is used, but the package creator
+ does not know how it is used. The supported boot modes map
+ to the PI specification Boot Modes. The boot modes listed
+ with Recovery are to indicate that the BootMode is valid
+ during a recovery boot. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="0">
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="SupportedBootModes">
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="FULL"/>
+ <xs:enumeration value="MINIMAL"/>
+ <xs:enumeration value="NO_CHANGE"/>
+ <xs:enumeration value="DIAGNOSTICS"/>
+ <xs:enumeration value="DEFAULT"/>
+ <xs:enumeration value="S2_RESUME"/>
+ <xs:enumeration value="S3_RESUME"/>
+ <xs:enumeration value="S4_RESUME"/>
+ <xs:enumeration value="S5_RESUME"/>
+ <xs:enumeration value="FLASH_UPDATE"/>
+ <xs:enumeration value="RECOVERY_FULL"/>
+ <xs:enumeration value="RECOVERY_MINIMAL"/>
+ <xs:enumeration value="RECOVERY_NO_CHANGE"/>
+ <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>
+ <xs:enumeration value="RECOVERY_DEFAULT"/>
+ <xs:enumeration value="RECOVERY_S2_RESUME"/>
+ <xs:enumeration value="RECOVERY_S3_RESUME"/>
+ <xs:enumeration value="RECOVERY_S4_RESUME"/>
+ <xs:enumeration value="RECOVERY_S5_RESUME"/>
+ <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:element>
+
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ always supports the given boot modes.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module may
+ support a given mode on some execution paths.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ will change the boot mode. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIME_PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ will change the boot mode on some exection paths.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package
+ creator does not know how the boot mode is used.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Event"
+ nillable="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The functions that make up
+ the Event, Timer, and Task Priority Services are used during
+ preboot to create, close, signal, and wait for events; to
+ set timers; and to raise and restore task priority levels as
+ defined in the UEFI specification. GUIDed events should be
+ listed in the Guids section. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ will register a notification function and calls
+ the function when it is signaled.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ will register a notification function and calls
+ the function when it is signaled on some execution
+ paths. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ will signal all events in an event group.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ will signal all events in an event group under
+ some execution paths. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package
+ creator does not know how an event is used.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="EventType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>
+ <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB"
+ nillable="false">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a list of non-GUIDed
+ Hand Off Blocks (HOBs) produced or consumed by this module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="HobType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PHIT"/>
+ <xs:enumeration value="MEMORY_ALLOCATION"/>
+ <xs:enumeration value="RESOURCE_DESCRIPTOR"/>
+ <xs:enumeration value="FIRMWARE_VOLUME"/>
+ <xs:enumeration value="LOAD_PEIM"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A HOB must be
+ present in the system. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If present,
+ the HOB will be used. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The HOB is
+ always produced by the module. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The HOB may be
+ produced by the module under some execution paths.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package
+ creator knows that a HOB is used, but does not
+ know how it is used. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:sequence>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of ModuleProperties Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section may be included for Modules
+ that are copied from a different module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version
+ attribute uniquely identify the Module that this Module was
+ copied from. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value,
+ along with the GUID, is used to uniquely identify
+ this object. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of ClonedFrom Section. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A list of the different Library Classes
+ consumed by a driver, core and/or application module, or produced by a
+ Library module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Keyword"
+ type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us "> Used by tools
+ to identify different instances of libraries that
+ provide the library class. This keyword identifies
+ the library class this module needs to be linked
+ against. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="RecommendedInstance">
+ <xs:complexType>
+ <xs:all>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and
+ the Version attribute uniquely identify the
+ recommended Library Instance for this module .
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value,
+ along with the GUID, is used to uniquely identify
+ this object. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Library
+ instances can provide code for a library class, or
+ may require other library instances themselves.
+ Since different execution paths in a library (or
+ module) may need different library classes based
+ on some setting, library classes may not alway be
+ required. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PRODUCES"/>
+ <xs:enumeration value="CONSUMES"/>
+ <xs:enumeration value="SOMETIMES_CONSUMES"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A FeatureFlag
+ attribute must evaluate to either true or false - it
+ may be a fixed value of true or false, a C name or
+ an in-fix expression. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of LibraryClassDefinitions Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the module relative
+ (ModuleProperties.Path) path and filename location within
+ the ZIP file. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Family" type="FamilyTypes"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The Family
+ attribute is used to restrict usage to a given
+ family of compilers, such as GCC or MSFT. Since
+ not all code processing tools use the same syntax,
+ especially for assembly, this field can be used to
+ identify different syntax. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag"
+ type="xs:normalizedString" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of SourceFiles Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded"
+ name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the
+ module relative (ModuleProperties.Path) path and
+ filename location within the ZIP file.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="FileType" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Binary file
+ distribution is limited to UEFI/PI FFS leaf
+ section file types. </xs:documentation>
+ </xs:annotation>
+ <xs:enumeration value="GUID"/>
+ <xs:enumeration value="FREEFORM"/>
+ <xs:enumeration value="UEFI_IMAGE"/>
+ <xs:enumeration value="PE32">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A UEFI/PI FFS
+ Leaf section file type, not a raw PE32 file.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PIC"/>
+ <xs:enumeration value="PEI_DEPEX"/>
+ <xs:enumeration value="DXE_DEPEX"/>
+ <xs:enumeration value="SMM_DEPEX"/>
+ <xs:enumeration value="COMPAT16"/>
+ <xs:enumeration value="DISPOSABLE"/>
+ <xs:enumeration value="TE"/>
+ <xs:enumeration value="VER"/>
+ <xs:enumeration value="UI"/>
+ <xs:enumeration value="BIN"/>
+ <xs:enumeration value="FV"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="SupArchList"
+ type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList"
+ type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag"
+ type="xs:normalizedString" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="AsBuilt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section
+ contains information about how the module was
+ coded, such as Compiler Tools, Flags, PCDs (only
+ PatchPcd and/or PcdEx) and Library Class Instances
+ used to build the binary. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="PatchPcdValue">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The element is
+ the Patchable PCD Value that was used during the
+ build. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="TokenSpaceGuidValue"
+ type="RegistryFormatGuid"/>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="PcdCName" type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="Token">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength
+ of 3 is required to handle the "0x" prefix to the
+ hex number. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="DatumType" type="PcdDatumTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="MaxDatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This field is
+ required if the Pcd Datum Type is VOID* </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength
+ of 3 is required to handle the "0x" prefix to the
+ hex number. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="Value" type="xs:normalizedString"/>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="Offset">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength
+ of 3 is required to handle the "0x" prefix to the
+ hex number. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="PcdError">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Error
+ information implemented by the module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="ErrorNumber">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength
+ of 3 is required to handle the "0x" prefix to the
+ hex number. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="ErrorMessage">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language"
+ default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="PcdExValue">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The element is
+ the DynamicEx PCD Value that was used during the
+ build. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="TokenSpaceGuidValue"
+ type="RegistryFormatGuid"/>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="Token">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength
+ of 3 is required to handle the "0x" prefix to the
+ hex number. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="DatumType" type="PcdDatumTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="MaxDatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This field is
+ required if the Pcd Datum Type is VOID*
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="Value" type="xs:normalizedString"/>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="PcdError">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Error
+ information implemented by the module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="ErrorNumber">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength
+ of 3 is required to handle the "0x" prefix to the
+ hex number. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="ErrorMessage">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language"
+ default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="LibraryInstances">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the
+ actual library instance that was used to link
+ against the module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded"
+ name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and
+ the Version attribute uniquely identify the actual
+ Library Instance linked in this module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value,
+ along with the GUID, is used to uniquely identify
+ this object. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="BuildFlags">
+ <xs:complexType mixed="true">
+ <xs:simpleContent>
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Any
+ description of OS, Tool, and flags for the
+ individual tool can go in this section.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:extension base="xs:string">
+ <xs:anyAttribute processContents="lax"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of AsBuilt -->
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of BinaryFiles Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="Description">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language"
+ default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and
+ the Version attribute uniquely identify Package
+ that this Module depends on. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value,
+ along with the GUID, is used to uniquely identify
+ this object. If the version attribute is not
+ specified, the most recent version of the package
+ can be used. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageDependencies -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="Guids">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="VariableName"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Only valid for
+ Variable GUID types. </xs:documentation>
+ <xs:documentation> This can be either a Hex Array or
+ C string in unicode format: L"string" Data.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">The module does
+ not install the GUID, and the GUID must be present
+ for the module to execute. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ does not install the GUID, however, the GUID will
+ be used if it is present. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ always installs the GUID. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The Module
+ will install the GUID under certain execution
+ paths. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package
+ creator knows that a GUID is used, but does not
+ know how it is used. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="GuidType" type="GuidListType" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Guids Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="Protocols">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A listing of protocols required or
+ produced by this module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol"
+ nillable="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName"/>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PRODUCES"/>
+ <xs:enumeration value="SOMETIMES_PRODUCES"/>
+ <xs:enumeration value="CONSUMES"/>
+ <xs:enumeration value="SOMETIMES_CONSUMES"/>
+ <xs:enumeration value="TO_START"/>
+ <xs:enumeration value="BY_START"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Protocols Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PPIs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A listing of PPIs required or produced
+ by this module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi"
+ nillable="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName"/>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PRODUCES"/>
+ <xs:enumeration value="SOMETIMES_PRODUCES"/>
+ <xs:enumeration value="CONSUMES"/>
+ <xs:enumeration value="SOMETIMES_CONSUMES"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PPIs Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="Externs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> These elements specify additional
+ information about the module. This area may be used by tools to generate
+ code. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="1">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="EntryPoint" type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="UnloadImage" type="xs:NCName"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="Constructor" type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="Destructor" type="xs:NCName"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Externs Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section describes how a platform is
+ coded with respect to the platform configuration knobs.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="TokenSpaceGuidCName" type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"
+ type="xs:normalizedString"/>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="PcdItemType" type="PcdItemTypes"
+ use="required"/>
+ <xs:attribute name="PcdUsage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PRODUCES"/>
+ <xs:enumeration value="SOMETIMES_PRODUCES"/>
+ <xs:enumeration value="CONSUMES"/>
+ <xs:enumeration value="SOMETIMES_CONSUMES"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PcdCoded Section -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the PEI dependency expression
+ for a Dependency Section. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Expression" type="xs:string" minOccurs="1"
+ maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> An in-fix expression, of C
+ identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
+ as well as parenthesis () in the in-fix notation. The
+ operators are restricted to grammar defined in the PI
+ specification. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PeiDepex Section -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the DXE dependency expression
+ for a Dependency Section. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Expression" type=" xs:string " minOccurs="1"
+ maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> An in-fix expression, of C
+ identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
+ as well as parenthesis () in the in-fix notation. The
+ operators are restricted to grammar defined in the PI
+ specification. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of DxeDepex Section -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the SMM dependency expression
+ for a Dependency Section. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Expression" type=" xs:string " minOccurs="1"
+ maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> An in-fix expression, of C
+ identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
+ as well as parenthesis () in the in-fix notation. The
+ operators are restricted to grammar defined in the PI
+ specification. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of SmmDepex Section -->
+
+
+ <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to provide comments
+ and/or list auxiliary files, such as pdb or map files.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language"
+ default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the path and
+ filename location within the ZIP file. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Executable" type="xs:boolean"
+ default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If true, used
+ by installation tools to ensure that a file that
+ must be executable has the correct properties to
+ permit execution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Module Surface Area Misc Section -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used for any processing
+ instructions that may be custom to the content provided by the
+ distribution that are common to module. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The content can be plain text as well as
+ any user-defined, properly formatted XML structure. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:attribute name="UserId" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a single word identifier
+ for grouping similar content. For example, ReferenceBuild might
+ be used to identify non-PI compliant build steps, with two
+ different UserExtensions sections, one with an Identifier of
+ Prebuild, and another of PostBuild. Both UserExtensions sections
+ would use the same UserId. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="Identifier" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This can be any string used to
+ differentiate or identify this section from other UserExtensions
+ sections. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
+ Identifier might indicate specific steps and tools required
+ before processing module content, while a different
+ UserExtensions section with a POST_PROCESS Identifier might
+ describe steps that need to be executed after operations on this
+ module. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Module Surface Area UserExtensions Section -->
+
+ </xs:sequence>
+ <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This attribute is used when the binaries are
+ distributed for this module and no code generation from source files is
+ required. If set, then the BinaryFiles section should be used, and any files
+ listed in the SourceFiles section do not have to be built. Additionally, the
+ AsBuilt section for each binary file must be included. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ </xs:element>
+ <!-- End of the ModuleSurfaceArea element. -->
+
+ <xs:element name="Tools">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">This is the User Interface
+ Name for this Tools Distribution.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the
+ Copyright is different from the Distribution Package
+ copyright. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the
+ License is different from the Distribution Package license.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the
+ Abstract is different from the Distribution Package
+ Abstract. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Description"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the
+ Description is different from the Distribution Package
+ Description. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the path and filename location
+ within the ZIP file. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="OS" type="SupportedOs" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is required for
+ tools that execute; it should not be used for
+ configuration files. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="Executable" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If true, used by
+ installation tools to ensure that a file that must be
+ executable has the correct properties to permit
+ execution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the Tools element. -->
+
+ <xs:element name="MiscellaneousFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section contains a list of files that are not
+ part of the code distributed with modules, packages or tools. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Name"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The User interface name for
+ this content. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the
+ Copyright is different from the Distribution Package
+ Copyright. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the
+ License is different from the Distribution Package License.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
+ type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language"
+ default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the path and filename location
+ within the ZIP file. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Executable" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If true, used by
+ installation tools to ensure that a file that must be
+ executable has the correct properties to permit
+ execution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the Misc element. -->
+
+ <xs:element name="UserExtensions">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="UserId" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a single word identifier for
+ grouping similar content. For example, ReferenceBuild might be used to
+ identify non-PI compliant build steps, with two different UserExtensions
+ sections, one with an Identifier of Prebuild, and another of PostBuild. Both
+ UserExtensions sections would use the same UserId. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="Identifier" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This can be any string used to differentiate
+ or identify this section from other UserExtensions sections. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might
+ indicate specific steps and tools required before processing distribution
+ package content, while a different UserExtensions section with a
+ POST_PROCESS Identifier might describe steps that need to be executed after
+ operations on this content. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- The following elsements are common definitions used with the ref attribute for elements. -->
+
+ <xs:element name="HelpText">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- The following attribute groups are used in various elements above. -->
+
+ <xs:attributeGroup name="SupportedArchMod">
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+
+ <!-- The following data types are used to restrict content. -->
+
+ <xs:simpleType name="ArchListType">
+ <xs:list itemType="ArchTypes"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="ArchTypes">
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="IA32"/>
+ <xs:enumeration value="X64"/>
+ <xs:enumeration value="IPF"/>
+ <xs:enumeration value="EBC"/>
+ <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Any processor architecture not listed above.
+ The Architecture must be a target architecture of one or more compiler tool
+ chains. </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ <xs:simpleType name="FamilyTypes">
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="MSFT"/>
+ <xs:enumeration value="GCC"/>
+ <xs:pattern value="[A-Z][a-zA-Z0-9]*">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Any other family of build utilities for
+ which compiler tools exist. </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="GuidListType">
+ <xs:list itemType="GuidTypes"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="GuidTypes">
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="Event"/>
+ <xs:enumeration value="File"/>
+ <xs:enumeration value="FV"/>
+ <xs:enumeration value="GUID"/>
+ <xs:enumeration value="Hii"/>
+ <xs:enumeration value="HOB"/>
+ <xs:enumeration value="SystemTable"/>
+ <xs:enumeration value="TokenSpaceGuid"/>
+ <xs:enumeration value="Variable"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="HexNumber">
+ <xs:restriction base="xs:hexBinary">
+ <xs:pattern value="0x([a-fA-F0-9])+"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="Md5Sum">
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="[a-zA-Z0-9]{32}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ModuleListType">
+ <xs:list itemType="ModuleTypes"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="ModuleTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The following module types are defined by
+ specifications. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Module types for components and libraries defined
+ for this distribution mechanism. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="BASE ">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Use of this module is not restricted.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_CORE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to the DXE
+ core. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE
+ driver. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_RUNTIME_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE
+ runtime driver. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_SAL_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to an IPF DXE
+ runtime driver. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_SMM_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE SMM
+ driver. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PEI_CORE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to the PEI
+ core. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PEIM">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SEC">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to Security
+ phase. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UEFI_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UEFI_RUNTIME_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only valid for UEFI runtime
+ drivers.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UEFI_APPLICATION">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only valid for UEFI
+ applications. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SMM_CORE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to the SMM
+ core.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="USER_DEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This content is restricted to a specific
+ implementation. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This enumeration is for use in a list that
+ where the package creator does not know the what module types are supported
+ by a module. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This pattern has been added for use in a
+ module lists - for future expansion. </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="PcdDatumTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The following data types are defined by the PCD
+ specification (or PCD section of the UEFI/PI specifications.) </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:enumeration value="UINT8"/>
+ <xs:enumeration value="UINT16"/>
+ <xs:enumeration value="UINT32"/>
+ <xs:enumeration value="UINT64"/>
+ <xs:enumeration value="BOOLEAN"/>
+ <xs:enumeration value="VOID*"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="PcdItemListType">
+ <xs:list itemType="PcdItemTypes"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="PcdItemTypes">
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="FeaturePcd">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The Feature PCD is a binary, evaluating to
+ either true or false. This is used during build to include/exclude content.
+ It can also be used during execution to force execution paths within
+ drivers, or to enable/disable features within a driver for a given platform.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FixedPcd">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The Fixed PCD is a #define value that is set
+ at build time. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PatchPcd">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The Patch PCD is a #define that is set at
+ build time, and that can be modified within a binary file. Additional
+ information, such as the offset location of the value, along with it's
+ length may need to be provided.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Pcd">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This PCD type has an overloaded definition.
+ Prior to build, the platform integrator may choose to implement a PCD as
+ Fixed, Patchable or a Dynamic PCD. If the platform integrator choose to use
+ the PCD as dynamic, then a PCD driver is required in the platform
+ (PEI/DXE/both) to track the PCD in some sort of 'database' of these items.
+ For Dynamic PCDs, the PcdGet* must pass in the token space guid and the
+ token number to retrieve data (PcdSet* also needs these values.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PcdEx">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The PCD can only be used as Dynamic, and the
+ platform firmware must contain a driver to maintain a 'database' of these
+ items. For Dynamic PCDs, the PcdGet* must pass in the token space guid and
+ the token number to retrieve data (PcdSet* also needs these values.)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+
+ <xs:simpleType name="RegistryFormatGuid">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A GUID must contain five different Hexadecimal
+ character sets that are separated by a dash (-) character. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern
+ value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"
+ />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="SupportedOs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The EDK II build system supports workstations
+ running one of the following supported operating systems. This is the OS for the
+ developer's workstation, not the target platform. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Win32">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows
+ Vista. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Win64">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows
+ Vista. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Linux32"/>
+ <xs:enumeration value="Linux64"/>
+ <xs:enumeration value="OS/X32"/>
+ <xs:enumeration value="OS/X64"/>
+ <xs:enumeration value="GenericWin">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Typically, this is used for Windows Batch
+ files. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="GenericNix">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Typically use for shell scripts - valid for
+ any Linux and Mac OS/X. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>
+ </xs:restriction>
+ </xs:simpleType>
</xs:schema>