audk/BaseTools/Conf/XMLSchema/DistributionPackage.xsd

2888 lines
187 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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:NMTOKEN" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The reference name of
the Distribution Package file. This single word name can
be used by tools as a keyword or for directory and/or
file creation. </xs:documentation>
<xs:documentation xml:lang="en-us"> White space and special
characters (dash and underscore characters may be used)
are not permitted in this name. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="GUID">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This 128-bit GUID and the Version
attribute uniquely identify this Distribution Package. </xs:documentation>
<xs:documentation xml:lang="en-us"> Backward compatible releases of a
distribution package need only change the version number, while
non-backward compatible changes require the GUID to change (resetting
the version number to 1.0 is optional.) </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="RegistryFormatGuid">
<xs:attribute name="Version" type="xs:decimal" use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This value, along with
the GUID, is used to uniquely identify this object. The
higher the number, the more recent the content.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A string identifying who created this
distribution package. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The date and time this distribution was
created. The format is: YYYY-MM-DDThh:mm:ss, for example:
2001-01-31T13:30:00 (note the T character separator between the calendar
date and the time. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="Copyright" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The copyright for this file that is
generated by the creator of the distribution. If a derivative work is
generated from an existing distribution, then the existing copyright
must be maintained, and additional copyrights may be appended to the end
of this element. It may also be the primary copyright for all code
provided in the Distribution Package. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="License" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A license that describes any
restrictions on the use of this distribution. If a derivative work is
allowed by the original license and a derivative work is generated from
an existing distribution, then the existing license must be maintained,
and additional licenses may be appended to the end of this element. It
may also be the primary license for all code provided in the
distribution file. Alternatively, this may point to a filename that
contains the License. The file (included in the content zip file) will
be stored in the same location as the distribution package's .pkg file.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="Abstract" type="xs:normalizedString">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A one line description of the
Distribution Package. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Description" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A complete description of the
Distribution Package. This description may include the release name of
the file, the version of the file, and a complete description of the
file contents and/or features including a description of the updates
since the previous file release. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The packaging utilities will use this
MD5 sum value of the included ZIP file containing files and/or code. If
this element is not present, then installation tools should assume that
the content is correct, or that other methods may be needed to verify
content. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal"
default="1.1">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>
<xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>
<xs:documentation xml:lang="en-us"> #1 Updated to present date and new
version which is important to reflect the present state of the
matter</xs:documentation>
<xs:documentation xml:lang="en-us"> #2 Added definition/enumeration of
UNDEFIND type 2 is important since there is a large body of legacy code
for which the 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:NMTOKEN"
use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is a
single word BaseName of the package. This BaseName
can be used by tools as a keyword and for
directory/file creation. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="GUID">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This GUID and the Version
attribute uniquely identify a given package.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="RegistryFormatGuid">
<xs:attribute name="Version" type="xs:decimal"
use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This value,
along with the GUID, is used to uniquely identify
this object. </xs:documentation>
<xs:documentation xml:lang="en-us"> Backward
compatible changes must make sure this number is
incremented from the most recent version.
Non-backward compatible changes require a new
GUID, and the version can be reset.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Copyright"
type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> If the package requires a
different copyright than the distribution package, this
element can list one or more copyright lines.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> If the package requires
licenses that are different from the distribution package
license, this element can contain one or more license text
paragraphs (or license filenames.) </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Abstract"
type="xs:normalizedString">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A one line description of
this package. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Description"
type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A complete description of a
package. This description may include the release name of
the package, the version of the package, and a complete
description of the package contents and/or features
including a description of the updates since the previous
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="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This can be used to
differentiate multiple sections with a grouping. </xs:documentation>
<xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
Identifier might indicate specific steps and tools required
before processing module content, while a different
UserExtensions section with a POST_PROCESS Identifier might
describe steps that need to be executed after operations on the
modules in this package. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- End of PackageSurfaceArea UserExtensions element. -->
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of the PackageSurfaceArea element. -->
<xs:element name="ModuleSurfaceArea">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Each module is uniquely identified by it's GUID and
Version number. Backward compatible releases of a module need only change the
version number, while non-backward compatible changes require the GUID to change
(resetting the version number to 1.0 is optional.) </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="Header">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="Name">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the User Interface
Name for this Module. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:normalizedString">
<xs:attribute name="BaseName" type="xs:NMTOKEN"
use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is a
single word BaseName that will be used to create a
module meta-data file. </xs:documentation>
<xs:documentation xml:lang="en-us"> This name
should also be used to create output file names
and directories. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="GUID">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This GUID and the Version
attribute uniquely identify a given Module.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="RegistryFormatGuid">
<xs:attribute name="Version" type="xs:decimal"
use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This value,
along with the GUID, is used to uniquely identify
this object. </xs:documentation>
<xs:documentation xml:lang="en-us"> Backward
compatible changes must make sure this number is
incremented from the most recent version.
Non-backward compatible changes require a new
GUID, and the version can be reset.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Copyright"
type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is only required if the
Copyright is different from either the Package or
Distribution copyright. Multiple copyright lines are
permitted within this section. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is only required if the
license is different from either the Package or Distribution
license. Multiple licenses are permitted within this
section. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Abstract"
type="xs:normalizedString">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A brief text description of
the module. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Description"
type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A complete description of
the module contents and/or features including a description
of the updates since the previous module release.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of Module Surface Area Header Section -->
<xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
<xs:annotation>
<xs:documentation xml:lang="en-us"> List general information about a module,
including the Supported Architectures, this module's type,
specifications the module is coded against, and other informational
content. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="ModuleType"
type="ModuleTypes">
<xs:annotation>
<xs:documentation xml:lang="en-us"> One of the Enumerated module
types that limit the use of a module. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">
<xs:annotation>
<xs:documentation xml:lang="en-us"> For stand-alone modules that
are NOT part of any package, this is the path to the root of
the module as listed in the ZIP file. For modules included
in a package, this is the location, relative to the root of
the package (PackagePath) this module belongs to.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This element is only
required for the PEIM that produces the PCD PPI or the DXE
Driver that produces the PCD Protocol. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="PEI_PCD_DRIVER"/>
<xs:enumeration value="DXE_PCD_DRIVER"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion"
type="xs:decimal"/>
<xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion"
type="xs:decimal"/>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is a list of other
specifications that this module is written against. These
entries can be used in #define statements (depending on the
build system implementation, they may be autogenerated.)
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:NCName">
<xs:attribute name="Version" type="xs:decimal"
use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Different firmware execution
paths may be taken based on a given state of the hardware,
firmware, or through feature settings. A BootMode may be
declared (PRODUCES) or discovered (CONSUMES) based on these
states and feature settings. If the usage is UNDEFINE, it
implies that a Boot Mode is used, but the package creator
does not know how it is used. The supported boot modes map
to the PI specification Boot Modes. The boot modes listed
with Recovery are to indicate that the BootMode is valid
during a recovery boot. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element minOccurs="1" maxOccurs="1"
name="SupportedBootModes">
<xs:simpleType>
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="FULL"/>
<xs:enumeration value="MINIMAL"/>
<xs:enumeration value="NO_CHANGE"/>
<xs:enumeration value="DIAGNOSTICS"/>
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="S2_RESUME"/>
<xs:enumeration value="S3_RESUME"/>
<xs:enumeration value="S4_RESUME"/>
<xs:enumeration value="S5_RESUME"/>
<xs:enumeration value="FLASH_UPDATE"/>
<xs:enumeration value="RECOVERY_FULL"/>
<xs:enumeration value="RECOVERY_MINIMAL"/>
<xs:enumeration value="RECOVERY_NO_CHANGE"/>
<xs:enumeration value="RECOVERY_DIAGNOSTICS"/>
<xs:enumeration value="RECOVERY_DEFAULT"/>
<xs:enumeration value="RECOVERY_S2_RESUME"/>
<xs:enumeration value="RECOVERY_S3_RESUME"/>
<xs:enumeration value="RECOVERY_S4_RESUME"/>
<xs:enumeration value="RECOVERY_S5_RESUME"/>
<xs:enumeration value="RECOVERY_FLASH_UPDATE"/>
<xs:enumeration value="UNDEFINED"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
</xs:element>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Usage" use="required">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="CONSUMES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module
always supports the given boot modes.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SOMETIMES_CONSUMES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module may
support a given mode on some execution paths.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="PRODUCES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module
will change the boot mode. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SOMETIME_PRODUCES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module
will change the boot mode on some exection paths.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="UNDEFINED">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The package
creator does not know how the boot mode is used.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional"/>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Event"
nillable="true">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The functions that make up
the Event, Timer, and Task Priority Services are used during
preboot to create, close, signal, and wait for events; to
set timers; and to raise and restore task priority levels as
defined in the UEFI specification. GUIDed events should be
listed in the Guids section. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Usage" use="required">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="CONSUMES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module
will register a notification function and calls
the function when it is signaled.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SOMETIMES_CONSUMES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module
will register a notification function and calls
the function when it is signaled on some execution
paths. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="PRODUCES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module
will signal all events in an event group.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SOMETIMES_PRODUCES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module
will signal all events in an event group under
some execution paths. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="UNDEFINED">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The package
creator does not know how an event is used.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="EventType" use="required">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>
<xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>
<xs:enumeration value="UNDEFINED"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional"/>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="HOB"
nillable="false">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is a list of non-GUIDed
Hand Off Blocks (HOBs) produced or consumed by this module.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="HobType" use="required">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="PHIT"/>
<xs:enumeration value="MEMORY_ALLOCATION"/>
<xs:enumeration value="RESOURCE_DESCRIPTOR"/>
<xs:enumeration value="FIRMWARE_VOLUME"/>
<xs:enumeration value="LOAD_PEIM"/>
<xs:enumeration value="UNDEFINED"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Usage" use="required">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="CONSUMES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A HOB must be
present in the system. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SOMETIMES_CONSUMES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> If present,
the HOB will be used. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="PRODUCES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The HOB is
always produced by the module. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SOMETIMES_PRODUCES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The HOB may be
produced by the module under some execution paths.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="UNDEFINED">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The package
creator knows that a HOB is used, but does not
know how it is used. </xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attributeGroup ref="SupportedArchMod"/>
</xs:complexType>
</xs:element>
<!-- End of ModuleProperties Section -->
<xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This section may be included for Modules
that are copied from a different module. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="GUID">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This GUID and the Version
attribute uniquely identify the Module that this Module was
copied from. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="RegistryFormatGuid">
<xs:attribute name="Version" type="xs:decimal"
use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This value,
along with the GUID, is used to uniquely identify
this object. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of ClonedFrom Section. -->
<xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A list of the different Library Classes
consumed by a driver, core and/or application module, or produced by a
Library module. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="Keyword"
type="xs:NCName">
<xs:annotation>
<xs:documentation xml:lang="en-us "> Used by tools
to identify different instances of libraries that
provide the library class. This keyword identifies
the library class this module needs to be linked
against. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1"
name="RecommendedInstance">
<xs:complexType>
<xs:all>
<xs:element minOccurs="1" maxOccurs="1"
name="GUID">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This GUID and
the Version attribute uniquely identify the
recommended Library Instance for this module .
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="RegistryFormatGuid">
<xs:attribute name="Version" type="xs:decimal"
use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This value,
along with the GUID, is used to uniquely identify
this object. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Usage" use="required">
<xs:simpleType>
<xs:annotation>
<xs:documentation xml:lang="en-us"> Library
instances can provide code for a library class, or
may require other library instances themselves.
Since different execution paths in a library (or
module) may need different library classes based
on some setting, library classes may not alway be
required. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NCName">
<xs:enumeration value="PRODUCES"/>
<xs:enumeration value="CONSUMES"/>
<xs:enumeration value="SOMETIMES_CONSUMES"/>
<xs:enumeration value="UNDEFINED"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="SupportedArchMod"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A FeatureFlag
attribute must evaluate to either true or false - it
may be a fixed value of true or false, a C name or
an in-fix expression. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of LibraryClassDefinitions Section -->
<xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the module relative
(ModuleProperties.Path) path and filename location within
the ZIP file. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="Family" type="FamilyTypes"
use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The Family
attribute is used to restrict usage to a given
family of compilers, such as GCC or MSFT. Since
not all code processing tools use the same syntax,
especially for assembly, this field can be used to
identify different syntax. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType"
use="optional"/>
<xs:attribute name="FeatureFlag"
type="xs:normalizedString" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of SourceFiles Section -->
<xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded"
name="Filename">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the
module relative (ModuleProperties.Path) path and
filename location within the ZIP file.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="FileType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Binary file
distribution is limited to UEFI/PI FFS leaf
section file types. </xs:documentation>
</xs:annotation>
<xs:enumeration value="GUID"/>
<xs:enumeration value="FREEFORM"/>
<xs:enumeration value="UEFI_IMAGE"/>
<xs:enumeration value="PE32">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A UEFI/PI FFS
Leaf section file type, not a raw PE32 file.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="PIC"/>
<xs:enumeration value="PEI_DEPEX"/>
<xs:enumeration value="DXE_DEPEX"/>
<xs:enumeration value="SMM_DEPEX"/>
<xs:enumeration value="COMPAT16"/>
<xs:enumeration value="DISPOSABLE"/>
<xs:enumeration value="TE"/>
<xs:enumeration value="VER"/>
<xs:enumeration value="UI"/>
<xs:enumeration value="BIN"/>
<xs:enumeration value="FV"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SupArchList"
type="ArchListType" use="optional"/>
<xs:attribute name="SupModList"
type="ModuleListType" use="optional"/>
<xs:attribute name="FeatureFlag"
type="xs:normalizedString" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="AsBuilt">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This section
contains information about how the module was
coded, such as Compiler Tools, Flags, PCDs (only
PatchPcd and/or PcdEx) and Library Class Instances
used to build the binary. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="PatchPcdValue">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The element is
the Patchable PCD Value that was used during the
build. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1"
name="TokenSpaceGuidValue"
type="RegistryFormatGuid"/>
<xs:element minOccurs="1" maxOccurs="1"
name="PcdCName" type="xs:NCName"/>
<xs:element minOccurs="1" maxOccurs="1"
name="Token">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The minLength
of 3 is required to handle the "0x" prefix to the
hex number. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="HexNumber">
<xs:minLength value="3"/>
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1"
name="DatumType" type="PcdDatumTypes"/>
<xs:element minOccurs="0" maxOccurs="1"
name="MaxDatumSize">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This field is
required if the Pcd Datum Type is VOID* </xs:documentation>
<xs:documentation xml:lang="en-us"> The minLength
of 3 is required to handle the "0x" prefix to the
hex number. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="HexNumber">
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1"
name="Value" type="xs:normalizedString"/>
<xs:element minOccurs="1" maxOccurs="1"
name="Offset">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The minLength
of 3 is required to handle the "0x" prefix to the
hex number. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="HexNumber">
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="PcdError">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Error
information implemented by the module.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1"
name="ErrorNumber">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The minLength
of 3 is required to handle the "0x" prefix to the
hex number. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="HexNumber">
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="ErrorMessage">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Lang" type="xs:language"
default="en-us" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="PcdExValue">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The element is
the DynamicEx PCD Value that was used during the
build. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1"
name="TokenSpaceGuidValue"
type="RegistryFormatGuid"/>
<xs:element minOccurs="1" maxOccurs="1"
name="Token">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The minLength
of 3 is required to handle the "0x" prefix to the
hex number. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="HexNumber">
<xs:minLength value="3"/>
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1"
name="DatumType" type="PcdDatumTypes"/>
<xs:element minOccurs="0" maxOccurs="1"
name="MaxDatumSize">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This field is
required if the Pcd Datum Type is VOID*
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="HexNumber">
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1"
name="Value" type="xs:normalizedString"/>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="PcdError">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Error
information implemented by the module.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1"
name="ErrorNumber">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The minLength
of 3 is required to handle the "0x" prefix to the
hex number. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="HexNumber">
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="ErrorMessage">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Lang" type="xs:language"
default="en-us" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1"
name="LibraryInstances">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the
actual library instance that was used to link
against the module. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded"
name="GUID">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This GUID and
the Version attribute uniquely identify the actual
Library Instance linked in this module.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="RegistryFormatGuid">
<xs:attribute name="Version" type="xs:decimal"
use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This value,
along with the GUID, is used to uniquely identify
this object. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="BuildFlags">
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:annotation>
<xs:documentation xml:lang="en-us"> Any
description of OS, Tool, and flags for the
individual tool can go in this section.
</xs:documentation>
</xs:annotation>
<xs:extension base="xs:string">
<xs:anyAttribute processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of AsBuilt -->
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of BinaryFiles Section -->
<xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="Description">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Lang" type="xs:language"
default="en-us" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="GUID">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This GUID and
the Version attribute uniquely identify Package
that this Module depends on. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="RegistryFormatGuid">
<xs:attribute name="Version" type="xs:decimal"
use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This value,
along with the GUID, is used to uniquely identify
this object. If the version attribute is not
specified, the most recent version of the package
can be used. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType"
use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of PackageDependencies -->
<xs:element minOccurs="0" maxOccurs="1" name="Guids">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="CName"
type="xs:NCName"/>
<xs:element minOccurs="0" maxOccurs="1" name="VariableName"
type="xs:normalizedString">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Only valid for
Variable GUID types. </xs:documentation>
<xs:documentation> This can be either a Hex Array or
C string in unicode format: L"string" Data.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Usage" use="required">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="CONSUMES">
<xs:annotation>
<xs:documentation xml:lang="en-us">The module does
not install the GUID, and the GUID must be present
for the module to execute. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SOMETIMES_CONSUMES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module
does not install the GUID, however, the GUID will
be used if it is present. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="PRODUCES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The module
always installs the GUID. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SOMETIMES_PRODUCES">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The Module
will install the GUID under certain execution
paths. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="UNDEFINED">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The package
creator knows that a GUID is used, but does not
know how it is used. </xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="GuidType" type="GuidListType" use="required"/>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType"
use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of Guids Section -->
<xs:element minOccurs="0" maxOccurs="1" name="Protocols">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A listing of protocols required or
produced by this module. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol"
nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="CName"
type="xs:NCName"/>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Usage" use="required">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="PRODUCES"/>
<xs:enumeration value="SOMETIMES_PRODUCES"/>
<xs:enumeration value="CONSUMES"/>
<xs:enumeration value="SOMETIMES_CONSUMES"/>
<xs:enumeration value="TO_START"/>
<xs:enumeration value="BY_START"/>
<xs:enumeration value="UNDEFINED"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Notify" type="xs:boolean" use="optional"/>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType"
use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of Protocols Section -->
<xs:element minOccurs="0" maxOccurs="1" name="PPIs">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A listing of PPIs required or produced
by this module. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi"
nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="CName"
type="xs:NCName"/>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Usage" use="required">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="PRODUCES"/>
<xs:enumeration value="SOMETIMES_PRODUCES"/>
<xs:enumeration value="CONSUMES"/>
<xs:enumeration value="SOMETIMES_CONSUMES"/>
<xs:enumeration value="UNDEFINED"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Notify" type="xs:boolean" use="optional"/>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType"
use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of PPIs Section -->
<xs:element minOccurs="0" maxOccurs="1" name="Externs">
<xs:annotation>
<xs:documentation xml:lang="en-us"> These elements specify additional
information about the module. This area may be used by tools to generate
code. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="1">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1"
name="EntryPoint" type="xs:NCName"/>
<xs:element minOccurs="0" maxOccurs="1"
name="UnloadImage" type="xs:NCName"/>
</xs:sequence>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1"
name="Constructor" type="xs:NCName"/>
<xs:element minOccurs="0" maxOccurs="1"
name="Destructor" type="xs:NCName"/>
</xs:sequence>
</xs:choice>
<xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType"
use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of Externs Section -->
<xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This section describes how a platform is
coded with respect to the platform configuration knobs.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="CName"
type="xs:NCName"/>
<xs:element minOccurs="1" maxOccurs="1"
name="TokenSpaceGuidCName" type="xs:NCName"/>
<xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"
type="xs:normalizedString"/>
<xs:element ref="HelpText" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="PcdItemType" type="PcdItemTypes"
use="required"/>
<xs:attribute name="PcdUsage" use="required">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="PRODUCES"/>
<xs:enumeration value="SOMETIMES_PRODUCES"/>
<xs:enumeration value="CONSUMES"/>
<xs:enumeration value="SOMETIMES_CONSUMES"/>
<xs:enumeration value="UNDEFINED"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SupArchList" type="ArchListType"
use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType"
use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of PcdCoded Section -->
<xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the PEI dependency expression
for a Dependency Section. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Expression" type="xs:string" minOccurs="1"
maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en-us"> An in-fix expression, of C
identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
as well as parenthesis () in the in-fix notation. The
operators are restricted to grammar defined in the PI
specification. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
</xs:complexType>
</xs:element>
<!-- End of PeiDepex Section -->
<xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the DXE dependency expression
for a Dependency Section. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Expression" type=" xs:string " minOccurs="1"
maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en-us"> An in-fix expression, of C
identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
as well as parenthesis () in the in-fix notation. The
operators are restricted to grammar defined in the PI
specification. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
</xs:complexType>
</xs:element>
<!-- End of DxeDepex Section -->
<xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the SMM dependency expression
for a Dependency Section. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Expression" type=" xs:string " minOccurs="1"
maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en-us"> An in-fix expression, of C
identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
as well as parenthesis () in the in-fix notation. The
operators are restricted to grammar defined in the PI
specification. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
</xs:complexType>
</xs:element>
<!-- End of SmmDepex Section -->
<xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This section is used to provide comments
and/or list auxiliary files, such as pdb or map files.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Lang" type="xs:language"
default="en-us" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the path and
filename location within the ZIP file. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="Executable" type="xs:boolean"
default="false" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> If true, used
by installation tools to ensure that a file that
must be executable has the correct properties to
permit execution. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of Module Surface Area Misc Section -->
<xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This section is used for any processing
instructions that may be custom to the content provided by the
distribution that are common to module. </xs:documentation>
<xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>
<xs:documentation xml:lang="en-us"> The content can be plain text as well as
any user-defined, properly formatted XML structure. </xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:attribute name="UserId" type="xs:NCName" use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is a single word identifier
for grouping similar content. For example, ReferenceBuild might
be used to identify non-PI compliant build steps, with two
different UserExtensions sections, one with an Identifier of
Prebuild, and another of PostBuild. Both UserExtensions sections
would use the same UserId. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Identifier" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This can be any string used to
differentiate or identify this section from other UserExtensions
sections. </xs:documentation>
<xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
Identifier might indicate specific steps and tools required
before processing module content, while a different
UserExtensions section with a POST_PROCESS Identifier might
describe steps that need to be executed after operations on this
module. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- End of Module Surface Area UserExtensions Section -->
</xs:sequence>
<xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This attribute is used when the binaries are
distributed for this module and no code generation from source files is
required. If set, then the BinaryFiles section should be used, and any files
listed in the SourceFiles section do not have to be built. Additionally, the
AsBuilt section for each binary file must be included. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<!-- End of the ModuleSurfaceArea element. -->
<xs:element name="Tools">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Header">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="Name"
type="xs:normalizedString">
<xs:annotation>
<xs:documentation xml:lang="en-us">This is the User Interface
Name for this Tools Distribution.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Copyright"
type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is only required if the
Copyright is different from the Distribution Package
copyright. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is only required if the
License is different from the Distribution Package license.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Abstract"
type="xs:normalizedString">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is only required if the
Abstract is different from the Distribution Package
Abstract. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Description"
type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is only required if the
Description is different from the Distribution Package
Description. </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the path and filename location
within the ZIP file. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="OS" type="SupportedOs" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is required for
tools that execute; it should not be used for
configuration files. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Executable" type="xs:boolean" default="false"
use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> If true, used by
installation tools to ensure that a file that must be
executable has the correct properties to permit
execution. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of the Tools element. -->
<xs:element name="MiscellaneousFiles">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This section contains a list of files that are not
part of the code distributed with modules, packages or tools. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Header">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Name"
type="xs:normalizedString">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The User interface name for
this content. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Copyright"
type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is only required if the
Copyright is different from the Distribution Package
Copyright. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is only required if the
License is different from the Distribution Package License.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Abstract"
type="xs:normalizedString"/>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Lang" type="xs:language"
default="en-us" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is the path and filename location
within the ZIP file. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="Executable" type="xs:boolean" default="false"
use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> If true, used by
installation tools to ensure that a file that must be
executable has the correct properties to permit
execution. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End of the Misc element. -->
<xs:element name="UserExtensions">
<xs:complexType mixed="true">
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="UserId" type="xs:NCName" use="required">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This is a single word identifier for
grouping similar content. For example, ReferenceBuild might be used to
identify non-PI compliant build steps, with two different UserExtensions
sections, one with an Identifier of Prebuild, and another of PostBuild. Both
UserExtensions sections would use the same UserId. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Identifier" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This can be any string used to differentiate
or identify this section from other UserExtensions sections. </xs:documentation>
<xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might
indicate specific steps and tools required before processing distribution
package content, while a different UserExtensions section with a
POST_PROCESS Identifier might describe steps that need to be executed after
operations on this content. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- The following elsements are common definitions used with the ref attribute for elements. -->
<xs:element name="HelpText">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<!-- The following attribute groups are used in various elements above. -->
<xs:attributeGroup name="SupportedArchMod">
<xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
<xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
</xs:attributeGroup>
<!-- The following data types are used to restrict content. -->
<xs:simpleType name="ArchListType">
<xs:list itemType="ArchTypes"/>
</xs:simpleType>
<xs:simpleType name="ArchTypes">
<xs:restriction base="xs:NCName">
<xs:enumeration value="IA32"/>
<xs:enumeration value="X64"/>
<xs:enumeration value="IPF"/>
<xs:enumeration value="EBC"/>
<xs:pattern value="([A-Z])([a-zA-Z0-9])*">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Any processor architecture not listed above.
The Architecture must be a target architecture of one or more compiler tool
chains. </xs:documentation>
</xs:annotation>
</xs:pattern>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FamilyTypes">
<xs:restriction base="xs:NCName">
<xs:enumeration value="MSFT"/>
<xs:enumeration value="GCC"/>
<xs:pattern value="[A-Z][a-zA-Z0-9]*">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Any other family of build utilities for
which compiler tools exist. </xs:documentation>
</xs:annotation>
</xs:pattern>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="GuidListType">
<xs:list itemType="GuidTypes"/>
</xs:simpleType>
<xs:simpleType name="GuidTypes">
<xs:restriction base="xs:NCName">
<xs:enumeration value="Event"/>
<xs:enumeration value="File"/>
<xs:enumeration value="FV"/>
<xs:enumeration value="GUID"/>
<xs:enumeration value="Hii"/>
<xs:enumeration value="HOB"/>
<xs:enumeration value="SystemTable"/>
<xs:enumeration value="TokenSpaceGuid"/>
<xs:enumeration value="Variable"/>
<xs:enumeration value="UNDEFINED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="HexNumber">
<xs:restriction base="xs:hexBinary">
<xs:pattern value="0x([a-fA-F0-9])+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Md5Sum">
<xs:restriction base="xs:normalizedString">
<xs:pattern value="[a-zA-Z0-9]{32}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ModuleListType">
<xs:list itemType="ModuleTypes"/>
</xs:simpleType>
<xs:simpleType name="ModuleTypes">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The following module types are defined by
specifications. </xs:documentation>
<xs:documentation xml:lang="en-us"> Module types for components and libraries defined
for this distribution mechanism. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NCName">
<xs:enumeration value="BASE ">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Use of this module is not restricted.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="DXE_CORE">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only applicable to the DXE
core. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="DXE_DRIVER">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only applicable to a DXE
driver. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="DXE_RUNTIME_DRIVER">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only applicable to a DXE
runtime driver. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="DXE_SAL_DRIVER">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only applicable to an IPF DXE
runtime driver. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="DXE_SMM_DRIVER">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only applicable to a DXE SMM
driver. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="PEI_CORE">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only applicable to the PEI
core. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="PEIM">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only valid for PEI modules.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SEC">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only applicable to Security
phase. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="UEFI_DRIVER">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="UEFI_RUNTIME_DRIVER">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only valid for UEFI runtime
drivers.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="UEFI_APPLICATION">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only valid for UEFI
applications. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SMM_CORE">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This module is only applicable to the SMM
core.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="USER_DEFINED">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This content is restricted to a specific
implementation. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="UNDEFINED">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This enumeration is for use in a list that
where the package creator does not know the what module types are supported
by a module. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:pattern value="([A-Z])([a-zA-Z0-9])*">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This pattern has been added for use in a
module lists - for future expansion. </xs:documentation>
</xs:annotation>
</xs:pattern>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PcdDatumTypes">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The following data types are defined by the PCD
specification (or PCD section of the UEFI/PI specifications.) </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:normalizedString">
<xs:enumeration value="UINT8"/>
<xs:enumeration value="UINT16"/>
<xs:enumeration value="UINT32"/>
<xs:enumeration value="UINT64"/>
<xs:enumeration value="BOOLEAN"/>
<xs:enumeration value="VOID*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PcdItemListType">
<xs:list itemType="PcdItemTypes"/>
</xs:simpleType>
<xs:simpleType name="PcdItemTypes">
<xs:restriction base="xs:NCName">
<xs:enumeration value="FeaturePcd">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The Feature PCD is a binary, evaluating to
either true or false. This is used during build to include/exclude content.
It can also be used during execution to force execution paths within
drivers, or to enable/disable features within a driver for a given platform.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="FixedPcd">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The Fixed PCD is a #define value that is set
at build time. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="PatchPcd">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The Patch PCD is a #define that is set at
build time, and that can be modified within a binary file. Additional
information, such as the offset location of the value, along with it's
length may need to be provided.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Pcd">
<xs:annotation>
<xs:documentation xml:lang="en-us"> This PCD type has an overloaded definition.
Prior to build, the platform integrator may choose to implement a PCD as
Fixed, Patchable or a Dynamic PCD. If the platform integrator choose to use
the PCD as dynamic, then a PCD driver is required in the platform
(PEI/DXE/both) to track the PCD in some sort of 'database' of these items.
For Dynamic PCDs, the PcdGet* must pass in the token space guid and the
token number to retrieve data (PcdSet* also needs these values.)
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="PcdEx">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The PCD can only be used as Dynamic, and the
platform firmware must contain a driver to maintain a 'database' of these
items. For Dynamic PCDs, the PcdGet* must pass in the token space guid and
the token number to retrieve data (PcdSet* also needs these values.)
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="RegistryFormatGuid">
<xs:annotation>
<xs:documentation xml:lang="en-us"> A GUID must contain five different Hexadecimal
character sets that are separated by a dash (-) character. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern
value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"
/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SupportedOs">
<xs:annotation>
<xs:documentation xml:lang="en-us"> The EDK II build system supports workstations
running one of the following supported operating systems. This is the OS for the
developer's workstation, not the target platform. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Win32">
<xs:annotation>
<xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows
Vista. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Win64">
<xs:annotation>
<xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows
Vista. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Linux32"/>
<xs:enumeration value="Linux64"/>
<xs:enumeration value="OS/X32"/>
<xs:enumeration value="OS/X64"/>
<xs:enumeration value="GenericWin">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Typically, this is used for Windows Batch
files. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="GenericNix">
<xs:annotation>
<xs:documentation xml:lang="en-us"> Typically use for shell scripts - valid for
any Linux and Mac OS/X. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>