summaryrefslogtreecommitdiffstats
path: root/BaseTools/Conf
diff options
context:
space:
mode:
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2009-07-17 09:10:31 +0000
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2009-07-17 09:10:31 +0000
commit30fdf1140b8d1ce93f3821d986fa165552023440 (patch)
treec45c336a8955b1d03ea56d6c915a0e68a43b4ee9 /BaseTools/Conf
parent577e30cdb473e4af8e65fd6f75236691d0c8dfb3 (diff)
downloadedk2-30fdf1140b8d1ce93f3821d986fa165552023440.tar.gz
edk2-30fdf1140b8d1ce93f3821d986fa165552023440.tar.bz2
edk2-30fdf1140b8d1ce93f3821d986fa165552023440.zip
Check In tool source code based on Build tool project revision r1655.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8964 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'BaseTools/Conf')
-rw-r--r--BaseTools/Conf/XMLSchema/DistributionPackage.xsd2818
-rw-r--r--BaseTools/Conf/XMLSchema/SurfaceArea.xsdconfig16
-rw-r--r--BaseTools/Conf/XMLSchema/WorkspaceContent.xsd409
3 files changed, 3243 insertions, 0 deletions
diff --git a/BaseTools/Conf/XMLSchema/DistributionPackage.xsd b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd
new file mode 100644
index 0000000000..23cce9555b
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd
@@ -0,0 +1,2818 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Filename: DistributionPackage.xsd
+
+Copyright (c) 2008, Intel Corp. All rights reserved.
+
+This program and the accompanying materials are licensed and made available
+under the terms and conditions of the BSD License which may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+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/2008/1.0"
+ xmlns="http://www.uefi.org/2008/1.0">
+ <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.0">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This version of this XML Schema
+ is 1.0 </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. </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. </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: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: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: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: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: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: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: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: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: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: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: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: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="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: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>
diff --git a/BaseTools/Conf/XMLSchema/SurfaceArea.xsdconfig b/BaseTools/Conf/XMLSchema/SurfaceArea.xsdconfig
new file mode 100644
index 0000000000..c2fdaf8293
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/SurfaceArea.xsdconfig
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2007, Intel Corp.
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which may be found at http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+-->
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
+ <xb:namespace uri="http://www.TianoCore.org/2007/Edk2.1">
+ <xb:package>org.tianocore</xb:package>
+ </xb:namespace>
+</xb:config>
+
diff --git a/BaseTools/Conf/XMLSchema/WorkspaceContent.xsd b/BaseTools/Conf/XMLSchema/WorkspaceContent.xsd
new file mode 100644
index 0000000000..8809792ac4
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/WorkspaceContent.xsd
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Filename: WorkspaceContent.xsd
+
+ Copyright (c) 2008, Intel Corp. All rights reserved.
+
+ This program and the accompanying materials are licensed and made available
+ under the terms and conditions of the BSD License which may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ 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://edk2.TianoCore.org/2008/1.0"
+ xmlns="http://edk2.TianoCore.org/2008/1.0">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">This document covers the
+ WorkspaceContent.xml file that tracks what has been installed into an EDK
+ II development WORKSPACE.</xs:documentation>
+ </xs:annotation>
+ <xs:element name="WorkspaceContent">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This file describes the distributions,
+ packages, stand-alone (non-package) modules and miscellaneous files that
+ have been installed in THIS WORKSPACE. Additionally, any tools that are
+ installed as part of a distribution are tracked (tools are not required
+ to be installed within a WORKSPACE.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="Header" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section tracks required
+ information about this WORKSPACE. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="DistributionPackage" minOccurs="1"
+ maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The list of UEFI/PI distribution
+ packages that have been installed in this WORKSPACE.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element 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"> This User Interface Name can be
+ entered during initialization of a WORKSPACE to permit a developer
+ to uniquely identify a WORKSPACE. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> This value can be used by report
+ generators. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="AbsolutePath"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> When the WORKSPACE is first
+ initialized, this is the absolute path to the WORKSPACE. If the
+ user moves or re-names the directory, the RmPkg tool will need to
+ verify the content of this WORKSPACE before removing any content.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="LastModifiedDate"
+ type="xs:dateTime">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The date and time of the last
+ Package Installation or Removal. 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="WorkspaceContentSpecification" default="1.0" type="xs:decimal"
+ />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+
+
+ <xs:element name="ModuleList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Module">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The User Interface Name of
+ the 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"> The BaseName is
+ used to create files and folders during a build, and
+ is used by packaging tools as a keyword to create
+ the INF file. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="GUID" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the GUID of the
+ module. Backward compatible versions of a module can use the
+ same GUID, however the version attribute must be changed
+ (incrementally.) Non-backward compatible versions of a
+ module must also provide a new GUID, while resetting the
+ version attribute is optional. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InstalledFolder" minOccurs="1" maxOccurs="1"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the WORKSPACE
+ relative path that the Module was installed in.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfFilename" minOccurs="1" maxOccurs="1"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is filename of the
+ INF file created in the InstalledFolder (listed above)
+ during installation. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="DistributionPackage">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The User Interface Name of the
+ distribution. </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 the actual
+ BaseName used during the installation. Since users may
+ change the Distribution Package's default BaseName (used
+ to create the PKG and MANIFEST files) this is the real
+ name used to create the files. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="GUID" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the GUID of the
+ distribution, backward compatible versions of a distribution can
+ use the same GUID, however the version attribute must be changed
+ (incrementally.) Non-backward compatible versions of a
+ distribution must also provide a new GUID, while resetting the
+ version attribute is optional. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="PkgFilename"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the filename of the XML
+ distribution package surface area (PKG) file that was stored in
+ the Conf/Pkgs folder of the WORKSPACE for this distribution
+ package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="ManifestFilename"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the filename of the
+ distribution package manifest (.manifest) file that was created
+ and stored in the Conf/Pkgs folder of the WORKSPACE for this
+ distribution package. The InstallPkg tool must create this file
+ using the extracted locations of the content zip file (or,
+ alternatively, the user can create the file by redirecting the
+ output of the zip -Tv Contents.zip.) </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="InstalledDate"
+ type="xs:dateTime" />
+ <xs:element name="DistributionProperties" minOccurs="0" maxOccurs="1"
+ nillable="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section tracks information
+ and content that is not associated with either packages or
+ modules, or is not required for building packages or modules.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <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.</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.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ModifiedToolsDef" type="xs:boolean"
+ default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">If set to true, then either
+ the distribution or one of its packages has a user extensions
+ section that modified the tools_def.txt file.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ProvidesTools" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is used to identify a
+ distribution that provides tools that may or may not be
+ installed in a WORKSPACE. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ProvidesMiscellaneousFiles" type="xs:boolean"
+ default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is used to identify a
+ distribution that provides miscellaneous files that must be
+ installed in a WORKSPACE. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="UnknownUserExtensions" type="xs:boolean"
+ default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is used to identify a
+ distribution that has a UserExtensions section at the
+ Distribution, Package or Module level that uses an Identifier
+ other than BuildOptions, ToolsDef or DistributionPackage.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageList" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section tracks individual
+ packages (collections of related items.) Each package listed in
+ this section must have a DEC file associated with it.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Package" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The User Interface
+ Name of the 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"> The BaseName
+ is used to create files and folders during a
+ build, and is used by packaging tools as a
+ keyword to create the DEC file.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="GUID" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the GUID of
+ the package, backward compatible versions of a package
+ can use the same GUID, however the version attribute
+ must be changed (incrementally.) Non-backward
+ compatible versions of a package must also provide a
+ new GUID, while resetting the version attribute is
+ optional. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InstalledFolder" type="xs:anyURI"
+ minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is used to
+ track the actual installation location, relative to
+ the WORKSPACE. During an installation, the user may be
+ presented with an option to relocate package content
+ from the ZIP portion of the archive into a different
+ location. </xs:documentation>
+ <xs:documentation> Any installation tools must modify
+ this value if the location is different from the
+ default location. </xs:documentation>
+ <xs:documentation> Any removal tools must check this
+ value to locate correctly, the items that will be
+ removed. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DecFilename" minOccurs="1" maxOccurs="1"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the filename
+ of the package declaration (DEC) filename created
+ during installation in the InstalledFolder listed
+ above. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="ModuleList" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used
+ to track the actual installation location, relative to
+ the WORKSPACE. Every module that is part of this
+ package must be listed here. During an installation,
+ the user may be presented with an option to relocate
+ module content from the ZIP portion of the archive
+ into a different location, the installation tools must
+ modify this value if the location is different from
+ the default location. Any removal tools must check
+ this value to locate correctly, the items that will be
+ removed. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The name of any INF
+ files that were created during the installation of a
+ distribution must also be listed in this section.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="ModuleList" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to record
+ distribution packages that contain modules that are not part of a
+ package. Modules that are part of packages are listed under the
+ Package element of the PackageList section. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Module only distribution will
+ typically be for binary only modules, like the enhanced FAT
+ driver. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="GUID">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="required" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Simple Types that further restrict allowed content. -->
+
+ <xs:simpleType name="RegistryFormatGuid">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A Registry format GUID must contain
+ five different Hexadecimal character sets that are separated by a dash
+ (-) character. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <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:schema>