audk/BaseTools/Conf/XMLSchema/DistributionPackage.xsd

2888 lines
118 KiB
XML
Raw Normal View History

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