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