]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Conf/XMLSchema/DistributionPackage.xsd
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / BaseTools / Conf / XMLSchema / DistributionPackage.xsd
CommitLineData
f51461c8
LG
1<?xml version="1.0" encoding="UTF-8"?>\r
2<!--\r
3Filename: DistributionPackage.xsd\r
4\r
5Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.\r
6\r
2e351cbe 7SPDX-License-Identifier: BSD-2-Clause-Patent\r
f51461c8
LG
8\r
9-->\r
10<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"\r
11 targetNamespace="http://www.uefi.org/2012/1.0" xmlns="http://www.uefi.org/2012/1.0">\r
cbf14fa0
LH
12 <xs:element name="DistributionPackage">\r
13 <xs:annotation>\r
14 <xs:documentation xml:lang="en-us">\r
15 This schema defines the UEFI/PI Distribution Package description (PKG)\r
16 file. It describes the content of:\r
17 </xs:documentation>\r
18 <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and headers.</xs:documentation>\r
19 <xs:documentation xml:lang="en-us">\r
20 2) Modules in either source or binary format. (Note that Binary format\r
21 is for FFS leaf section file types only, complete FFS files cannot be distributed using this\r
22 distribution format.)\r
23 </xs:documentation>\r
24 <xs:documentation xml:lang="en-us">\r
25 3) The distribution of custom tools used to modify the binary images to\r
26 create UEFI/PI compliant images.\r
27 </xs:documentation>\r
28 <xs:documentation xml:lang="en-us">\r
29 4) Finally, it can be used to distribute other miscellaneous content\r
30 that is not specific to UEFI/PI images.\r
31 </xs:documentation>\r
32 <xs:documentation xml:lang="en-us">\r
33 The Package Surface Area describes the content of packages, while the\r
34 Module Surface Area provides information relevant to source and/or binary distributions.\r
35 </xs:documentation>\r
36 </xs:annotation>\r
37 <xs:complexType>\r
38 <xs:sequence>\r
39 <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">\r
40 <xs:annotation>\r
41 <xs:documentation xml:lang="en-us">\r
42 This header contains (legal) information usually required\r
43 for distributing both binary and/or source code.\r
44 </xs:documentation>\r
45 </xs:annotation>\r
46 </xs:element>\r
47 <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">\r
48 <xs:annotation>\r
49 <xs:documentation xml:lang="en-us"> The list of packages in this distribution. </xs:documentation>\r
50 <xs:documentation xml:lang="en-us">\r
51 Packages are groups of files and/or modules that are similar\r
52 in nature.\r
53 </xs:documentation>\r
54 <xs:documentation xml:lang="en-us">\r
55 Packages are uniquely identified by a package GUID and a\r
56 package version.\r
57 </xs:documentation>\r
58 <xs:documentation xml:lang="en-us">\r
59 A package can declare public mappings of C names to GUID\r
60 values.\r
61 </xs:documentation>\r
62 <xs:documentation xml:lang="en-us">\r
63 A package can provide header files for library classes\r
64 and/or other industry standard definitions.\r
65 </xs:documentation>\r
66 <xs:documentation xml:lang="en-us">\r
67 A package can also declare public mappings of platform\r
68 configuration database (PCD) &quot;knobs&quot; to control features and operation of modules\r
69 within a platform.\r
70 </xs:documentation>\r
71 <xs:documentation xml:lang="en-us">\r
72 Finally, a package lists the library instances and/or\r
73 modules that are provided in a distribution package.\r
74 </xs:documentation>\r
75 </xs:annotation>\r
76 </xs:element>\r
77 <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">\r
78 <xs:annotation>\r
79 <xs:documentation xml:lang="en-us">\r
80 The listing of UEFI/PI compliant modules in this\r
81 distribution that are NOT part of a Package. Every module that is provided as part of a\r
82 package needs to be described in a PackageSurfaceArea.Modules section.\r
83 </xs:documentation>\r
84 <xs:documentation xml:lang="en-us">\r
85 The ModuleSurfaceArea section describes how each module in a\r
86 distribution is coded, or, in the case of a binary module distribution, how it was built.\r
87 </xs:documentation>\r
88 <xs:documentation xml:lang="en-us">\r
89 UEFI/PI compliant libraries and modules are uniquely\r
90 identified by the Module's GUID and version number.\r
91 </xs:documentation>\r
92 <xs:documentation xml:lang="en-us">\r
93 This section will typically be used for modules that don't\r
94 require any additional files that would be included in a package. For example, the Enhanced\r
95 FAT driver binary does not need to have a package description, as no additional files are\r
96 provided.\r
97 </xs:documentation>\r
98 </xs:annotation>\r
99 </xs:element>\r
100 <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">\r
101 <xs:annotation>\r
102 <xs:documentation xml:lang="en-us">\r
103 This section is for distributing vendor specific executable\r
104 tools, tool source code and/or configuration files. These tools are primarily for\r
105 manipulating code and/or binary images.\r
106 </xs:documentation>\r
107 <xs:documentation xml:lang="en-us"> Tools in this section can:</xs:documentation>\r
108 <xs:documentation xml:lang="en-us">\r
109 1) Parse build meta-data files to create source code files\r
110 and build scripts.\r
111 </xs:documentation>\r
112 <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to UEFI/PI specifications. </xs:documentation>\r
113 <xs:documentation xml:lang="en-us">\r
114 3) Generate binary files from certain types of text/unicode\r
115 files.\r
116 </xs:documentation>\r
117 <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware Device images. </xs:documentation>\r
118 <xs:documentation xml:lang="en-us">\r
119 5) Implement external encoding/decoding/signature/GUIDed\r
120 tools.\r
121 </xs:documentation>\r
122 <xs:documentation xml:lang="en-us">\r
123 6) Distribution Package create/install/remove tools.\r
124 </xs:documentation>\r
125 </xs:annotation>\r
126 </xs:element>\r
127 <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">\r
128 <xs:annotation>\r
129 <xs:documentation xml:lang="en-us">\r
130 The list of miscellaneous files in this distribution. Any\r
131 files that are not listed in either the Package, Module or Tools sections can be listed\r
132 here. This section can be used to distribute specifications for packages and modules that\r
133 are not &quot;industry standards&quot; such as a specification for a chipset or a video\r
134 device.\r
135 </xs:documentation>\r
136 </xs:annotation>\r
137 </xs:element>\r
138 <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">\r
139 <xs:annotation>\r
140 <xs:documentation xml:lang="en-us">\r
141 The UserExtensions section is used to disseminate processing\r
142 instructions that may be custom to the content provided by the distribution. This section\r
fb0b35e0 143 contains information that is common to all aspects of this distribution.\r
cbf14fa0
LH
144 </xs:documentation>\r
145 </xs:annotation>\r
146 </xs:element>\r
147 </xs:sequence>\r
148\r
149 </xs:complexType>\r
150 </xs:element>\r
151 <!-- End of the DistributionPackage Description -->\r
152\r
153 <xs:element name="DistributionHeader">\r
154 <xs:annotation>\r
155 <xs:documentation xml:lang="en-us">\r
156 This section defines the content of the UEIF/PI compliant Distribution\r
157 Package Header. This is the only required element of a UEFI/PI compliant distribution package.\r
158 </xs:documentation>\r
159 </xs:annotation>\r
160 <xs:complexType>\r
161 <xs:sequence>\r
162 <xs:element minOccurs="1" maxOccurs="1" name="Name">\r
163 <xs:annotation>\r
164 <xs:documentation xml:lang="en-us">\r
165 This is the User Interface Name for this Distribution\r
166 Package.\r
167 </xs:documentation>\r
168 <xs:documentation xml:lang="en-us">\r
2d53d54a 169 Each Distribution Package is uniquely identified by its\r
cbf14fa0
LH
170 GUID and Version number.\r
171 </xs:documentation>\r
172 </xs:annotation>\r
173 <xs:complexType>\r
174 <xs:simpleContent>\r
175 <xs:extension base="xs:normalizedString">\r
176 <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">\r
177 <xs:annotation>\r
178 <xs:documentation xml:lang="en-us">\r
179 The reference name of the Distribution\r
180 Package file. This single word name can be used by tools as a keyword or for\r
181 directory and/or file creation.\r
182 </xs:documentation>\r
183 <xs:documentation xml:lang="en-us">\r
184 White space and special characters (dash and\r
185 underscore characters may be used) are not permitted in this name.\r
186 </xs:documentation>\r
187 </xs:annotation>\r
188 </xs:attribute>\r
189 </xs:extension>\r
190 </xs:simpleContent>\r
191 </xs:complexType>\r
192 </xs:element>\r
193 <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
194 <xs:annotation>\r
195 <xs:documentation xml:lang="en-us">\r
196 This 128-bit GUID and the Version attribute uniquely\r
197 identify this Distribution Package.\r
198 </xs:documentation>\r
199 <xs:documentation xml:lang="en-us">\r
200 Backward compatible releases of a distribution package need\r
201 only change the version number, while non-backward compatible changes require the GUID to\r
202 change (resetting the version number to 1.0 is optional.)\r
203 </xs:documentation>\r
204 </xs:annotation>\r
205 <xs:complexType>\r
206 <xs:simpleContent>\r
207 <xs:extension base="RegistryFormatGuid">\r
208 <xs:attribute name="Version" type="xs:decimal" use="required">\r
209 <xs:annotation>\r
210 <xs:documentation xml:lang="en-us">\r
211 This value, along with the GUID, is used to\r
212 uniquely identify this object. The higher the number, the more recent the\r
213 content.\r
214 </xs:documentation>\r
215 </xs:annotation>\r
216 </xs:attribute>\r
217 </xs:extension>\r
218 </xs:simpleContent>\r
219 </xs:complexType>\r
220 </xs:element>\r
221 <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">\r
222 <xs:annotation>\r
223 <xs:documentation xml:lang="en-us">\r
224 A string identifying who created this distribution package.\r
225 </xs:documentation>\r
226 </xs:annotation>\r
227 </xs:element>\r
228 <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">\r
229 <xs:annotation>\r
230 <xs:documentation xml:lang="en-us">\r
231 The date and time this distribution was created. The format\r
232 is: YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T character separator\r
233 between the calendar date and the time.\r
234 </xs:documentation>\r
235 </xs:annotation>\r
236 </xs:element>\r
237 <xs:element minOccurs="1" maxOccurs="unbounded" name="Copyright">\r
238 <xs:annotation>\r
239 <xs:documentation xml:lang="en-us">\r
240 The copyright for this file that is generated by the creator\r
241 of the distribution. If a derivative work is generated from an existing distribution, then\r
242 the existing copyright must be maintained, and additional copyrights may be appended to the\r
243 end of this element. It may also be the primary copyright for all code provided in the\r
244 Distribution Package.\r
f51461c8 245 </xs:documentation>\r
cbf14fa0
LH
246 </xs:annotation>\r
247 <xs:complexType>\r
248 <xs:simpleContent>\r
249 <xs:extension base="xs:string">\r
250 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
251 </xs:extension>\r
252 </xs:simpleContent>\r
253 </xs:complexType>\r
254\r
255 </xs:element>\r
256 <xs:element minOccurs="1" maxOccurs="unbounded" name="License">\r
257 <xs:annotation>\r
258 <xs:documentation xml:lang="en-us">\r
259 A license that describes any restrictions on the use of this\r
260 distribution. If a derivative work is allowed by the original license and a derivative work\r
261 is generated from an existing distribution, then the existing license must be maintained,\r
262 and additional licenses may be appended to the end of this element. It may also be the\r
263 primary license for all code provided in the distribution file. Alternatively, this may\r
264 point to a filename that contains the License. The file (included in the content zip file)\r
265 will be stored in the same location as the distribution package's .pkg file.\r
266 </xs:documentation>\r
267 </xs:annotation>\r
268 <xs:complexType>\r
269 <xs:simpleContent>\r
270 <xs:extension base="xs:string">\r
271 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
272 </xs:extension>\r
273 </xs:simpleContent>\r
274 </xs:complexType>\r
275 </xs:element>\r
276 <xs:element minOccurs="1" maxOccurs="unbounded" name="Abstract">\r
277 <xs:annotation>\r
278 <xs:documentation xml:lang="en-us">\r
279 A one line description of the Distribution Package.\r
280 </xs:documentation>\r
281 </xs:annotation>\r
282 <xs:complexType>\r
283 <xs:simpleContent>\r
284 <xs:extension base="xs:normalizedString">\r
285 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
286 </xs:extension>\r
287 </xs:simpleContent>\r
288 </xs:complexType>\r
289 </xs:element>\r
290 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
291 <xs:annotation>\r
292 <xs:documentation xml:lang="en-us">\r
293 A complete description of the Distribution Package. This\r
294 description may include the release name of the file, the version of the file, and a\r
295 complete description of the file contents and/or features including a description of the\r
296 updates since the previous file release.\r
297 </xs:documentation>\r
298 </xs:annotation>\r
299 <xs:complexType>\r
300 <xs:simpleContent>\r
301 <xs:extension base="xs:string">\r
302 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
303 </xs:extension>\r
304 </xs:simpleContent>\r
305 </xs:complexType>\r
306 </xs:element>\r
307 <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">\r
308 <xs:annotation>\r
309 <xs:documentation xml:lang="en-us">\r
310 The packaging utilities will use this MD5 sum value of the\r
311 included ZIP file containing files and/or code. If this element is not present, then\r
312 installation tools should assume that the content is correct, or that other methods may be\r
313 needed to verify content.\r
314 </xs:documentation>\r
315 </xs:annotation>\r
316 </xs:element>\r
317 <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal" default="1.1">\r
318 <xs:annotation>\r
319 <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>\r
320 <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>\r
321 <xs:documentation xml:lang="en-us">\r
322 #1 Updated to present date and new version which is\r
323 important to reflect the present state of the matter\r
324 </xs:documentation>\r
325 <xs:documentation xml:lang="en-us">\r
fb0b35e0 326 #2 Added definition/enumeration of UNDEFINED type 2 is\r
cbf14fa0
LH
327 important since there is a large body of legacy code for which the GUID’s and other\r
328 code/data objects were not decorated with their usage. This document will allow for\r
329 importing today’s source artifacts and producing decorations using the ‘Undefined’ versus\r
330 having an error\r
331 </xs:documentation>\r
332 <xs:documentation xml:lang="en-us">\r
333 #3 Allow for inclusion of ARM and future architecture\r
334 types\r
335 </xs:documentation>\r
336 </xs:annotation>\r
337 </xs:element>\r
338 </xs:sequence>\r
339 <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">\r
340 <xs:annotation>\r
341 <xs:documentation xml:lang="en-us">\r
342 If set to true, all content within this Distribution Package\r
343 should NOT be modified. The default permits modification of all content.\r
344 </xs:documentation>\r
f51461c8 345 </xs:annotation>\r
cbf14fa0
LH
346 </xs:attribute>\r
347 <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">\r
348 <xs:annotation>\r
349 <xs:documentation xml:lang="en-us">\r
350 If set to true, then the content can be repackaged into another\r
351 distribution package. The default prohibits repackaging the Distribution content.\r
352 </xs:documentation>\r
353 </xs:annotation>\r
354 </xs:attribute>\r
355 </xs:complexType>\r
356 </xs:element>\r
357 <!-- End of the DistributionHeader element. -->\r
358\r
359 <xs:element name="PackageSurfaceArea">\r
360 <xs:annotation>\r
361 <xs:documentation xml:lang="en-us">\r
362 A package is a collection of related objects - Includes, Libraries and\r
363 Modules.\r
364 </xs:documentation>\r
365 <xs:documentation xml:lang="en-us">\r
2d53d54a 366 Each package is uniquely identified by its GUID and Version number.\r
cbf14fa0
LH
367 Backward compatible releases of a package need only change the version number, while non-backward\r
368 compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)\r
369 </xs:documentation>\r
370 </xs:annotation>\r
371 <xs:complexType>\r
372 <xs:sequence>\r
373\r
374 <xs:element minOccurs="1" maxOccurs="1" name="Header">\r
375 <xs:complexType>\r
f51461c8 376 <xs:sequence>\r
cbf14fa0
LH
377 <xs:element minOccurs="1" maxOccurs="1" name="Name">\r
378 <xs:annotation>\r
379 <xs:documentation xml:lang="en-us">\r
380 This is the User Interface Name for this\r
381 package.\r
382 </xs:documentation>\r
383 </xs:annotation>\r
384 <xs:complexType>\r
385 <xs:simpleContent>\r
386 <xs:extension base="xs:normalizedString">\r
387 <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">\r
388 <xs:annotation>\r
389 <xs:documentation xml:lang="en-us">\r
390 This is a single word BaseName\r
391 of the package. This BaseName can be used by tools as a keyword\r
392 and for directory/file creation.\r
393 </xs:documentation>\r
394 </xs:annotation>\r
395 </xs:attribute>\r
396 </xs:extension>\r
397 </xs:simpleContent>\r
398 </xs:complexType>\r
399 </xs:element>\r
400 <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
401 <xs:annotation>\r
402 <xs:documentation xml:lang="en-us">\r
403 This GUID and the Version attribute uniquely\r
404 identify a given package.\r
405 </xs:documentation>\r
406 </xs:annotation>\r
407 <xs:complexType>\r
408 <xs:simpleContent>\r
409 <xs:extension base="RegistryFormatGuid">\r
410 <xs:attribute name="Version" type="xs:decimal" use="required">\r
411 <xs:annotation>\r
412 <xs:documentation xml:lang="en-us">\r
413 This value, along with the GUID,\r
414 is used to uniquely identify this object.\r
415 </xs:documentation>\r
416 <xs:documentation xml:lang="en-us">\r
417 Backward compatible changes must\r
418 make sure this number is incremented from the most recent\r
419 version. Non-backward compatible changes require a new GUID, and\r
420 the version can be reset.\r
421 </xs:documentation>\r
422 </xs:annotation>\r
423 </xs:attribute>\r
424 </xs:extension>\r
425 </xs:simpleContent>\r
426 </xs:complexType>\r
427 </xs:element>\r
428 <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">\r
429 <xs:annotation>\r
430 <xs:documentation xml:lang="en-us">\r
431 If the package requires a different copyright\r
432 than the distribution package, this element can list one or more copyright\r
433 lines.\r
434 </xs:documentation>\r
435 </xs:annotation>\r
436 <xs:complexType>\r
437 <xs:simpleContent>\r
438 <xs:extension base="xs:string">\r
439 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
440 />\r
441 </xs:extension>\r
442 </xs:simpleContent>\r
443 </xs:complexType>\r
f51461c8 444\r
cbf14fa0
LH
445 </xs:element>\r
446 <xs:element minOccurs="0" maxOccurs="unbounded" name="License">\r
447 <xs:annotation>\r
448 <xs:documentation xml:lang="en-us">\r
449 If the package requires licenses that are\r
450 different from the distribution package license, this element can contain one or\r
451 more license text paragraphs (or license filenames.)\r
452 </xs:documentation>\r
453 </xs:annotation>\r
454 <xs:complexType>\r
455 <xs:simpleContent>\r
456 <xs:extension base="xs:string">\r
457 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
458 />\r
459 </xs:extension>\r
460 </xs:simpleContent>\r
461 </xs:complexType>\r
f51461c8 462\r
cbf14fa0
LH
463 </xs:element>\r
464 <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">\r
465 <xs:annotation>\r
466 <xs:documentation xml:lang="en-us">\r
467 A one line description of this package.\r
468 </xs:documentation>\r
469 </xs:annotation>\r
470 <xs:complexType>\r
471 <xs:simpleContent>\r
472 <xs:extension base="xs:normalizedString">\r
473 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
474 />\r
475 </xs:extension>\r
476 </xs:simpleContent>\r
477 </xs:complexType>\r
478 </xs:element>\r
479 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
480 <xs:annotation>\r
481 <xs:documentation xml:lang="en-us">\r
482 A complete description of a package. This\r
483 description may include the release name of the package, the version of the\r
484 package, and a complete description of the package contents and/or features\r
485 including a description of the updates since the previous package’s release.\r
486 </xs:documentation>\r
487 </xs:annotation>\r
488 <xs:complexType>\r
489 <xs:simpleContent>\r
490 <xs:extension base="xs:string">\r
491 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
492 />\r
493 </xs:extension>\r
494 </xs:simpleContent>\r
495 </xs:complexType>\r
496 </xs:element>\r
497 <xs:element minOccurs="1" maxOccurs="1" name="PackagePath" type="xs:anyURI">\r
498 <xs:annotation>\r
499 <xs:documentation xml:lang="en-us">\r
500 This element is the location (in the ZIP file)\r
501 for the root directory of a package.\r
502 </xs:documentation>\r
503 </xs:annotation>\r
504 </xs:element>\r
505 </xs:sequence>\r
506 </xs:complexType>\r
507 </xs:element>\r
508 <!-- End of PackageSurfaceArea Header element. -->\r
509\r
510 <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
511 <xs:annotation>\r
512 <xs:documentation xml:lang="en-us">\r
513 The term cloned is used here to indicate that this package\r
514 as been copied and modified to a completely different package. An example might be for a new\r
515 generation of chipsets that have few or no elements in common with the original.\r
f51461c8 516 </xs:documentation>\r
cbf14fa0
LH
517 </xs:annotation>\r
518 <xs:complexType>\r
f51461c8 519 <xs:sequence>\r
cbf14fa0
LH
520 <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
521 <xs:annotation>\r
522 <xs:documentation xml:lang="en-us">\r
523 This GUID and the Version attribute uniquely\r
524 identify the Package that this Package was copied from.\r
525 </xs:documentation>\r
526 </xs:annotation>\r
527 <xs:complexType>\r
528 <xs:simpleContent>\r
529 <xs:extension base="RegistryFormatGuid">\r
530 <xs:attribute name="Version" type="xs:decimal" use="required">\r
531 <xs:annotation>\r
532 <xs:documentation xml:lang="en-us">\r
533 This value, along with the GUID,\r
534 is used to uniquely identify the package that this package was\r
535 cloned from.\r
536 </xs:documentation>\r
537 </xs:annotation>\r
538 </xs:attribute>\r
539 </xs:extension>\r
540 </xs:simpleContent>\r
541 </xs:complexType>\r
542 </xs:element>\r
543 </xs:sequence>\r
544 </xs:complexType>\r
545 </xs:element>\r
546 <!-- End of PackageSurfaceArea ClonedFrom element. -->\r
547\r
548 <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">\r
549 <xs:annotation>\r
550 <xs:documentation xml:lang="en-us">\r
551 Library Classes are public interfaces that can be used by\r
552 modules. One or more library instances can implement a library class, however only one\r
553 library instance can be linked to an individual module. This provides the platform\r
554 integrator with the flexibility of choosing one library instance's implementation over a\r
555 different library instance.\r
556 </xs:documentation>\r
557 </xs:annotation>\r
558 <xs:complexType>\r
559 <xs:sequence>\r
560 <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">\r
561 <xs:complexType>\r
562 <xs:sequence>\r
563 <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">\r
564 <xs:annotation>\r
565 <xs:documentation xml:lang="en-us">\r
566 The header file provides definitions\r
567 and function prototypes for a library class. Modules can be coded\r
568 against these functions, using the definitions in this header,\r
569 without concerning themselves about the libraries' implementation\r
570 details. This is a PackagePath relative path and filename for the\r
571 include file.\r
572 </xs:documentation>\r
573 </xs:annotation>\r
574 </xs:element>\r
575 <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">\r
576 <xs:complexType>\r
577 <xs:sequence>\r
578 <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
579 <xs:annotation>\r
580 <xs:documentation xml:lang="en-us">\r
581 This GUID and the\r
582 Version attribute uniquely identify the Recommended Library\r
583 Instance.\r
584 </xs:documentation>\r
585 </xs:annotation>\r
586 <xs:complexType>\r
587 <xs:simpleContent>\r
588 <xs:extension base="RegistryFormatGuid">\r
589 <xs:attribute name="Version" type="xs:decimal"\r
590 use="optional">\r
f51461c8 591 <xs:annotation>\r
cbf14fa0
LH
592 <xs:documentation xml:lang="en-us">\r
593 This value, along with\r
594 the GUID, is used to uniquely identify this object. If this\r
595 value is not specified, then any version of the library\r
596 instance is recommended.\r
597 </xs:documentation>\r
f51461c8 598 </xs:annotation>\r
cbf14fa0
LH
599 </xs:attribute>\r
600 </xs:extension>\r
601 </xs:simpleContent>\r
602 </xs:complexType>\r
603 </xs:element>\r
604 </xs:sequence>\r
605 </xs:complexType>\r
606 </xs:element>\r
607 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
608 </xs:sequence>\r
609 <xs:attribute name="Keyword" type="xs:NCName" use="required">\r
f51461c8 610 <xs:annotation>\r
cbf14fa0
LH
611 <xs:documentation xml:lang="en-us">\r
612 The single word name of the Library\r
613 Class that module developers will use to identify a library class\r
614 dependency.\r
615 </xs:documentation>\r
f51461c8 616 </xs:annotation>\r
cbf14fa0
LH
617 </xs:attribute>\r
618 <xs:attributeGroup ref="SupportedArchMod"/>\r
619 </xs:complexType>\r
620 </xs:element>\r
621 </xs:sequence>\r
622 </xs:complexType>\r
623 </xs:element>\r
624 <!-- End of PackageSurfaceArea LibraryClassDeclarations element. -->\r
625\r
626 <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">\r
627 <xs:annotation>\r
628 <xs:documentation xml:lang="en-us">\r
629 This section is used to list header files for industry\r
630 standards not under the auspices of UEFI.org. For example, headers that contain definitions\r
631 and data structures for the USB specifications.\r
632 </xs:documentation>\r
633 </xs:annotation>\r
634 <xs:complexType>\r
635 <xs:sequence>\r
636 <xs:element minOccurs="1" maxOccurs="unbounded" name="IndustryStandardHeader">\r
637 <xs:complexType>\r
638 <xs:sequence>\r
639 <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">\r
640 <xs:annotation>\r
641 <xs:documentation xml:lang="en-us">\r
642 The package relative path and\r
643 filename (in the content zip file) of the industry standard include\r
644 file.\r
f51461c8 645 </xs:documentation>\r
cbf14fa0
LH
646 </xs:annotation>\r
647 </xs:element>\r
648 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
649 </xs:sequence>\r
650 </xs:complexType>\r
651 </xs:element>\r
652 </xs:sequence>\r
653 </xs:complexType>\r
654 </xs:element>\r
655 <!-- End of PackageSurfaceArea IndustryStdIncludes element. -->\r
656\r
657 <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">\r
658 <xs:annotation>\r
659 <xs:documentation xml:lang="en-us">\r
660 All top level header files that are included by a package\r
661 that are not listed above. They cannot be:\r
662 </xs:documentation>\r
663 <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation>\r
664 <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>\r
665 <xs:documentation xml:lang="en-us"> 3) A library class header. </xs:documentation>\r
666 </xs:annotation>\r
667 <xs:complexType>\r
668 <xs:sequence>\r
669 <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader">\r
670 <xs:complexType>\r
671 <xs:sequence>\r
672 <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">\r
673 <xs:annotation>\r
674 <xs:documentation xml:lang="en-us">\r
675 This is the Package relative path\r
676 and filename location within the content ZIP file.\r
f51461c8 677 </xs:documentation>\r
cbf14fa0
LH
678 </xs:annotation>\r
679 <xs:complexType>\r
f51461c8 680 <xs:simpleContent>\r
cbf14fa0
LH
681 <xs:extension base="xs:anyURI">\r
682 <xs:attributeGroup ref="SupportedArchMod"/>\r
683 </xs:extension>\r
f51461c8 684 </xs:simpleContent>\r
cbf14fa0
LH
685 </xs:complexType>\r
686 </xs:element>\r
687 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
688 </xs:sequence>\r
689 </xs:complexType>\r
690 </xs:element>\r
f51461c8 691 </xs:sequence>\r
cbf14fa0
LH
692 </xs:complexType>\r
693 </xs:element>\r
fb0b35e0 694 <!-- End of PackageSurfaceArea PackageIncludes element. -->\r
cbf14fa0
LH
695\r
696 <xs:element minOccurs="0" maxOccurs="1" name="Modules">\r
697 <xs:complexType>\r
698 <xs:sequence>\r
699 <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded">\r
f51461c8 700 <xs:annotation>\r
cbf14fa0
LH
701 <xs:documentation xml:lang="en-us">\r
702 This section lists the Module Surface Area for\r
703 all modules provided with this package.\r
704 </xs:documentation>\r
f51461c8 705 </xs:annotation>\r
cbf14fa0
LH
706 </xs:element>\r
707 </xs:sequence>\r
708 </xs:complexType>\r
709 </xs:element>\r
710 <!-- End of PackageSurfaceArea Modules element. -->\r
711\r
712 <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">\r
713 <xs:annotation>\r
714 <xs:documentation xml:lang="en-us">\r
715 This section defines the mapping of GUID C names to GUID\r
716 values as a Registry Format GUID.\r
717 </xs:documentation>\r
718 <xs:documentation xml:lang="en-us">\r
719 Modules that use these GUIDs must specify their dependency\r
720 on this package.\r
721 </xs:documentation>\r
722 </xs:annotation>\r
723 <xs:complexType>\r
724 <xs:sequence>\r
725 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
f51461c8 726 <xs:annotation>\r
cbf14fa0 727 <xs:documentation xml:lang="en-us"> Individual GUID Declarations </xs:documentation>\r
f51461c8 728 </xs:annotation>\r
cbf14fa0
LH
729 <xs:complexType>\r
730 <xs:sequence>\r
731 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
732 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"\r
733 type="RegistryFormatGuid"/>\r
734 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
735 </xs:sequence>\r
736 <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>\r
737 <xs:attribute name="GuidTypes" type="GuidListType" use="optional"/>\r
738 <xs:attributeGroup ref="SupportedArchMod"/>\r
739 </xs:complexType>\r
740 </xs:element>\r
741 </xs:sequence>\r
742 </xs:complexType>\r
743 </xs:element>\r
744 <!-- End of PackageSurfaceArea GuidDeclarations element. -->\r
745\r
746 <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">\r
747 <xs:annotation>\r
748 <xs:documentation xml:lang="en-us">\r
749 This section defines the mapping of Protocol C names to GUID\r
750 values as a Registry Format GUID.\r
f51461c8 751 </xs:documentation>\r
cbf14fa0
LH
752 <xs:documentation xml:lang="en-us">\r
753 Modules that use these Protocols must specify their\r
754 dependency on this package.\r
755 </xs:documentation>\r
756 </xs:annotation>\r
757 <xs:complexType>\r
f51461c8 758 <xs:sequence>\r
cbf14fa0
LH
759 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
760 <xs:annotation>\r
761 <xs:documentation xml:lang="en-us">\r
762 Individual Protocol Declarations\r
763 </xs:documentation>\r
764 </xs:annotation>\r
765 <xs:complexType>\r
766 <xs:sequence>\r
767 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
768 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"\r
769 type="RegistryFormatGuid"/>\r
770 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
771 </xs:sequence>\r
772 <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>\r
773 <xs:attributeGroup ref="SupportedArchMod"/>\r
774 </xs:complexType>\r
775 </xs:element>\r
776 </xs:sequence>\r
777 </xs:complexType>\r
778 </xs:element>\r
779 <!-- End of PackageSurfaceArea ProtocolDeclarations element. -->\r
780\r
781 <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">\r
782 <xs:annotation>\r
783 <xs:documentation xml:lang="en-us">\r
784 This section defines the mapping of Ppi C names to GUID\r
785 values as a Registry Format GUID.\r
786 </xs:documentation>\r
787 <xs:documentation xml:lang="en-us">\r
788 Modules that use these Ppis must specify their dependency on\r
789 this package.\r
790 </xs:documentation>\r
791 </xs:annotation>\r
792 <xs:complexType>\r
793 <xs:sequence>\r
794 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
795 <xs:annotation>\r
796 <xs:documentation xml:lang="en-us"> Individual PPI Declarations </xs:documentation>\r
797 </xs:annotation>\r
798 <xs:complexType>\r
799 <xs:sequence>\r
800 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
801 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"\r
802 type="RegistryFormatGuid"/>\r
803 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
804 </xs:sequence>\r
805 <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>\r
806 <xs:attributeGroup ref="SupportedArchMod"/>\r
807 </xs:complexType>\r
808 </xs:element>\r
809 </xs:sequence>\r
810 </xs:complexType>\r
811 </xs:element>\r
812 <!-- End of PackageSurfaceArea PpiDeclarations element. -->\r
813\r
814 <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">\r
815 <xs:annotation>\r
816 <xs:documentation xml:lang="en-us">\r
817 This section is used to declare platform configuration knobs\r
818 that are defined by this package.\r
819 </xs:documentation>\r
820 <xs:documentation xml:lang="en-us">\r
821 Modules that use these PCD values must specify their\r
822 dependency on this package.\r
823 </xs:documentation>\r
824 </xs:annotation>\r
825 <xs:complexType>\r
826 <xs:sequence>\r
827 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">\r
828 <xs:complexType>\r
829 <xs:sequence>\r
830 <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCname"\r
831 type="xs:NCName">\r
832 <xs:annotation>\r
833 <xs:documentation xml:lang="en-us">\r
834 Specifies the C name of the Token\r
835 Space GUID of which this PCD Entry is a member. This C name should\r
836 also be listed in the GUIDs section, (specified above,) where the C\r
837 name is assigned to a GUID value.\r
838 </xs:documentation>\r
839 </xs:annotation>\r
840 </xs:element>\r
841 <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
842 <xs:annotation>\r
843 <xs:documentation xml:lang="en-us">\r
844 Specifies the 32-bit token value for\r
845 this PCD Entry. The Token number must be unique to the Token Space\r
846 that declares the PCD.\r
847 </xs:documentation>\r
848 <xs:documentation xml:lang="en-us">\r
849 The minLength of 3 is required to\r
850 handle the "0x" prefix to the hex number.\r
851 </xs:documentation>\r
852 </xs:annotation>\r
853 <xs:simpleType>\r
854 <xs:restriction base="HexNumber">\r
855 <xs:minLength value="3"/>\r
856 <xs:maxLength value="10"/>\r
857 </xs:restriction>\r
858 </xs:simpleType>\r
859 </xs:element>\r
860 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
861 <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDatumTypes">\r
862 <xs:annotation>\r
863 <xs:documentation xml:lang="en-us">\r
864 A string that contains the data type\r
865 of this PCD Entry. PCD data types are restricted to the following\r
866 set:UINT8, UINT16, UINT32, UINT64, VOID*, BOOLEAN.\r
867 </xs:documentation>\r
868 </xs:annotation>\r
869 </xs:element>\r
870 <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdItemListType">\r
871 <xs:annotation>\r
872 <xs:documentation xml:lang="en-us">\r
873 A string that contains one or more\r
874 PCD Item types separated by spaces. The PCD Item types are\r
875 restricted to FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.\r
876 </xs:documentation>\r
877 </xs:annotation>\r
878 </xs:element>\r
879 <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"\r
880 type="xs:normalizedString"/>\r
881 <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">\r
882 <xs:annotation>\r
883 <xs:documentation xml:lang="en-us">\r
884 This is a recommended maximum data\r
885 size for VOID* data types, the actual value should be defined by the\r
886 Platform Integrator. It is not required for the other data types.\r
887 </xs:documentation>\r
888 <xs:documentation xml:lang="en-us">\r
889 The minLength of 3 is required to\r
890 handle the "0x" prefix to the hex number.\r
f51461c8 891 </xs:documentation>\r
f51461c8 892\r
cbf14fa0
LH
893 </xs:annotation>\r
894 <xs:simpleType>\r
895 <xs:restriction base="HexNumber">\r
896 <xs:minLength value="3"/>\r
897 </xs:restriction>\r
898 </xs:simpleType>\r
899 </xs:element>\r
900 <xs:element minOccurs="0" maxOccurs="unbounded" name="Prompt">\r
901 <xs:annotation>\r
902 <xs:documentation xml:lang="en-US">\r
903 This entry contains prompt\r
904 information, that may used by tools to assist platform integrators\r
905 with choosing the correct values\r
906 </xs:documentation>\r
907 </xs:annotation>\r
908 <xs:complexType>\r
909 <xs:simpleContent>\r
910 <xs:extension base="xs:string">\r
911 <xs:attribute name="Lang" type="xs:language" default="en-us"\r
912 use="optional"/>\r
913 </xs:extension>\r
914 </xs:simpleContent>\r
915 </xs:complexType>\r
916 </xs:element>\r
917 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
918\r
919 <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdError">\r
920 <xs:annotation>\r
921 <xs:documentation xml:lang="en-us">\r
922 Valid Error messages that may be\r
923 implemented in a module for the PCD Entry. Only One Error Number per\r
924 PcdError, (multiple ErrorMessage entries are permitted) and multiple\r
925 PcdError elements are permitted.\r
926 </xs:documentation>\r
927 </xs:annotation>\r
928 <xs:complexType>\r
f51461c8 929 <xs:sequence>\r
cbf14fa0
LH
930 <xs:choice minOccurs="1" maxOccurs="1">\r
931 <xs:annotation>\r
932 <xs:documentation xml:lang="en-us">\r
933 One of the following\r
934 types of comparisons, which must be able to evaluate to\r
935 either true or false.\r
936 </xs:documentation>\r
937 </xs:annotation>\r
938 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">\r
939 <xs:annotation>\r
940 <xs:documentation xml:lang="en-us">\r
941 The PCD Value must be\r
942 space separated list of values. Values are restricted to the\r
943 data type of this PCD.\r
944 </xs:documentation>\r
945 </xs:annotation>\r
946 <xs:complexType>\r
947 <xs:simpleContent>\r
948 <xs:extension base="xs:normalizedString">\r
949 <xs:attribute name="Lang" type="xs:language" use="optional"\r
950 />\r
951 </xs:extension>\r
952 </xs:simpleContent>\r
953 </xs:complexType>\r
f51461c8 954 </xs:element>\r
cbf14fa0
LH
955 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange"\r
956 type="xs:normalizedString">\r
957 <xs:annotation>\r
958 <xs:documentation xml:lang="en-us">\r
959 The PCD must be within a\r
fb0b35e0
AC
960 specified range of numeric values. Restricted to C style\r
961 Relational, Equality and Logical Operators and parenthesis\r
cbf14fa0
LH
962 are valid. Only the CName for this PCD is permitted in the\r
963 ValidValueRange expression. All other values must be\r
964 numeric.\r
965 </xs:documentation>\r
966 <xs:documentation xml:lang="en-us">\r
967 LValue (op RValue)+\r
968 </xs:documentation>\r
969 </xs:annotation>\r
f51461c8 970 </xs:element>\r
cbf14fa0
LH
971 <xs:element minOccurs="0" maxOccurs="1" name="Expression"\r
972 type="xs:normalizedString">\r
973 <xs:annotation>\r
974 <xs:documentation xml:lang="en-us">\r
975 A in-fix logical\r
976 expression using C style logical operators.\r
977 </xs:documentation>\r
978 </xs:annotation>\r
f51461c8 979 </xs:element>\r
cbf14fa0
LH
980 </xs:choice>\r
981 <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">\r
982 <xs:annotation>\r
983 <xs:documentation xml:lang="en-us">\r
984 A hexadecimal value for\r
985 the error message as defined by specifications.\r
986 </xs:documentation>\r
987 <xs:documentation xml:lang="en-us">\r
988 The minLength of 3 is\r
989 required to handle the "0x" prefix to the hex number.\r
990 </xs:documentation>\r
f51461c8 991\r
cbf14fa0
LH
992 </xs:annotation>\r
993 <xs:simpleType>\r
994 <xs:restriction base="HexNumber">\r
995 <xs:minLength value="3"/>\r
996 </xs:restriction>\r
997 </xs:simpleType>\r
998 </xs:element>\r
999 <xs:element minOccurs="1" maxOccurs="unbounded" name="ErrorMessage">\r
1000 <xs:annotation>\r
1001 <xs:documentation xml:lang="en-us">\r
1002 This string should be\r
1003 defined by specifications. There are pre-defined error\r
fb0b35e0 1004 number ranges in the UEFI/PI specification.\r
cbf14fa0
LH
1005 </xs:documentation>\r
1006 </xs:annotation>\r
1007 <xs:complexType>\r
1008 <xs:simpleContent>\r
1009 <xs:extension base="xs:string">\r
1010 <xs:attribute name="Lang" type="xs:language" default="en-us"\r
1011 use="optional"/>\r
1012 </xs:extension>\r
1013 </xs:simpleContent>\r
1014 </xs:complexType>\r
1015 </xs:element>\r
1016 </xs:sequence>\r
1017 </xs:complexType>\r
1018 </xs:element>\r
1019 </xs:sequence>\r
1020 <xs:attributeGroup ref="SupportedArchMod"/>\r
1021 </xs:complexType>\r
1022 </xs:element>\r
f51461c8 1023 </xs:sequence>\r
cbf14fa0
LH
1024 </xs:complexType>\r
1025 </xs:element>\r
1026 <!-- End of PackageSurfaceArea PcdDeclarations element. -->\r
1027\r
1028 <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">\r
1029 <xs:annotation>\r
1030 <xs:documentation xml:lang="en-us">\r
1031 This section is used to describe any PCD interdependencies\r
1032 or relationships.\r
1033 </xs:documentation>\r
1034 </xs:annotation>\r
1035 <xs:complexType>\r
1036 <xs:sequence>\r
1037 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck" type="xs:normalizedString">\r
f51461c8 1038 <xs:annotation>\r
cbf14fa0
LH
1039 <xs:documentation xml:lang="en-us">\r
1040 This entry must used\r
1041 TokenSpaceGuidCName.PcdCname for every named PCD. Restricted to Relational,\r
1042 Equality and Logical Operators (NOT, AND, OR, GT, GE, EQ, LE, LT and XOR) and\r
1043 parenthesis are valid. Only the TokenSpaceGuidCName.PcdCname us permitted to\r
1044 name PCDs in the expression. All other values must be numeric.\r
1045 </xs:documentation>\r
1046 <xs:documentation xml:lang="en-us"> LValue (op RValue)+ </xs:documentation>\r
f51461c8 1047 </xs:annotation>\r
cbf14fa0
LH
1048 </xs:element>\r
1049 </xs:sequence>\r
1050 </xs:complexType>\r
1051 </xs:element>\r
1052\r
1053 <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles">\r
1054 <xs:annotation>\r
1055 <xs:documentation xml:lang="en-us">\r
1056 This section contains files that are not part of the code\r
1057 distributed with this package.\r
1058 </xs:documentation>\r
1059 </xs:annotation>\r
1060 <xs:complexType>\r
1061 <xs:sequence>\r
1062 <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">\r
f51461c8 1063 <xs:annotation>\r
cbf14fa0
LH
1064 <xs:documentation xml:lang="en-us">\r
1065 Only required if different from the Package\r
1066 Copyright.\r
1067 </xs:documentation>\r
f51461c8 1068 </xs:annotation>\r
cbf14fa0
LH
1069 </xs:element>\r
1070 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">\r
f51461c8 1071 <xs:annotation>\r
cbf14fa0
LH
1072 <xs:documentation xml:lang="en-us">\r
1073 Only required if different from the Package\r
1074 License.\r
1075 </xs:documentation>\r
f51461c8 1076 </xs:annotation>\r
cbf14fa0
LH
1077 </xs:element>\r
1078 <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string">\r
f51461c8 1079 <xs:annotation>\r
cbf14fa0
LH
1080 <xs:documentation xml:lang="en-us">\r
1081 A one line description of this section's\r
1082 content.\r
1083 </xs:documentation>\r
f51461c8 1084 </xs:annotation>\r
cbf14fa0
LH
1085 </xs:element>\r
1086 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description" type="xs:string">\r
f51461c8 1087 <xs:annotation>\r
cbf14fa0
LH
1088 <xs:documentation xml:lang="en-us">\r
1089 A complete description of the files in this\r
1090 section.\r
1091 </xs:documentation>\r
f51461c8 1092 </xs:annotation>\r
cbf14fa0
LH
1093 </xs:element>\r
1094 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
f51461c8 1095 <xs:annotation>\r
cbf14fa0
LH
1096 <xs:documentation xml:lang="en-us">\r
1097 This is the PackagePath relative path and\r
1098 filename location within the ZIP file.\r
1099 </xs:documentation>\r
f51461c8 1100 </xs:annotation>\r
cbf14fa0
LH
1101 <xs:complexType>\r
1102 <xs:simpleContent>\r
1103 <xs:extension base="xs:anyURI">\r
1104 <xs:attribute name="Executable" type="xs:boolean" default="false"\r
1105 use="optional">\r
1106 <xs:annotation>\r
1107 <xs:documentation xml:lang="en-us">\r
1108 If true, used by installation\r
1109 tools to ensure that a file that must be executable has the\r
1110 correct properties to permit execution.\r
1111 </xs:documentation>\r
1112 </xs:annotation>\r
1113 </xs:attribute>\r
1114 </xs:extension>\r
1115 </xs:simpleContent>\r
1116 </xs:complexType>\r
1117 </xs:element>\r
1118\r
1119 </xs:sequence>\r
1120 </xs:complexType>\r
1121 </xs:element>\r
1122 <!-- End of PackageSurfaceArea Misc element. -->\r
1123\r
1124 <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">\r
1125 <xs:annotation>\r
1126 <xs:documentation xml:lang="en-us">\r
1127 This section is used for any processing instructions that\r
1128 may be custom to the content provided by this package that are common to this package.\r
1129 </xs:documentation>\r
1130 </xs:annotation>\r
1131 <xs:complexType mixed="true">\r
1132 <xs:sequence>\r
1133 <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/>\r
1134 </xs:sequence>\r
1135 <xs:attribute name="UserId" type="xs:NCName" use="required">\r
1136 <xs:annotation>\r
1137 <xs:documentation xml:lang="en-us">\r
1138 This is a single word identifier for grouping\r
1139 similar content that does not fit into previously defined sections or other sections\r
1140 of the Distribution.\r
1141 </xs:documentation>\r
1142 </xs:annotation>\r
1143 </xs:attribute>\r
1144 <xs:attribute name="Identifier" type="xs:string" use="required">\r
1145 <xs:annotation>\r
1146 <xs:documentation xml:lang="en-us">\r
1147 This can be used to differentiate multiple sections\r
1148 with a grouping.\r
1149 </xs:documentation>\r
1150 <xs:documentation xml:lang="en-us">\r
1151 For example, a PRE_PROCESS Identifier might indicate\r
1152 specific steps and tools required before processing module content, while a\r
1153 different UserExtensions section with a POST_PROCESS Identifier might describe steps\r
1154 that need to be executed after operations on the modules in this package.\r
1155 </xs:documentation>\r
1156 </xs:annotation>\r
1157 </xs:attribute>\r
1158 <xs:anyAttribute processContents="lax"/>\r
1159 </xs:complexType>\r
1160 </xs:element>\r
1161 <!-- End of PackageSurfaceArea UserExtensions element. -->\r
1162\r
1163 </xs:sequence>\r
1164 </xs:complexType>\r
1165 </xs:element>\r
1166 <!-- End of the PackageSurfaceArea element. -->\r
1167\r
1168 <xs:element name="ModuleSurfaceArea">\r
1169 <xs:annotation>\r
1170 <xs:documentation xml:lang="en-us">\r
2d53d54a 1171 Each module is uniquely identified by its GUID and Version number.\r
cbf14fa0
LH
1172 Backward compatible releases of a module need only change the version number, while non-backward\r
1173 compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)\r
1174 </xs:documentation>\r
1175 </xs:annotation>\r
1176 <xs:complexType>\r
1177 <xs:sequence>\r
1178\r
1179 <xs:element minOccurs="1" maxOccurs="1" name="Header">\r
1180 <xs:complexType>\r
1181 <xs:sequence>\r
1182 <xs:element minOccurs="1" maxOccurs="1" name="Name">\r
f51461c8 1183 <xs:annotation>\r
cbf14fa0
LH
1184 <xs:documentation xml:lang="en-us">\r
1185 This is the User Interface Name for this Module.\r
1186 </xs:documentation>\r
f51461c8 1187 </xs:annotation>\r
cbf14fa0
LH
1188 <xs:complexType>\r
1189 <xs:simpleContent>\r
1190 <xs:extension base="xs:normalizedString">\r
1191 <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">\r
1192 <xs:annotation>\r
1193 <xs:documentation xml:lang="en-us">\r
1194 This is a single word BaseName\r
1195 that will be used to create a module meta-data file.\r
1196 </xs:documentation>\r
1197 <xs:documentation xml:lang="en-us">\r
1198 This name should also be used to\r
1199 create output file names and directories.\r
1200 </xs:documentation>\r
1201 </xs:annotation>\r
1202 </xs:attribute>\r
1203 </xs:extension>\r
1204 </xs:simpleContent>\r
1205 </xs:complexType>\r
1206 </xs:element>\r
1207 <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
f51461c8 1208 <xs:annotation>\r
cbf14fa0
LH
1209 <xs:documentation xml:lang="en-us">\r
1210 This GUID and the Version attribute uniquely\r
1211 identify a given Module.\r
1212 </xs:documentation>\r
f51461c8 1213 </xs:annotation>\r
cbf14fa0
LH
1214 <xs:complexType>\r
1215 <xs:simpleContent>\r
1216 <xs:extension base="RegistryFormatGuid">\r
1217 <xs:attribute name="Version" type="xs:decimal" use="required">\r
1218 <xs:annotation>\r
1219 <xs:documentation xml:lang="en-us">\r
1220 This value, along with the GUID,\r
1221 is used to uniquely identify this object.\r
1222 </xs:documentation>\r
1223 <xs:documentation xml:lang="en-us">\r
1224 Backward compatible changes must\r
1225 make sure this number is incremented from the most recent\r
1226 version. Non-backward compatible changes require a new GUID, and\r
1227 the version can be reset.\r
1228 </xs:documentation>\r
1229 </xs:annotation>\r
1230 </xs:attribute>\r
1231 </xs:extension>\r
1232 </xs:simpleContent>\r
1233 </xs:complexType>\r
1234 </xs:element>\r
1235 <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">\r
f51461c8 1236 <xs:annotation>\r
cbf14fa0
LH
1237 <xs:documentation xml:lang="en-us">\r
1238 This is only required if the Copyright is\r
1239 different from either the Package or Distribution copyright. Multiple copyright\r
1240 lines are permitted within this section.\r
1241 </xs:documentation>\r
f51461c8 1242 </xs:annotation>\r
cbf14fa0
LH
1243 <xs:complexType>\r
1244 <xs:simpleContent>\r
1245 <xs:extension base="xs:string">\r
1246 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
1247 />\r
1248 </xs:extension>\r
1249 </xs:simpleContent>\r
1250 </xs:complexType>\r
1251 </xs:element>\r
1252 <xs:element minOccurs="0" maxOccurs="unbounded" name="License">\r
f51461c8 1253 <xs:annotation>\r
cbf14fa0
LH
1254 <xs:documentation xml:lang="en-us">\r
1255 This is only required if the license is\r
1256 different from either the Package or Distribution license. Multiple licenses are\r
1257 permitted within this section.\r
1258 </xs:documentation>\r
f51461c8 1259 </xs:annotation>\r
cbf14fa0
LH
1260 <xs:complexType>\r
1261 <xs:simpleContent>\r
1262 <xs:extension base="xs:string">\r
1263 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
1264 />\r
1265 </xs:extension>\r
1266 </xs:simpleContent>\r
1267 </xs:complexType>\r
1268 </xs:element>\r
1269 <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">\r
f51461c8 1270 <xs:annotation>\r
cbf14fa0
LH
1271 <xs:documentation xml:lang="en-us">\r
1272 A brief text description of the module.\r
1273 </xs:documentation>\r
f51461c8 1274 </xs:annotation>\r
cbf14fa0
LH
1275 <xs:complexType>\r
1276 <xs:simpleContent>\r
1277 <xs:extension base="xs:normalizedString">\r
1278 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
1279 />\r
1280 </xs:extension>\r
1281 </xs:simpleContent>\r
1282 </xs:complexType>\r
1283 </xs:element>\r
1284 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
f51461c8 1285 <xs:annotation>\r
cbf14fa0
LH
1286 <xs:documentation xml:lang="en-us">\r
1287 A complete description of the module contents\r
1288 and/or features including a description of the updates since the previous module\r
1289 release.\r
1290 </xs:documentation>\r
f51461c8 1291 </xs:annotation>\r
cbf14fa0
LH
1292 <xs:complexType>\r
1293 <xs:simpleContent>\r
1294 <xs:extension base="xs:string">\r
1295 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
1296 />\r
1297 </xs:extension>\r
1298 </xs:simpleContent>\r
1299 </xs:complexType>\r
1300 </xs:element>\r
1301 </xs:sequence>\r
1302 </xs:complexType>\r
1303 </xs:element>\r
1304 <!-- End of Module Surface Area Header Section -->\r
1305\r
1306 <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">\r
1307 <xs:annotation>\r
1308 <xs:documentation xml:lang="en-us">\r
1309 List general information about a module, including the\r
1310 Supported Architectures, this module's type, specifications the module is coded against, and\r
1311 other informational content.\r
1312 </xs:documentation>\r
1313 </xs:annotation>\r
1314 <xs:complexType>\r
1315 <xs:sequence>\r
1316 <xs:element minOccurs="1" maxOccurs="1" name="ModuleType" type="ModuleTypes">\r
f51461c8 1317 <xs:annotation>\r
cbf14fa0
LH
1318 <xs:documentation xml:lang="en-us">\r
1319 One of the Enumerated module types that limit\r
1320 the use of a module.\r
1321 </xs:documentation>\r
f51461c8 1322 </xs:annotation>\r
cbf14fa0
LH
1323 </xs:element>\r
1324 <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">\r
f51461c8 1325 <xs:annotation>\r
cbf14fa0
LH
1326 <xs:documentation xml:lang="en-us">\r
1327 For stand-alone modules that are NOT part of any\r
1328 package, this is the path to the root of the module as listed in the ZIP file.\r
1329 For modules included in a package, this is the location, relative to the root of\r
1330 the package (PackagePath) this module belongs to.\r
1331 </xs:documentation>\r
f51461c8 1332 </xs:annotation>\r
cbf14fa0
LH
1333 </xs:element>\r
1334 <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">\r
f51461c8 1335 <xs:annotation>\r
cbf14fa0
LH
1336 <xs:documentation xml:lang="en-us">\r
1337 This element is only required for the PEIM that\r
1338 produces the PCD PPI or the DXE Driver that produces the PCD Protocol.\r
1339 </xs:documentation>\r
f51461c8 1340 </xs:annotation>\r
cbf14fa0
LH
1341 <xs:simpleType>\r
1342 <xs:restriction base="xs:NCName">\r
1343 <xs:enumeration value="PEI_PCD_DRIVER"/>\r
1344 <xs:enumeration value="DXE_PCD_DRIVER"/>\r
1345 </xs:restriction>\r
1346 </xs:simpleType>\r
1347 </xs:element>\r
1348\r
1349 <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion" type="xs:decimal"/>\r
1350\r
1351 <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion" type="xs:decimal"/>\r
1352\r
1353 <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">\r
f51461c8 1354 <xs:annotation>\r
cbf14fa0
LH
1355 <xs:documentation xml:lang="en-us">\r
1356 This is a list of other specifications that this\r
1357 module is written against. These entries can be used in #define statements\r
1358 (depending on the build system implementation, they may be autogenerated.)\r
1359 </xs:documentation>\r
f51461c8 1360 </xs:annotation>\r
cbf14fa0
LH
1361 <xs:complexType>\r
1362 <xs:simpleContent>\r
1363 <xs:extension base="xs:NCName">\r
1364 <xs:attribute name="Version" type="xs:decimal" use="required"/>\r
1365 </xs:extension>\r
1366 </xs:simpleContent>\r
1367 </xs:complexType>\r
1368 </xs:element>\r
1369\r
1370 <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">\r
f51461c8 1371 <xs:annotation>\r
cbf14fa0
LH
1372 <xs:documentation xml:lang="en-us">\r
1373 Different firmware execution paths may be taken\r
1374 based on a given state of the hardware, firmware, or through feature settings. A\r
1375 BootMode may be declared (PRODUCES) or discovered (CONSUMES) based on these\r
1376 states and feature settings. If the usage is UNDEFINE, it implies that a Boot\r
1377 Mode is used, but the package creator does not know how it is used. The\r
1378 supported boot modes map to the PI specification Boot Modes. The boot modes\r
1379 listed with Recovery are to indicate that the BootMode is valid during a\r
1380 recovery boot.\r
1381 </xs:documentation>\r
f51461c8 1382 </xs:annotation>\r
cbf14fa0
LH
1383 <xs:complexType>\r
1384 <xs:sequence minOccurs="0">\r
1385 <xs:element minOccurs="1" maxOccurs="1" name="SupportedBootModes">\r
1386 <xs:simpleType>\r
1387 <xs:list>\r
1388 <xs:simpleType>\r
1389 <xs:restriction base="xs:NCName">\r
1390 <xs:enumeration value="FULL"/>\r
1391 <xs:enumeration value="MINIMAL"/>\r
1392 <xs:enumeration value="NO_CHANGE"/>\r
1393 <xs:enumeration value="DIAGNOSTICS"/>\r
1394 <xs:enumeration value="DEFAULT"/>\r
1395 <xs:enumeration value="S2_RESUME"/>\r
1396 <xs:enumeration value="S3_RESUME"/>\r
1397 <xs:enumeration value="S4_RESUME"/>\r
1398 <xs:enumeration value="S5_RESUME"/>\r
1399 <xs:enumeration value="FLASH_UPDATE"/>\r
1400 <xs:enumeration value="RECOVERY_FULL"/>\r
1401 <xs:enumeration value="RECOVERY_MINIMAL"/>\r
1402 <xs:enumeration value="RECOVERY_NO_CHANGE"/>\r
1403 <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>\r
1404 <xs:enumeration value="RECOVERY_DEFAULT"/>\r
1405 <xs:enumeration value="RECOVERY_S2_RESUME"/>\r
1406 <xs:enumeration value="RECOVERY_S3_RESUME"/>\r
1407 <xs:enumeration value="RECOVERY_S4_RESUME"/>\r
1408 <xs:enumeration value="RECOVERY_S5_RESUME"/>\r
1409 <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>\r
1410 <xs:enumeration value="UNDEFINED"/>\r
1411 </xs:restriction>\r
1412 </xs:simpleType>\r
1413 </xs:list>\r
1414 </xs:simpleType>\r
1415 </xs:element>\r
1416\r
1417 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
1418 </xs:sequence>\r
1419 <xs:attribute name="Usage" use="required">\r
1420 <xs:simpleType>\r
1421 <xs:restriction base="xs:NCName">\r
1422 <xs:enumeration value="CONSUMES">\r
1423 <xs:annotation>\r
1424 <xs:documentation xml:lang="en-us">\r
1425 The module always supports\r
1426 the given boot modes.\r
1427 </xs:documentation>\r
1428 </xs:annotation>\r
1429 </xs:enumeration>\r
1430 <xs:enumeration value="SOMETIMES_CONSUMES">\r
1431 <xs:annotation>\r
1432 <xs:documentation xml:lang="en-us">\r
1433 The module may support a\r
1434 given mode on some execution paths.\r
1435 </xs:documentation>\r
1436 </xs:annotation>\r
1437 </xs:enumeration>\r
1438 <xs:enumeration value="PRODUCES">\r
1439 <xs:annotation>\r
1440 <xs:documentation xml:lang="en-us">\r
1441 The module will change the\r
1442 boot mode.\r
1443 </xs:documentation>\r
1444 </xs:annotation>\r
1445 </xs:enumeration>\r
1446 <xs:enumeration value="SOMETIME_PRODUCES">\r
1447 <xs:annotation>\r
1448 <xs:documentation xml:lang="en-us">\r
1449 The module will change the\r
fb0b35e0 1450 boot mode on some execution paths.\r
cbf14fa0
LH
1451 </xs:documentation>\r
1452 </xs:annotation>\r
1453 </xs:enumeration>\r
1454 <xs:enumeration value="UNDEFINED">\r
1455 <xs:annotation>\r
1456 <xs:documentation xml:lang="en-us">\r
1457 The package creator does not\r
1458 know how the boot mode is used.\r
1459 </xs:documentation>\r
1460 </xs:annotation>\r
1461 </xs:enumeration>\r
1462 </xs:restriction>\r
1463 </xs:simpleType>\r
1464 </xs:attribute>\r
1465 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
1466 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
1467 </xs:complexType>\r
1468 </xs:element>\r
1469\r
1470 <xs:element minOccurs="0" maxOccurs="unbounded" name="Event" nillable="true">\r
f51461c8 1471 <xs:annotation>\r
cbf14fa0
LH
1472 <xs:documentation xml:lang="en-us">\r
1473 The functions that make up the Event, Timer, and\r
1474 Task Priority Services are used during preboot to create, close, signal, and\r
1475 wait for events; to set timers; and to raise and restore task priority levels as\r
1476 defined in the UEFI specification. GUIDed events should be listed in the Guids\r
1477 section.\r
1478 </xs:documentation>\r
f51461c8 1479 </xs:annotation>\r
cbf14fa0
LH
1480 <xs:complexType>\r
1481 <xs:sequence>\r
1482 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
1483 </xs:sequence>\r
1484 <xs:attribute name="Usage" use="required">\r
1485 <xs:simpleType>\r
1486 <xs:restriction base="xs:NCName">\r
1487 <xs:enumeration value="CONSUMES">\r
1488 <xs:annotation>\r
1489 <xs:documentation xml:lang="en-us">\r
1490 The module will register a\r
1491 notification function and calls the function when it is\r
1492 signaled.\r
1493 </xs:documentation>\r
1494 </xs:annotation>\r
1495 </xs:enumeration>\r
1496 <xs:enumeration value="SOMETIMES_CONSUMES">\r
1497 <xs:annotation>\r
1498 <xs:documentation xml:lang="en-us">\r
1499 The module will register a\r
1500 notification function and calls the function when it is\r
1501 signaled on some execution paths.\r
1502 </xs:documentation>\r
1503 </xs:annotation>\r
1504 </xs:enumeration>\r
1505 <xs:enumeration value="PRODUCES">\r
1506 <xs:annotation>\r
1507 <xs:documentation xml:lang="en-us">\r
1508 The module will signal all\r
1509 events in an event group.\r
1510 </xs:documentation>\r
1511 </xs:annotation>\r
1512 </xs:enumeration>\r
1513 <xs:enumeration value="SOMETIMES_PRODUCES">\r
1514 <xs:annotation>\r
1515 <xs:documentation xml:lang="en-us">\r
1516 The module will signal all\r
1517 events in an event group under some execution paths.\r
1518 </xs:documentation>\r
1519 </xs:annotation>\r
1520 </xs:enumeration>\r
1521 <xs:enumeration value="UNDEFINED">\r
1522 <xs:annotation>\r
1523 <xs:documentation xml:lang="en-us">\r
1524 The package creator does not\r
1525 know how an event is used.\r
1526 </xs:documentation>\r
1527 </xs:annotation>\r
1528 </xs:enumeration>\r
1529 </xs:restriction>\r
1530 </xs:simpleType>\r
1531 </xs:attribute>\r
1532 <xs:attribute name="EventType" use="required">\r
1533 <xs:simpleType>\r
1534 <xs:restriction base="xs:NCName">\r
1535 <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>\r
1536 <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>\r
1537 <xs:enumeration value="UNDEFINED"/>\r
1538 </xs:restriction>\r
1539 </xs:simpleType>\r
1540\r
1541\r
1542 </xs:attribute>\r
1543 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
1544 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
1545 </xs:complexType>\r
1546 </xs:element>\r
1547\r
1548 <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB" nillable="false">\r
f51461c8 1549 <xs:annotation>\r
cbf14fa0
LH
1550 <xs:documentation xml:lang="en-us">\r
1551 This is a list of non-GUIDed Hand Off Blocks\r
1552 (HOBs) produced or consumed by this module.\r
1553 </xs:documentation>\r
f51461c8 1554 </xs:annotation>\r
cbf14fa0
LH
1555 <xs:complexType>\r
1556 <xs:sequence>\r
1557 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
1558 </xs:sequence>\r
1559 <xs:attribute name="HobType" use="required">\r
1560 <xs:simpleType>\r
1561 <xs:restriction base="xs:NCName">\r
1562 <xs:enumeration value="PHIT"/>\r
1563 <xs:enumeration value="MEMORY_ALLOCATION"/>\r
1564 <xs:enumeration value="RESOURCE_DESCRIPTOR"/>\r
1565 <xs:enumeration value="FIRMWARE_VOLUME"/>\r
1566 <xs:enumeration value="LOAD_PEIM"/>\r
1567 <xs:enumeration value="UNDEFINED"/>\r
1568 </xs:restriction>\r
1569 </xs:simpleType>\r
1570 </xs:attribute>\r
1571 <xs:attribute name="Usage" use="required">\r
1572 <xs:simpleType>\r
1573 <xs:restriction base="xs:NCName">\r
1574 <xs:enumeration value="CONSUMES">\r
1575 <xs:annotation>\r
1576 <xs:documentation xml:lang="en-us">\r
1577 A HOB must be present in the\r
1578 system.\r
1579 </xs:documentation>\r
1580 </xs:annotation>\r
1581 </xs:enumeration>\r
1582 <xs:enumeration value="SOMETIMES_CONSUMES">\r
1583 <xs:annotation>\r
1584 <xs:documentation xml:lang="en-us">\r
1585 If present, the HOB will be\r
1586 used.\r
1587 </xs:documentation>\r
1588 </xs:annotation>\r
1589 </xs:enumeration>\r
1590 <xs:enumeration value="PRODUCES">\r
1591 <xs:annotation>\r
1592 <xs:documentation xml:lang="en-us">\r
1593 The HOB is always produced\r
1594 by the module.\r
1595 </xs:documentation>\r
1596 </xs:annotation>\r
1597 </xs:enumeration>\r
1598 <xs:enumeration value="SOMETIMES_PRODUCES">\r
1599 <xs:annotation>\r
1600 <xs:documentation xml:lang="en-us">\r
1601 The HOB may be produced by\r
1602 the module under some execution paths.\r
1603 </xs:documentation>\r
1604 </xs:annotation>\r
1605 </xs:enumeration>\r
1606 <xs:enumeration value="UNDEFINED">\r
1607 <xs:annotation>\r
1608 <xs:documentation xml:lang="en-us">\r
1609 The package creator knows\r
1610 that a HOB is used, but does not know how it is used.\r
1611 </xs:documentation>\r
1612 </xs:annotation>\r
1613 </xs:enumeration>\r
1614 </xs:restriction>\r
1615 </xs:simpleType>\r
1616 </xs:attribute>\r
1617 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
1618 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
1619 </xs:complexType>\r
1620 </xs:element>\r
1621\r
1622 </xs:sequence>\r
1623 <xs:attributeGroup ref="SupportedArchMod"/>\r
1624 </xs:complexType>\r
1625 </xs:element>\r
1626 <!-- End of ModuleProperties Section -->\r
1627\r
1628 <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
1629 <xs:annotation>\r
1630 <xs:documentation xml:lang="en-us">\r
1631 This section may be included for Modules that are copied\r
1632 from a different module.\r
1633 </xs:documentation>\r
1634 </xs:annotation>\r
1635 <xs:complexType>\r
1636 <xs:sequence>\r
1637 <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
f51461c8 1638 <xs:annotation>\r
cbf14fa0
LH
1639 <xs:documentation xml:lang="en-us">\r
1640 This GUID and the Version attribute uniquely\r
1641 identify the Module that this Module was copied from.\r
1642 </xs:documentation>\r
f51461c8 1643 </xs:annotation>\r
cbf14fa0
LH
1644 <xs:complexType>\r
1645 <xs:simpleContent>\r
1646 <xs:extension base="RegistryFormatGuid">\r
1647 <xs:attribute name="Version" type="xs:decimal" use="required">\r
1648 <xs:annotation>\r
1649 <xs:documentation xml:lang="en-us">\r
1650 This value, along with the GUID,\r
1651 is used to uniquely identify this object.\r
1652 </xs:documentation>\r
1653 </xs:annotation>\r
1654 </xs:attribute>\r
1655 </xs:extension>\r
1656 </xs:simpleContent>\r
1657 </xs:complexType>\r
1658 </xs:element>\r
1659 </xs:sequence>\r
1660 </xs:complexType>\r
1661 </xs:element>\r
1662 <!-- End of ClonedFrom Section. -->\r
1663\r
1664 <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">\r
1665 <xs:annotation>\r
1666 <xs:documentation xml:lang="en-us">\r
1667 A list of the different Library Classes consumed by a\r
1668 driver, core and/or application module, or produced by a Library module.\r
1669 </xs:documentation>\r
1670 </xs:annotation>\r
1671 <xs:complexType>\r
1672 <xs:sequence>\r
1673 <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">\r
1674 <xs:complexType>\r
1675 <xs:sequence>\r
1676 <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="xs:NCName">\r
1677 <xs:annotation>\r
1678 <xs:documentation xml:lang="en-us ">\r
1679 Used by tools to identify different\r
1680 instances of libraries that provide the library class. This keyword\r
1681 identifies the library class this module needs to be linked against.\r
1682 </xs:documentation>\r
1683 </xs:annotation>\r
1684 </xs:element>\r
1685 <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">\r
1686 <xs:complexType>\r
1687 <xs:all>\r
1688 <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
1689 <xs:annotation>\r
1690 <xs:documentation xml:lang="en-us">\r
1691 This GUID and the\r
1692 Version attribute uniquely identify the recommended Library\r
1693 Instance for this module .\r
1694 </xs:documentation>\r
1695 </xs:annotation>\r
1696 <xs:complexType>\r
1697 <xs:simpleContent>\r
1698 <xs:extension base="RegistryFormatGuid">\r
1699 <xs:attribute name="Version" type="xs:decimal"\r
1700 use="optional">\r
1701 <xs:annotation>\r
1702 <xs:documentation xml:lang="en-us">\r
1703 This value, along with\r
1704 the GUID, is used to uniquely identify this object.\r
1705 </xs:documentation>\r
1706 </xs:annotation>\r
1707 </xs:attribute>\r
1708 </xs:extension>\r
1709 </xs:simpleContent>\r
1710 </xs:complexType>\r
1711 </xs:element>\r
1712 </xs:all>\r
1713 </xs:complexType>\r
1714 </xs:element>\r
1715 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
1716 </xs:sequence>\r
1717 <xs:attribute name="Usage" use="required">\r
1718 <xs:simpleType>\r
1719 <xs:annotation>\r
1720 <xs:documentation xml:lang="en-us">\r
1721 Library instances can provide code\r
1722 for a library class, or may require other library instances\r
1723 themselves. Since different execution paths in a library (or module)\r
1724 may need different library classes based on some setting, library\r
1725 classes may not alway be required.\r
1726 </xs:documentation>\r
1727 </xs:annotation>\r
1728 <xs:restriction base="xs:NCName">\r
1729 <xs:enumeration value="PRODUCES"/>\r
1730 <xs:enumeration value="CONSUMES"/>\r
1731 <xs:enumeration value="SOMETIMES_CONSUMES"/>\r
1732 <xs:enumeration value="UNDEFINED"/>\r
1733 </xs:restriction>\r
1734 </xs:simpleType>\r
1735 </xs:attribute>\r
1736\r
1737 <xs:attributeGroup ref="SupportedArchMod"/>\r
1738 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional">\r
1739 <xs:annotation>\r
1740 <xs:documentation xml:lang="en-us">\r
1741 A FeatureFlag attribute must evaluate to\r
1742 either true or false - it may be a fixed value of true or false, a C\r
1743 name or an in-fix expression.\r
1744 </xs:documentation>\r
1745 </xs:annotation>\r
1746 </xs:attribute>\r
1747 </xs:complexType>\r
1748 </xs:element>\r
1749 </xs:sequence>\r
1750 </xs:complexType>\r
1751 </xs:element>\r
1752 <!-- End of LibraryClassDefinitions Section -->\r
f51461c8 1753\r
cbf14fa0
LH
1754 <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">\r
1755 <xs:complexType>\r
1756 <xs:sequence>\r
1757 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
f51461c8 1758 <xs:annotation>\r
cbf14fa0
LH
1759 <xs:documentation xml:lang="en-us">\r
1760 This is the module relative\r
1761 (ModuleProperties.Path) path and filename location within the ZIP file.\r
1762 </xs:documentation>\r
f51461c8 1763 </xs:annotation>\r
cbf14fa0
LH
1764 <xs:complexType>\r
1765 <xs:simpleContent>\r
1766 <xs:extension base="xs:anyURI">\r
1767 <xs:attribute name="Family" type="FamilyTypes" use="optional">\r
1768 <xs:annotation>\r
1769 <xs:documentation xml:lang="en-us">\r
1770 The Family attribute is used to\r
1771 restrict usage to a given family of compilers, such as GCC or\r
1772 MSFT. Since not all code processing tools use the same syntax,\r
1773 especially for assembly, this field can be used to identify\r
1774 different syntax.\r
1775 </xs:documentation>\r
1776 </xs:annotation>\r
1777 </xs:attribute>\r
1778 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
1779 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
1780 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
1781 </xs:extension>\r
1782 </xs:simpleContent>\r
1783 </xs:complexType>\r
1784 </xs:element>\r
1785 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
1786 </xs:sequence>\r
1787 </xs:complexType>\r
1788 </xs:element>\r
1789 <!-- End of SourceFiles Section -->\r
1790\r
1791 <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">\r
1792 <xs:complexType>\r
1793 <xs:sequence>\r
1794 <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">\r
1795 <xs:complexType>\r
1796 <xs:sequence>\r
1797 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
1798 <xs:annotation>\r
1799 <xs:documentation xml:lang="en-us">\r
1800 This is the module relative\r
1801 (ModuleProperties.Path) path and filename location within the ZIP\r
1802 file.\r
1803 </xs:documentation>\r
1804 </xs:annotation>\r
1805 <xs:complexType>\r
1806 <xs:simpleContent>\r
1807 <xs:extension base="xs:anyURI">\r
1808 <xs:attribute name="FileType" use="optional">\r
1809 <xs:simpleType>\r
1810 <xs:restriction base="xs:NCName">\r
1811 <xs:annotation>\r
1812 <xs:documentation xml:lang="en-us">\r
1813 Binary file distribution\r
1814 is limited to UEFI/PI FFS leaf section file types.\r
1815 </xs:documentation>\r
1816 </xs:annotation>\r
1817 <xs:enumeration value="GUID"/>\r
1818 <xs:enumeration value="FREEFORM"/>\r
1819 <xs:enumeration value="UEFI_IMAGE"/>\r
1820 <xs:enumeration value="PE32">\r
1821 <xs:annotation>\r
1822 <xs:documentation xml:lang="en-us">\r
1823 A UEFI/PI FFS Leaf\r
1824 section file type, not a raw PE32 file.\r
1825 </xs:documentation>\r
1826 </xs:annotation>\r
1827 </xs:enumeration>\r
1828 <xs:enumeration value="PIC"/>\r
1829 <xs:enumeration value="PEI_DEPEX"/>\r
1830 <xs:enumeration value="DXE_DEPEX"/>\r
1831 <xs:enumeration value="SMM_DEPEX"/>\r
1832 <xs:enumeration value="COMPAT16"/>\r
1833 <xs:enumeration value="DISPOSABLE"/>\r
1834 <xs:enumeration value="TE"/>\r
1835 <xs:enumeration value="VER"/>\r
1836 <xs:enumeration value="UI"/>\r
1837 <xs:enumeration value="BIN"/>\r
1838 <xs:enumeration value="FV"/>\r
1839 </xs:restriction>\r
1840 </xs:simpleType>\r
1841 </xs:attribute>\r
1842 <xs:attribute name="GUID" use="optional"\r
1843 type="RegistryFormatGuid"/>\r
1844 <xs:attribute name="SupArchList" type="ArchListType"\r
1845 use="optional"/>\r
1846 <xs:attribute name="SupModList" type="ModuleListType"\r
1847 use="optional"/>\r
1848 <xs:attribute name="FeatureFlag" type="xs:normalizedString"\r
1849 use="optional"/>\r
1850 </xs:extension>\r
1851 </xs:simpleContent>\r
1852 </xs:complexType>\r
1853 </xs:element>\r
1854 <xs:element minOccurs="0" maxOccurs="unbounded" name="AsBuilt">\r
1855 <xs:annotation>\r
1856 <xs:documentation xml:lang="en-us">\r
1857 This section contains information\r
1858 about how the module was coded, such as Compiler Tools, Flags, PCDs\r
1859 (only PatchPcd and/or PcdEx) and Library Class Instances used to\r
1860 build the binary.\r
1861 </xs:documentation>\r
1862 </xs:annotation>\r
1863 <xs:complexType>\r
1864 <xs:sequence>\r
1865\r
1866 <xs:element minOccurs="0" maxOccurs="unbounded" name="PatchPcdValue">\r
1867 <xs:annotation>\r
1868 <xs:documentation xml:lang="en-us">\r
1869 The element is the\r
1870 Patchable PCD Value that was used during the build.\r
1871 </xs:documentation>\r
1872 </xs:annotation>\r
1873 <xs:complexType>\r
1874 <xs:sequence>\r
1875 <xs:element minOccurs="1" maxOccurs="1"\r
1876 name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>\r
1877 <xs:element minOccurs="1" maxOccurs="1" name="PcdCName"\r
1878 type="xs:NCName"/>\r
1879 <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
1880 <xs:annotation>\r
1881 <xs:documentation xml:lang="en-us">\r
1882 The minLength of 3 is\r
1883 required to handle the "0x" prefix to the hex number.\r
1884 </xs:documentation>\r
1885 </xs:annotation>\r
1886 <xs:simpleType>\r
1887 <xs:restriction base="HexNumber">\r
1888 <xs:minLength value="3"/>\r
1889 <xs:maxLength value="10"/>\r
1890 </xs:restriction>\r
1891 </xs:simpleType>\r
1892 </xs:element>\r
1893 <xs:element minOccurs="1" maxOccurs="1" name="DatumType"\r
1894 type="PcdDatumTypes"/>\r
1895 <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">\r
1896 <xs:annotation>\r
1897 <xs:documentation xml:lang="en-us">\r
1898 This field is required\r
1899 if the Pcd Datum Type is VOID*\r
1900 </xs:documentation>\r
1901 <xs:documentation xml:lang="en-us">\r
1902 The minLength of 3 is\r
1903 required to handle the "0x" prefix to the hex number.\r
1904 </xs:documentation>\r
1905 </xs:annotation>\r
1906 <xs:simpleType>\r
1907 <xs:restriction base="HexNumber">\r
1908 <xs:minLength value="3"/>\r
1909 </xs:restriction>\r
1910 </xs:simpleType>\r
1911 </xs:element>\r
1912 <xs:element minOccurs="1" maxOccurs="1" name="Value"\r
1913 type="xs:normalizedString"/>\r
1914 <xs:element minOccurs="1" maxOccurs="1" name="Offset">\r
1915 <xs:annotation>\r
1916 <xs:documentation xml:lang="en-us">\r
1917 The minLength of 3 is\r
1918 required to handle the "0x" prefix to the hex number.\r
1919 </xs:documentation>\r
1920 </xs:annotation>\r
1921 <xs:simpleType>\r
1922 <xs:restriction base="HexNumber">\r
1923 <xs:minLength value="3"/>\r
1924 </xs:restriction>\r
1925 </xs:simpleType>\r
1926 </xs:element>\r
1927 <xs:element ref="HelpText" minOccurs="0"\r
1928 maxOccurs="unbounded"/>\r
1929 <xs:element minOccurs="0" maxOccurs="unbounded"\r
1930 name="PcdError">\r
1931 <xs:annotation>\r
1932 <xs:documentation xml:lang="en-us">\r
1933 Error information\r
1934 implemented by the module.\r
1935 </xs:documentation>\r
1936 </xs:annotation>\r
1937 <xs:complexType>\r
1938 <xs:sequence>\r
1939 <xs:choice>\r
1940 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">\r
1941 <xs:complexType>\r
1942 <xs:simpleContent>\r
1943 <xs:extension base="xs:normalizedString">\r
1944 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
1945 </xs:extension>\r
1946 </xs:simpleContent>\r
1947 </xs:complexType>\r
1948 </xs:element>\r
1949 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>\r
1950 <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>\r
1951 </xs:choice>\r
1952 <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">\r
1953 <xs:annotation>\r
1954 <xs:documentation xml:lang="en-us">\r
1955 The minLength of 3 is\r
1956 required to handle the "0x" prefix to the hex number.\r
1957 </xs:documentation>\r
1958 </xs:annotation>\r
1959 <xs:simpleType>\r
1960 <xs:restriction base="HexNumber">\r
1961 <xs:minLength value="3"/>\r
1962 </xs:restriction>\r
1963 </xs:simpleType>\r
1964 </xs:element>\r
1965 <xs:element minOccurs="0" maxOccurs="unbounded"\r
1966 name="ErrorMessage">\r
1967 <xs:complexType>\r
1968 <xs:simpleContent>\r
1969 <xs:extension base="xs:string">\r
1970 <xs:attribute name="Lang" type="xs:language" default="en-us"\r
1971 use="optional"/>\r
1972 </xs:extension>\r
1973 </xs:simpleContent>\r
1974 </xs:complexType>\r
1975 </xs:element>\r
1976 </xs:sequence>\r
1977 </xs:complexType>\r
1978 </xs:element>\r
1979 </xs:sequence>\r
1980 </xs:complexType>\r
1981 </xs:element>\r
1982\r
1983 <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdExValue">\r
1984 <xs:annotation>\r
1985 <xs:documentation xml:lang="en-us">\r
1986 The element is the\r
1987 DynamicEx PCD Value that was used during the build.\r
1988 </xs:documentation>\r
1989 </xs:annotation>\r
1990 <xs:complexType>\r
1991 <xs:sequence>\r
1992 <xs:element minOccurs="1" maxOccurs="1"\r
1993 name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>\r
1994 <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
1995 <xs:annotation>\r
1996 <xs:documentation xml:lang="en-us">\r
1997 The minLength of 3 is\r
1998 required to handle the "0x" prefix to the hex number.\r
1999 </xs:documentation>\r
2000 </xs:annotation>\r
2001 <xs:simpleType>\r
2002 <xs:restriction base="HexNumber">\r
2003 <xs:minLength value="3"/>\r
2004 <xs:maxLength value="10"/>\r
2005 </xs:restriction>\r
2006 </xs:simpleType>\r
2007 </xs:element>\r
2008 <xs:element minOccurs="1" maxOccurs="1" name="DatumType"\r
2009 type="PcdDatumTypes"/>\r
2010 <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">\r
2011 <xs:annotation>\r
2012 <xs:documentation xml:lang="en-us">\r
2013 This field is required\r
2014 if the Pcd Datum Type is VOID*\r
2015 </xs:documentation>\r
2016 </xs:annotation>\r
2017 <xs:simpleType>\r
2018 <xs:restriction base="HexNumber">\r
2019 <xs:minLength value="3"/>\r
2020 </xs:restriction>\r
2021 </xs:simpleType>\r
2022 </xs:element>\r
2023 <xs:element minOccurs="1" maxOccurs="1" name="Value"\r
2024 type="xs:normalizedString"/>\r
2025 <xs:element ref="HelpText" minOccurs="0"\r
2026 maxOccurs="unbounded"/>\r
2027 <xs:element minOccurs="0" maxOccurs="unbounded"\r
2028 name="PcdError">\r
2029 <xs:annotation>\r
2030 <xs:documentation xml:lang="en-us">\r
2031 Error information\r
2032 implemented by the module.\r
2033 </xs:documentation>\r
2034 </xs:annotation>\r
2035 <xs:complexType>\r
2036 <xs:sequence>\r
2037 <xs:choice>\r
2038 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">\r
2039 <xs:complexType>\r
2040 <xs:simpleContent>\r
2041 <xs:extension base="xs:normalizedString">\r
2042 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
2043 </xs:extension>\r
2044 </xs:simpleContent>\r
2045 </xs:complexType>\r
2046 </xs:element>\r
2047 <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>\r
2048 <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>\r
2049 </xs:choice>\r
2050 <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">\r
2051 <xs:annotation>\r
2052 <xs:documentation xml:lang="en-us">\r
2053 The minLength of 3 is\r
2054 required to handle the "0x" prefix to the hex number.\r
2055 </xs:documentation>\r
2056 </xs:annotation>\r
2057 <xs:simpleType>\r
2058 <xs:restriction base="HexNumber">\r
2059 <xs:minLength value="3"/>\r
2060 </xs:restriction>\r
2061 </xs:simpleType>\r
2062 </xs:element>\r
2063 <xs:element minOccurs="0" maxOccurs="unbounded"\r
2064 name="ErrorMessage">\r
2065 <xs:complexType>\r
2066 <xs:simpleContent>\r
2067 <xs:extension base="xs:string">\r
2068 <xs:attribute name="Lang" type="xs:language" default="en-us"\r
2069 use="optional"/>\r
2070 </xs:extension>\r
2071 </xs:simpleContent>\r
2072 </xs:complexType>\r
2073 </xs:element>\r
2074 </xs:sequence>\r
2075 </xs:complexType>\r
2076 </xs:element>\r
2077 </xs:sequence>\r
2078 </xs:complexType>\r
2079 </xs:element>\r
2080\r
2081 <xs:element minOccurs="0" maxOccurs="1" name="LibraryInstances">\r
2082 <xs:annotation>\r
2083 <xs:documentation xml:lang="en-us">\r
2084 This is the actual\r
2085 library instance that was used to link against the module.\r
2086 </xs:documentation>\r
2087 </xs:annotation>\r
2088 <xs:complexType>\r
2089 <xs:sequence>\r
2090 <xs:element minOccurs="1" maxOccurs="unbounded" name="GUID">\r
2091 <xs:annotation>\r
2092 <xs:documentation xml:lang="en-us">\r
2093 This GUID and the\r
2094 Version attribute uniquely identify the actual Library\r
2095 Instance linked in this module.\r
2096 </xs:documentation>\r
2097 </xs:annotation>\r
2098 <xs:complexType>\r
2099 <xs:simpleContent>\r
2100 <xs:extension base="RegistryFormatGuid">\r
2101 <xs:attribute name="Version" type="xs:decimal"\r
2102 use="required">\r
2103 <xs:annotation>\r
2104 <xs:documentation xml:lang="en-us">\r
2105 This value, along with\r
2106 the GUID, is used to uniquely identify this object.\r
2107 </xs:documentation>\r
2108 </xs:annotation>\r
2109 </xs:attribute>\r
2110 </xs:extension>\r
2111 </xs:simpleContent>\r
2112 </xs:complexType>\r
2113 </xs:element>\r
2114 </xs:sequence>\r
2115 </xs:complexType>\r
2116 </xs:element>\r
2117\r
2118 <xs:element minOccurs="0" maxOccurs="unbounded" name="BuildFlags">\r
2119 <xs:complexType mixed="true">\r
2120 <xs:simpleContent>\r
2121 <xs:annotation>\r
2122 <xs:documentation xml:lang="en-us">\r
2123 Any description of OS,\r
2124 Tool, and flags for the individual tool can go in this\r
2125 section.\r
2126 </xs:documentation>\r
2127 </xs:annotation>\r
2128 <xs:extension base="xs:string">\r
2129 <xs:anyAttribute processContents="lax"/>\r
2130 </xs:extension>\r
2131 </xs:simpleContent>\r
2132 </xs:complexType>\r
2133 </xs:element>\r
2134 </xs:sequence>\r
2135 </xs:complexType>\r
2136 </xs:element>\r
2137 <!-- End of AsBuilt -->\r
2138 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
2139 </xs:sequence>\r
2140 </xs:complexType>\r
2141 </xs:element>\r
2142\r
2143 </xs:sequence>\r
2144 </xs:complexType>\r
2145 </xs:element>\r
2146 <!-- End of BinaryFiles Section -->\r
2147\r
2148 <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">\r
2149 <xs:complexType>\r
2150 <xs:sequence>\r
2151 <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">\r
2152 <xs:complexType>\r
2153 <xs:sequence>\r
2154 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
2155 <xs:complexType>\r
2156 <xs:simpleContent>\r
2157 <xs:extension base="xs:string">\r
2158 <xs:attribute name="Lang" type="xs:language" default="en-us"\r
2159 use="optional"/>\r
2160 </xs:extension>\r
2161 </xs:simpleContent>\r
2162 </xs:complexType>\r
2163 </xs:element>\r
2164 <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
2165 <xs:annotation>\r
2166 <xs:documentation xml:lang="en-us">\r
2167 This GUID and the Version attribute\r
2168 uniquely identify Package that this Module depends on.\r
2169 </xs:documentation>\r
2170 </xs:annotation>\r
2171 <xs:complexType>\r
2172 <xs:simpleContent>\r
2173 <xs:extension base="RegistryFormatGuid">\r
2174 <xs:attribute name="Version" type="xs:decimal" use="optional">\r
2175 <xs:annotation>\r
2176 <xs:documentation xml:lang="en-us">\r
2177 This value, along with\r
2178 the GUID, is used to uniquely identify this object. If the\r
2179 version attribute is not specified, the most recent version\r
2180 of the package can be used.\r
2181 </xs:documentation>\r
2182 </xs:annotation>\r
2183 </xs:attribute>\r
2184 </xs:extension>\r
2185 </xs:simpleContent>\r
2186 </xs:complexType>\r
2187 </xs:element>\r
2188 </xs:sequence>\r
2189 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2190 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2191 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
2192 </xs:complexType>\r
2193 </xs:element>\r
2194 </xs:sequence>\r
2195 </xs:complexType>\r
2196 </xs:element>\r
2197 <!-- End of PackageDependencies -->\r
2198\r
2199 <xs:element minOccurs="0" maxOccurs="1" name="Guids">\r
2200 <xs:complexType>\r
2201 <xs:sequence>\r
2202 <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">\r
2203 <xs:complexType>\r
2204 <xs:sequence>\r
2205 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
2206 <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>\r
2207 <xs:element minOccurs="0" maxOccurs="1" name="VariableName"\r
2208 type="xs:normalizedString">\r
2209 <xs:annotation>\r
2210 <xs:documentation xml:lang="en-us"> Only valid for Variable GUID types. </xs:documentation>\r
2211 <xs:documentation>\r
2212 This can be either a Hex Array or C string in unicode\r
2213 format: L"string" Data.\r
2214 </xs:documentation>\r
2215 </xs:annotation>\r
2216 </xs:element>\r
2217 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
2218 </xs:sequence>\r
2219 <xs:attribute name="Usage" use="required">\r
2220 <xs:simpleType>\r
2221 <xs:restriction base="xs:NCName">\r
2222 <xs:enumeration value="CONSUMES">\r
2223 <xs:annotation>\r
2224 <xs:documentation xml:lang="en-us">\r
2225 The module does not install\r
2226 the GUID, and the GUID must be present for the module to\r
2227 execute.\r
2228 </xs:documentation>\r
2229 </xs:annotation>\r
2230 </xs:enumeration>\r
2231 <xs:enumeration value="SOMETIMES_CONSUMES">\r
2232 <xs:annotation>\r
2233 <xs:documentation xml:lang="en-us">\r
2234 The module does not install\r
2235 the GUID, however, the GUID will be used if it is present.\r
2236 </xs:documentation>\r
2237 </xs:annotation>\r
2238 </xs:enumeration>\r
2239 <xs:enumeration value="PRODUCES">\r
2240 <xs:annotation>\r
2241 <xs:documentation xml:lang="en-us">\r
2242 The module always installs\r
2243 the GUID.\r
2244 </xs:documentation>\r
2245 </xs:annotation>\r
2246 </xs:enumeration>\r
2247 <xs:enumeration value="SOMETIMES_PRODUCES">\r
2248 <xs:annotation>\r
2249 <xs:documentation xml:lang="en-us">\r
2250 The Module will install the\r
2251 GUID under certain execution paths.\r
2252 </xs:documentation>\r
2253 </xs:annotation>\r
2254 </xs:enumeration>\r
2255 <xs:enumeration value="UNDEFINED">\r
2256 <xs:annotation>\r
2257 <xs:documentation xml:lang="en-us">\r
2258 The package creator knows\r
2259 that a GUID is used, but does not know how it is used.\r
2260 </xs:documentation>\r
2261 </xs:annotation>\r
2262 </xs:enumeration>\r
2263 </xs:restriction>\r
2264 </xs:simpleType>\r
2265 </xs:attribute>\r
2266 <xs:attribute name="GuidType" type="GuidListType" use="required"/>\r
2267 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2268 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2269 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
2270 </xs:complexType>\r
2271 </xs:element>\r
2272 </xs:sequence>\r
2273 </xs:complexType>\r
2274 </xs:element>\r
2275 <!-- End of Guids Section -->\r
2276\r
2277 <xs:element minOccurs="0" maxOccurs="1" name="Protocols">\r
2278 <xs:annotation>\r
2279 <xs:documentation xml:lang="en-us">\r
2280 A listing of protocols required or produced by this module.\r
2281 </xs:documentation>\r
2282 </xs:annotation>\r
2283 <xs:complexType>\r
2284 <xs:sequence>\r
2285 <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol" nillable="true">\r
2286 <xs:complexType>\r
2287 <xs:sequence>\r
2288 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
2289 <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>\r
2290 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
2291 </xs:sequence>\r
2292 <xs:attribute name="Usage" use="required">\r
2293 <xs:simpleType>\r
2294 <xs:restriction base="xs:NCName">\r
2295 <xs:enumeration value="PRODUCES"/>\r
2296 <xs:enumeration value="SOMETIMES_PRODUCES"/>\r
2297 <xs:enumeration value="CONSUMES"/>\r
2298 <xs:enumeration value="SOMETIMES_CONSUMES"/>\r
2299 <xs:enumeration value="TO_START"/>\r
2300 <xs:enumeration value="BY_START"/>\r
2301 <xs:enumeration value="UNDEFINED"/>\r
2302 </xs:restriction>\r
2303 </xs:simpleType>\r
2304 </xs:attribute>\r
2305 <xs:attribute name="Notify" type="xs:boolean" use="optional"/>\r
2306 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2307 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2308 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
2309 </xs:complexType>\r
2310 </xs:element>\r
2311 </xs:sequence>\r
2312 </xs:complexType>\r
2313 </xs:element>\r
2314 <!-- End of Protocols Section -->\r
2315\r
2316 <xs:element minOccurs="0" maxOccurs="1" name="PPIs">\r
2317 <xs:annotation>\r
2318 <xs:documentation xml:lang="en-us">\r
2319 A listing of PPIs required or produced by this module.\r
2320 </xs:documentation>\r
2321 </xs:annotation>\r
2322 <xs:complexType>\r
2323 <xs:sequence>\r
2324 <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi" nillable="true">\r
2325 <xs:complexType>\r
2326 <xs:sequence>\r
2327 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
2328 <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>\r
2329 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
2330 </xs:sequence>\r
2331 <xs:attribute name="Usage" use="required">\r
2332 <xs:simpleType>\r
2333 <xs:restriction base="xs:NCName">\r
2334 <xs:enumeration value="PRODUCES"/>\r
2335 <xs:enumeration value="SOMETIMES_PRODUCES"/>\r
2336 <xs:enumeration value="CONSUMES"/>\r
2337 <xs:enumeration value="SOMETIMES_CONSUMES"/>\r
2338 <xs:enumeration value="UNDEFINED"/>\r
2339 </xs:restriction>\r
2340 </xs:simpleType>\r
2341 </xs:attribute>\r
2342 <xs:attribute name="Notify" type="xs:boolean" use="optional"/>\r
2343 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2344 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2345 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
2346 </xs:complexType>\r
2347 </xs:element>\r
2348 </xs:sequence>\r
2349 </xs:complexType>\r
2350 </xs:element>\r
2351 <!-- End of PPIs Section -->\r
2352\r
2353 <xs:element minOccurs="0" maxOccurs="1" name="Externs">\r
2354 <xs:annotation>\r
2355 <xs:documentation xml:lang="en-us">\r
2356 These elements specify additional information about the\r
2357 module. This area may be used by tools to generate code.\r
2358 </xs:documentation>\r
2359 </xs:annotation>\r
2360 <xs:complexType>\r
2361 <xs:sequence>\r
2362 <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">\r
2363 <xs:complexType>\r
2364 <xs:sequence>\r
2365 <xs:choice minOccurs="1">\r
2366 <xs:sequence>\r
2367 <xs:element minOccurs="0" maxOccurs="1" name="EntryPoint"\r
2368 type="xs:NCName"/>\r
2369 <xs:element minOccurs="0" maxOccurs="1" name="UnloadImage"\r
2370 type="xs:NCName"/>\r
2371 </xs:sequence>\r
2372 <xs:sequence>\r
2373 <xs:element minOccurs="0" maxOccurs="1" name="Constructor"\r
2374 type="xs:NCName"/>\r
2375 <xs:element minOccurs="0" maxOccurs="1" name="Destructor"\r
2376 type="xs:NCName"/>\r
2377 </xs:sequence>\r
2378 </xs:choice>\r
2379 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>\r
2380 </xs:sequence>\r
2381 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2382 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2383 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
2384 </xs:complexType>\r
2385 </xs:element>\r
2386 </xs:sequence>\r
2387 </xs:complexType>\r
2388 </xs:element>\r
2389 <!-- End of Externs Section -->\r
2390\r
2391 <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">\r
2392 <xs:annotation>\r
2393 <xs:documentation xml:lang="en-us">\r
2394 This section describes how a platform is coded with respect\r
2395 to the platform configuration knobs.\r
2396 </xs:documentation>\r
2397 </xs:annotation>\r
2398 <xs:complexType>\r
2399 <xs:sequence>\r
2400 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">\r
2401 <xs:complexType>\r
2402 <xs:sequence>\r
2403 <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
2404 <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName"\r
2405 type="xs:NCName"/>\r
2406 <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"\r
2407 type="xs:normalizedString"/>\r
2408 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
2409 </xs:sequence>\r
2410 <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>\r
2411 <xs:attribute name="PcdUsage" use="required">\r
2412 <xs:simpleType>\r
2413 <xs:restriction base="xs:NCName">\r
2414 <xs:enumeration value="PRODUCES"/>\r
2415 <xs:enumeration value="SOMETIMES_PRODUCES"/>\r
2416 <xs:enumeration value="CONSUMES"/>\r
2417 <xs:enumeration value="SOMETIMES_CONSUMES"/>\r
2418 <xs:enumeration value="UNDEFINED"/>\r
2419 </xs:restriction>\r
2420 </xs:simpleType>\r
2421\r
2422\r
2423 </xs:attribute>\r
2424 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2425 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2426 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
2427 </xs:complexType>\r
2428 </xs:element>\r
2429 </xs:sequence>\r
2430 </xs:complexType>\r
2431 </xs:element>\r
2432 <!-- End of PcdCoded Section -->\r
2433\r
2434 <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">\r
2435 <xs:annotation>\r
2436 <xs:documentation xml:lang="en-us">\r
2437 This is the PEI dependency expression for a Dependency\r
2438 Section.\r
2439 </xs:documentation>\r
2440 </xs:annotation>\r
2441 <xs:complexType>\r
2442 <xs:sequence>\r
2443 <xs:element name="Expression" type="xs:string" minOccurs="1" maxOccurs="1">\r
f51461c8 2444 <xs:annotation>\r
cbf14fa0
LH
2445 <xs:documentation xml:lang="en-us">\r
2446 An in-fix expression, of C identifiers and TRUE,\r
2447 FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix\r
2448 notation. The operators are restricted to grammar defined in the PI\r
2449 specification.\r
2450 </xs:documentation>\r
f51461c8 2451 </xs:annotation>\r
cbf14fa0
LH
2452 </xs:element>\r
2453 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>\r
2454 </xs:sequence>\r
2455 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2456 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2457 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
2458 </xs:complexType>\r
2459 </xs:element>\r
2460 <!-- End of PeiDepex Section -->\r
2461\r
2462 <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">\r
2463 <xs:annotation>\r
2464 <xs:documentation xml:lang="en-us">\r
2465 This is the DXE dependency expression for a Dependency\r
2466 Section.\r
2467 </xs:documentation>\r
2468 </xs:annotation>\r
2469 <xs:complexType>\r
2470 <xs:sequence>\r
2471 <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">\r
f51461c8 2472 <xs:annotation>\r
cbf14fa0
LH
2473 <xs:documentation xml:lang="en-us">\r
2474 An in-fix expression, of C identifiers and TRUE,\r
2475 FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix\r
2476 notation. The operators are restricted to grammar defined in the PI\r
2477 specification.\r
2478 </xs:documentation>\r
f51461c8 2479 </xs:annotation>\r
cbf14fa0
LH
2480 </xs:element>\r
2481 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>\r
2482 </xs:sequence>\r
2483 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2484 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2485 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
2486 </xs:complexType>\r
2487 </xs:element>\r
2488 <!-- End of DxeDepex Section -->\r
2489\r
2490 <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">\r
2491 <xs:annotation>\r
2492 <xs:documentation xml:lang="en-us">\r
2493 This is the SMM dependency expression for a Dependency\r
2494 Section.\r
2495 </xs:documentation>\r
2496 </xs:annotation>\r
2497 <xs:complexType>\r
2498 <xs:sequence>\r
2499 <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">\r
f51461c8 2500 <xs:annotation>\r
cbf14fa0
LH
2501 <xs:documentation xml:lang="en-us">\r
2502 An in-fix expression, of C identifiers and TRUE,\r
2503 FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix\r
2504 notation. The operators are restricted to grammar defined in the PI\r
2505 specification.\r
2506 </xs:documentation>\r
f51461c8 2507 </xs:annotation>\r
cbf14fa0
LH
2508 </xs:element>\r
2509 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>\r
2510 </xs:sequence>\r
2511 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2512 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2513 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
2514 </xs:complexType>\r
2515 </xs:element>\r
2516 <!-- End of SmmDepex Section -->\r
2517\r
2518\r
2519 <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">\r
2520 <xs:annotation>\r
2521 <xs:documentation xml:lang="en-us">\r
2522 This section is used to provide comments and/or list\r
2523 auxiliary files, such as pdb or map files.\r
2524 </xs:documentation>\r
2525 </xs:annotation>\r
2526 <xs:complexType>\r
2527 <xs:sequence>\r
2528 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
2529 <xs:complexType>\r
2530 <xs:simpleContent>\r
2531 <xs:extension base="xs:string">\r
2532 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
2533 />\r
2534 </xs:extension>\r
2535 </xs:simpleContent>\r
2536 </xs:complexType>\r
2537 </xs:element>\r
2538 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
f51461c8 2539 <xs:annotation>\r
cbf14fa0
LH
2540 <xs:documentation xml:lang="en-us">\r
2541 This is the path and filename location within\r
2542 the ZIP file.\r
2543 </xs:documentation>\r
f51461c8 2544 </xs:annotation>\r
cbf14fa0
LH
2545 <xs:complexType>\r
2546 <xs:simpleContent>\r
2547 <xs:extension base="xs:anyURI">\r
2548 <xs:attribute name="Executable" type="xs:boolean" default="false"\r
2549 use="optional">\r
2550 <xs:annotation>\r
2551 <xs:documentation xml:lang="en-us">\r
2552 If true, used by installation\r
2553 tools to ensure that a file that must be executable has the\r
2554 correct properties to permit execution.\r
2555 </xs:documentation>\r
2556 </xs:annotation>\r
2557 </xs:attribute>\r
2558 </xs:extension>\r
2559 </xs:simpleContent>\r
2560 </xs:complexType>\r
2561 </xs:element>\r
2562 </xs:sequence>\r
2563 </xs:complexType>\r
2564 </xs:element>\r
2565 <!-- End of Module Surface Area Misc Section -->\r
2566\r
2567 <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">\r
2568 <xs:annotation>\r
2569 <xs:documentation xml:lang="en-us">\r
2570 This section is used for any processing instructions that\r
2571 may be custom to the content provided by the distribution that are common to module.\r
2572 </xs:documentation>\r
2573 <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>\r
2574 <xs:documentation xml:lang="en-us">\r
2575 The content can be plain text as well as any user-defined,\r
2576 properly formatted XML structure.\r
2577 </xs:documentation>\r
2578 </xs:annotation>\r
2579 <xs:complexType mixed="true">\r
2580 <xs:attribute name="UserId" type="xs:NCName" use="required">\r
2581 <xs:annotation>\r
2582 <xs:documentation xml:lang="en-us">\r
2583 This is a single word identifier for grouping\r
2584 similar content. For example, ReferenceBuild might be used to identify non-PI\r
2585 compliant build steps, with two different UserExtensions sections, one with an\r
2586 Identifier of Prebuild, and another of PostBuild. Both UserExtensions sections would\r
2587 use the same UserId.\r
2588 </xs:documentation>\r
2589 </xs:annotation>\r
2590 </xs:attribute>\r
2591 <xs:attribute name="Identifier" type="xs:string" use="required">\r
2592 <xs:annotation>\r
2593 <xs:documentation xml:lang="en-us">\r
2594 This can be any string used to differentiate or\r
2595 identify this section from other UserExtensions sections.\r
2596 </xs:documentation>\r
2597 <xs:documentation xml:lang="en-us">\r
2598 For example, a PRE_PROCESS Identifier might indicate\r
2599 specific steps and tools required before processing module content, while a\r
2600 different UserExtensions section with a POST_PROCESS Identifier might describe steps\r
2601 that need to be executed after operations on this module.\r
2602 </xs:documentation>\r
2603 </xs:annotation>\r
2604 </xs:attribute>\r
2605 <xs:anyAttribute processContents="lax"/>\r
2606 </xs:complexType>\r
2607 </xs:element>\r
2608 <!-- End of Module Surface Area UserExtensions Section -->\r
f51461c8 2609\r
cbf14fa0
LH
2610 </xs:sequence>\r
2611 <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">\r
f51461c8 2612 <xs:annotation>\r
cbf14fa0
LH
2613 <xs:documentation xml:lang="en-us">\r
2614 This attribute is used when the binaries are distributed for\r
2615 this module and no code generation from source files is required. If set, then the BinaryFiles\r
2616 section should be used, and any files listed in the SourceFiles section do not have to be built.\r
2617 Additionally, the AsBuilt section for each binary file must be included.\r
2618 </xs:documentation>\r
f51461c8 2619 </xs:annotation>\r
cbf14fa0
LH
2620 </xs:attribute>\r
2621 </xs:complexType>\r
f51461c8 2622\r
cbf14fa0
LH
2623 </xs:element>\r
2624 <!-- End of the ModuleSurfaceArea element. -->\r
2625\r
2626 <xs:element name="Tools">\r
2627 <xs:complexType>\r
2628 <xs:sequence>\r
2629 <xs:element minOccurs="0" maxOccurs="1" name="Header">\r
2630 <xs:complexType>\r
2631 <xs:sequence>\r
2632 <xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:normalizedString">\r
f51461c8 2633 <xs:annotation>\r
cbf14fa0
LH
2634 <xs:documentation xml:lang="en-us">\r
2635 This is the User Interface Name for this Tools\r
2636 Distribution.\r
2637 </xs:documentation>\r
f51461c8 2638 </xs:annotation>\r
cbf14fa0
LH
2639 </xs:element>\r
2640 <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">\r
f51461c8 2641 <xs:annotation>\r
cbf14fa0
LH
2642 <xs:documentation xml:lang="en-us">\r
2643 This is only required if the Copyright is\r
2644 different from the Distribution Package copyright.\r
2645 </xs:documentation>\r
f51461c8 2646 </xs:annotation>\r
cbf14fa0
LH
2647 </xs:element>\r
2648 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">\r
f51461c8 2649 <xs:annotation>\r
cbf14fa0
LH
2650 <xs:documentation xml:lang="en-us">\r
2651 This is only required if the License is\r
2652 different from the Distribution Package license.\r
2653 </xs:documentation>\r
2654 </xs:annotation>\r
2655 </xs:element>\r
2656 <xs:element minOccurs="0" maxOccurs="1" name="Abstract">\r
2657 <xs:annotation>\r
2658 <xs:documentation xml:lang="en-us">\r
2659 This is only required if the Abstract is\r
2660 different from the Distribution Package Abstract.\r
2661 </xs:documentation>\r
2662 </xs:annotation>\r
2663 <xs:complexType>\r
2664 <xs:simpleContent>\r
2665 <xs:extension base="xs:normalizedString">\r
2666 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
2667 </xs:extension>\r
2668 </xs:simpleContent>\r
2669 </xs:complexType>\r
2670 </xs:element>\r
2671 <xs:element minOccurs="0" maxOccurs="1" name="Description">\r
2672 <xs:annotation>\r
2673 <xs:documentation xml:lang="en-us">\r
2674 This is only required if the Description is\r
2675 different from the Distribution Package Description.\r
2676 </xs:documentation>\r
2677 </xs:annotation>\r
2678 <xs:complexType>\r
2679 <xs:simpleContent>\r
2680 <xs:extension base="xs:string">\r
2681 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
2682 </xs:extension>\r
2683 </xs:simpleContent>\r
2684 </xs:complexType>\r
2685\r
2686 </xs:element>\r
2687 </xs:sequence>\r
2688 </xs:complexType>\r
2689 </xs:element>\r
2690 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
2691 <xs:annotation>\r
2692 <xs:documentation xml:lang="en-us">\r
2693 This is the path and filename location within the ZIP file.\r
2694 </xs:documentation>\r
2695 </xs:annotation>\r
2696 <xs:complexType>\r
2697 <xs:simpleContent>\r
2698 <xs:extension base="xs:anyURI">\r
2699 <xs:attribute name="OS" type="SupportedOs" use="optional">\r
2700 <xs:annotation>\r
2701 <xs:documentation xml:lang="en-us">\r
2702 This is required for tools that execute; it\r
2703 should not be used for configuration files.\r
f51461c8 2704 </xs:documentation>\r
cbf14fa0
LH
2705 </xs:annotation>\r
2706 </xs:attribute>\r
2707 <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">\r
2708 <xs:annotation>\r
2709 <xs:documentation xml:lang="en-us">\r
2710 If true, used by installation tools to\r
2711 ensure that a file that must be executable has the correct properties to\r
2712 permit execution.\r
2713 </xs:documentation>\r
2714 </xs:annotation>\r
2715 </xs:attribute>\r
2716 </xs:extension>\r
2717 </xs:simpleContent>\r
2718 </xs:complexType>\r
2719 </xs:element>\r
2720 </xs:sequence>\r
2721 </xs:complexType>\r
2722 </xs:element>\r
2723 <!-- End of the Tools element. -->\r
2724\r
2725 <xs:element name="MiscellaneousFiles">\r
2726 <xs:annotation>\r
2727 <xs:documentation xml:lang="en-us">\r
2728 This section contains a list of files that are not part of the code\r
2729 distributed with modules, packages or tools.\r
2730 </xs:documentation>\r
2731 </xs:annotation>\r
2732 <xs:complexType>\r
2733 <xs:sequence>\r
2734 <xs:element minOccurs="0" maxOccurs="1" name="Header">\r
2735 <xs:complexType>\r
2736 <xs:sequence>\r
2737 <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString">\r
2738 <xs:annotation>\r
2739 <xs:documentation xml:lang="en-us">\r
2740 The User interface name for this content.\r
2741 </xs:documentation>\r
f51461c8 2742 </xs:annotation>\r
cbf14fa0
LH
2743 </xs:element>\r
2744 <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">\r
f51461c8 2745 <xs:annotation>\r
cbf14fa0
LH
2746 <xs:documentation xml:lang="en-us">\r
2747 This is only required if the Copyright is\r
2748 different from the Distribution Package Copyright.\r
2749 </xs:documentation>\r
f51461c8 2750 </xs:annotation>\r
cbf14fa0
LH
2751 </xs:element>\r
2752 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">\r
2753 <xs:annotation>\r
2754 <xs:documentation xml:lang="en-us">\r
2755 This is only required if the License is\r
2756 different from the Distribution Package License.\r
2757 </xs:documentation>\r
2758 </xs:annotation>\r
2759 </xs:element>\r
2760 <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:normalizedString"/>\r
2761 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
2762 <xs:complexType>\r
2763 <xs:simpleContent>\r
2764 <xs:extension base="xs:string">\r
2765 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
2766 />\r
2767 </xs:extension>\r
2768 </xs:simpleContent>\r
2769 </xs:complexType>\r
2770 </xs:element>\r
2771 </xs:sequence>\r
2772 </xs:complexType>\r
2773 </xs:element>\r
2774 <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">\r
2775 <xs:annotation>\r
2776 <xs:documentation xml:lang="en-us">\r
2777 This is the path and filename location within the ZIP file.\r
2778 </xs:documentation>\r
2779 </xs:annotation>\r
2780 <xs:complexType>\r
2781 <xs:simpleContent>\r
2782 <xs:extension base="xs:anyURI">\r
2783 <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">\r
2784 <xs:annotation>\r
2785 <xs:documentation xml:lang="en-us">\r
2786 If true, used by installation tools to\r
2787 ensure that a file that must be executable has the correct properties to\r
2788 permit execution.\r
2789 </xs:documentation>\r
2790 </xs:annotation>\r
2791 </xs:attribute>\r
2792 </xs:extension>\r
2793 </xs:simpleContent>\r
2794 </xs:complexType>\r
2795 </xs:element>\r
2796 </xs:sequence>\r
2797 </xs:complexType>\r
2798 </xs:element>\r
2799 <!-- End of the Misc element. -->\r
2800\r
2801 <xs:element name="UserExtensions">\r
2802 <xs:complexType mixed="true">\r
2803 <xs:sequence>\r
2804 <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
2805 </xs:sequence>\r
2806 <xs:attribute name="UserId" type="xs:NCName" use="required">\r
2807 <xs:annotation>\r
2808 <xs:documentation xml:lang="en-us">\r
2809 This is a single word identifier for grouping similar content.\r
2810 For example, ReferenceBuild might be used to identify non-PI compliant build steps, with two\r
2811 different UserExtensions sections, one with an Identifier of Prebuild, and another of PostBuild.\r
2812 Both UserExtensions sections would use the same UserId.\r
2813 </xs:documentation>\r
2814 </xs:annotation>\r
2815 </xs:attribute>\r
2816 <xs:attribute name="Identifier" type="xs:string" use="optional">\r
2817 <xs:annotation>\r
2818 <xs:documentation xml:lang="en-us">\r
2819 This can be any string used to differentiate or identify this\r
2820 section from other UserExtensions sections.\r
2821 </xs:documentation>\r
2822 <xs:documentation xml:lang="en-us">\r
2823 For example, a PRE_PROCESS Identifier might indicate specific\r
2824 steps and tools required before processing distribution package content, while a different\r
2825 UserExtensions section with a POST_PROCESS Identifier might describe steps that need to be\r
2826 executed after operations on this content.\r
2827 </xs:documentation>\r
2828 </xs:annotation>\r
2829 </xs:attribute>\r
2830 <xs:anyAttribute processContents="lax"/>\r
2831 </xs:complexType>\r
2832 </xs:element>\r
fb0b35e0 2833 <!-- The following elements are common definitions used with the ref attribute for elements. -->\r
cbf14fa0
LH
2834\r
2835 <xs:element name="HelpText">\r
2836 <xs:complexType>\r
2837 <xs:simpleContent>\r
2838 <xs:extension base="xs:string">\r
2839 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
2840 </xs:extension>\r
2841 </xs:simpleContent>\r
2842 </xs:complexType>\r
2843 </xs:element>\r
2844\r
2845 <!-- The following attribute groups are used in various elements above. -->\r
2846\r
2847 <xs:attributeGroup name="SupportedArchMod">\r
2848 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
2849 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
2850 </xs:attributeGroup>\r
2851\r
2852 <!-- The following data types are used to restrict content. -->\r
2853\r
2854 <xs:simpleType name="ArchListType">\r
2855 <xs:list itemType="ArchTypes"/>\r
2856 </xs:simpleType>\r
2857\r
2858 <xs:simpleType name="ArchTypes">\r
2859 <xs:restriction base="xs:NCName">\r
2860 <xs:enumeration value="IA32"/>\r
2861 <xs:enumeration value="X64"/>\r
2862 <xs:enumeration value="IPF"/>\r
2863 <xs:enumeration value="EBC"/>\r
2864 <xs:enumeration value="ARM"/>\r
2865 <xs:pattern value="([A-Z])([a-zA-Z0-9])*">\r
2866 <xs:annotation>\r
2867 <xs:documentation xml:lang="en-us">\r
2868 Any processor architecture not listed above. The Architecture\r
2869 must be a target architecture of one or more compiler tool chains.\r
2870 </xs:documentation>\r
2871 </xs:annotation>\r
2872 </xs:pattern>\r
2873 </xs:restriction>\r
2874 </xs:simpleType>\r
2875\r
2876\r
2877 <xs:simpleType name="FamilyTypes">\r
2878 <xs:restriction base="xs:NCName">\r
2879 <xs:enumeration value="MSFT"/>\r
2880 <xs:enumeration value="GCC"/>\r
2881 <xs:pattern value="[A-Z][a-zA-Z0-9]*">\r
2882 <xs:annotation>\r
2883 <xs:documentation xml:lang="en-us">\r
2884 Any other family of build utilities for which compiler tools\r
2885 exist.\r
2886 </xs:documentation>\r
2887 </xs:annotation>\r
2888 </xs:pattern>\r
2889 </xs:restriction>\r
2890 </xs:simpleType>\r
2891\r
2892 <xs:simpleType name="GuidListType">\r
2893 <xs:list itemType="GuidTypes"/>\r
2894 </xs:simpleType>\r
2895\r
2896 <xs:simpleType name="GuidTypes">\r
2897 <xs:restriction base="xs:NCName">\r
2898 <xs:enumeration value="Event"/>\r
2899 <xs:enumeration value="File"/>\r
2900 <xs:enumeration value="FV"/>\r
2901 <xs:enumeration value="GUID"/>\r
2902 <xs:enumeration value="HII"/>\r
2903 <xs:enumeration value="Hii"/>\r
2904 <xs:enumeration value="HOB"/>\r
2905 <xs:enumeration value="SystemTable"/>\r
2906 <xs:enumeration value="TokenSpaceGuid"/>\r
2907 <xs:enumeration value="Variable"/>\r
2908 <xs:enumeration value="UNDEFINED"/>\r
2909 </xs:restriction>\r
2910 </xs:simpleType>\r
2911\r
2912 <xs:simpleType name="HexNumber">\r
2913 <xs:restriction base="xs:hexBinary">\r
2914 <xs:pattern value="0x([a-fA-F0-9])+"/>\r
2915 </xs:restriction>\r
2916 </xs:simpleType>\r
2917\r
2918 <xs:simpleType name="Md5Sum">\r
2919 <xs:restriction base="xs:normalizedString">\r
2920 <xs:pattern value="[a-zA-Z0-9]{32}"/>\r
2921 </xs:restriction>\r
2922 </xs:simpleType>\r
2923\r
2924 <xs:simpleType name="ModuleListType">\r
2925 <xs:list itemType="ModuleTypes"/>\r
2926 </xs:simpleType>\r
2927\r
2928 <xs:simpleType name="ModuleTypes">\r
2929 <xs:annotation>\r
2930 <xs:documentation xml:lang="en-us"> The following module types are defined by specifications. </xs:documentation>\r
2931 <xs:documentation xml:lang="en-us">\r
2932 Module types for components and libraries defined for this distribution\r
2933 mechanism.\r
2934 </xs:documentation>\r
2935 </xs:annotation>\r
2936 <xs:restriction base="xs:NCName">\r
2937 <xs:enumeration value="BASE ">\r
2938 <xs:annotation>\r
2939 <xs:documentation xml:lang="en-us"> Use of this module is not restricted. </xs:documentation>\r
2940 </xs:annotation>\r
2941 </xs:enumeration>\r
2942 <xs:enumeration value="DXE_CORE">\r
2943 <xs:annotation>\r
2944 <xs:documentation xml:lang="en-us">\r
2945 This module is only applicable to the DXE core.\r
2946 </xs:documentation>\r
2947 </xs:annotation>\r
2948 </xs:enumeration>\r
2949 <xs:enumeration value="DXE_DRIVER">\r
2950 <xs:annotation>\r
2951 <xs:documentation xml:lang="en-us">\r
2952 This module is only applicable to a DXE driver.\r
2953 </xs:documentation>\r
2954 </xs:annotation>\r
2955 </xs:enumeration>\r
2956 <xs:enumeration value="DXE_RUNTIME_DRIVER">\r
2957 <xs:annotation>\r
2958 <xs:documentation xml:lang="en-us">\r
2959 This module is only applicable to a DXE runtime driver.\r
2960 </xs:documentation>\r
2961 </xs:annotation>\r
2962 </xs:enumeration>\r
2963 <xs:enumeration value="DXE_SAL_DRIVER">\r
2964 <xs:annotation>\r
2965 <xs:documentation xml:lang="en-us">\r
2966 This module is only applicable to an IPF DXE runtime driver.\r
2967 </xs:documentation>\r
2968 </xs:annotation>\r
2969 </xs:enumeration>\r
2970 <xs:enumeration value="DXE_SMM_DRIVER">\r
2971 <xs:annotation>\r
2972 <xs:documentation xml:lang="en-us">\r
2973 This module is only applicable to a DXE SMM driver.\r
2974 </xs:documentation>\r
2975 </xs:annotation>\r
2976 </xs:enumeration>\r
2977 <xs:enumeration value="PEI_CORE">\r
2978 <xs:annotation>\r
2979 <xs:documentation xml:lang="en-us">\r
2980 This module is only applicable to the PEI core.\r
2981 </xs:documentation>\r
2982 </xs:annotation>\r
2983 </xs:enumeration>\r
2984 <xs:enumeration value="PEIM">\r
2985 <xs:annotation>\r
2986 <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules. </xs:documentation>\r
2987 </xs:annotation>\r
2988 </xs:enumeration>\r
2989 <xs:enumeration value="SEC">\r
2990 <xs:annotation>\r
2991 <xs:documentation xml:lang="en-us">\r
2992 This module is only applicable to Security phase.\r
2993 </xs:documentation>\r
2994 </xs:annotation>\r
2995 </xs:enumeration>\r
2996 <xs:enumeration value="UEFI_DRIVER">\r
2997 <xs:annotation>\r
2998 <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers. </xs:documentation>\r
2999 </xs:annotation>\r
3000 </xs:enumeration>\r
3001 <xs:enumeration value="UEFI_RUNTIME_DRIVER">\r
3002 <xs:annotation>\r
3003 <xs:documentation xml:lang="en-us">\r
3004 This module is only valid for UEFI runtime\r
3005 drivers.\r
3006 </xs:documentation>\r
3007 </xs:annotation>\r
3008 </xs:enumeration>\r
3009 <xs:enumeration value="UEFI_APPLICATION">\r
3010 <xs:annotation>\r
3011 <xs:documentation xml:lang="en-us">\r
3012 This module is only valid for UEFI applications.\r
3013 </xs:documentation>\r
3014 </xs:annotation>\r
3015 </xs:enumeration>\r
3016 <xs:enumeration value="SMM_CORE">\r
3017 <xs:annotation>\r
3018 <xs:documentation xml:lang="en-us">\r
3019 This module is only applicable to the SMM\r
3020 core.\r
3021 </xs:documentation>\r
3022 </xs:annotation>\r
3023 </xs:enumeration>\r
3024 <xs:enumeration value="USER_DEFINED">\r
3025 <xs:annotation>\r
3026 <xs:documentation xml:lang="en-us">\r
3027 This content is restricted to a specific implementation.\r
3028 </xs:documentation>\r
3029 </xs:annotation>\r
3030 </xs:enumeration>\r
3031 <xs:enumeration value="UNDEFINED">\r
3032 <xs:annotation>\r
3033 <xs:documentation xml:lang="en-us">\r
3034 This enumeration is for use in a list that where the package\r
3035 creator does not know the what module types are supported by a module.\r
3036 </xs:documentation>\r
3037 </xs:annotation>\r
3038 </xs:enumeration>\r
3039 <xs:pattern value="([A-Z])([a-zA-Z0-9])*">\r
3040 <xs:annotation>\r
3041 <xs:documentation xml:lang="en-us">\r
3042 This pattern has been added for use in a module lists - for\r
3043 future expansion.\r
3044 </xs:documentation>\r
3045 </xs:annotation>\r
3046 </xs:pattern>\r
3047 </xs:restriction>\r
3048 </xs:simpleType>\r
3049\r
3050 <xs:simpleType name="PcdDatumTypes">\r
3051 <xs:annotation>\r
3052 <xs:documentation xml:lang="en-us">\r
3053 The following data types are defined by the PCD specification (or PCD\r
3054 section of the UEFI/PI specifications.)\r
3055 </xs:documentation>\r
3056 </xs:annotation>\r
3057 <xs:restriction base="xs:normalizedString">\r
3058 <xs:enumeration value="UINT8"/>\r
3059 <xs:enumeration value="UINT16"/>\r
3060 <xs:enumeration value="UINT32"/>\r
3061 <xs:enumeration value="UINT64"/>\r
3062 <xs:enumeration value="BOOLEAN"/>\r
3063 <xs:enumeration value="VOID*"/>\r
3064 </xs:restriction>\r
3065 </xs:simpleType>\r
3066\r
3067 <xs:simpleType name="PcdItemListType">\r
3068 <xs:list itemType="PcdItemTypes"/>\r
3069 </xs:simpleType>\r
3070\r
3071 <xs:simpleType name="PcdItemTypes">\r
3072 <xs:restriction base="xs:NCName">\r
3073 <xs:enumeration value="FeaturePcd">\r
3074 <xs:annotation>\r
3075 <xs:documentation xml:lang="en-us">\r
3076 The Feature PCD is a binary, evaluating to either true or false.\r
3077 This is used during build to include/exclude content. It can also be used during execution to\r
3078 force execution paths within drivers, or to enable/disable features within a driver for a given\r
3079 platform.\r
3080 </xs:documentation>\r
3081 </xs:annotation>\r
3082 </xs:enumeration>\r
3083 <xs:enumeration value="FixedPcd">\r
3084 <xs:annotation>\r
3085 <xs:documentation xml:lang="en-us">\r
3086 The Fixed PCD is a #define value that is set at build time.\r
3087 </xs:documentation>\r
3088 </xs:annotation>\r
3089 </xs:enumeration>\r
3090 <xs:enumeration value="PatchPcd">\r
3091 <xs:annotation>\r
3092 <xs:documentation xml:lang="en-us">\r
3093 The Patch PCD is a #define that is set at build time, and that\r
3094 can be modified within a binary file. Additional information, such as the offset location of the\r
2d53d54a 3095 value, along with its length may need to be provided.\r
cbf14fa0
LH
3096 </xs:documentation>\r
3097 </xs:annotation>\r
3098 </xs:enumeration>\r
3099 <xs:enumeration value="Pcd">\r
3100 <xs:annotation>\r
3101 <xs:documentation xml:lang="en-us">\r
3102 This PCD type has an overloaded definition. Prior to build, the\r
3103 platform integrator may choose to implement a PCD as Fixed, Patchable or a Dynamic PCD. If the\r
3104 platform integrator choose to use the PCD as dynamic, then a PCD driver is required in the\r
3105 platform (PEI/DXE/both) to track the PCD in some sort of 'database' of these items. For Dynamic\r
3106 PCDs, the PcdGet* must pass in the token space guid and the token number to retrieve data\r
3107 (PcdSet* also needs these values.)\r
3108 </xs:documentation>\r
3109 </xs:annotation>\r
3110 </xs:enumeration>\r
3111 <xs:enumeration value="PcdEx">\r
3112 <xs:annotation>\r
3113 <xs:documentation xml:lang="en-us">\r
3114 The PCD can only be used as Dynamic, and the platform firmware\r
3115 must contain a driver to maintain a 'database' of these items. For Dynamic PCDs, the PcdGet*\r
3116 must pass in the token space guid and the token number to retrieve data (PcdSet* also needs\r
3117 these values.)\r
3118 </xs:documentation>\r
3119 </xs:annotation>\r
3120 </xs:enumeration>\r
3121 </xs:restriction>\r
3122 </xs:simpleType>\r
3123\r
3124 <xs:simpleType name="RegistryFormatGuid">\r
3125 <xs:annotation>\r
3126 <xs:documentation xml:lang="en-us">\r
3127 A GUID must contain five different Hexadecimal character sets that are\r
3128 separated by a dash (-) character.\r
3129 </xs:documentation>\r
3130 </xs:annotation>\r
3131 <xs:restriction base="xs:string">\r
3132 <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*"/>\r
3133 </xs:restriction>\r
3134 </xs:simpleType>\r
3135\r
3136 <xs:simpleType name="SupportedOs">\r
3137 <xs:annotation>\r
3138 <xs:documentation xml:lang="en-us">\r
3139 The EDK II build system supports workstations running one of the\r
3140 following supported operating systems. This is the OS for the developer's workstation, not the target\r
3141 platform.\r
3142 </xs:documentation>\r
3143 </xs:annotation>\r
3144 <xs:restriction base="xs:string">\r
3145 <xs:enumeration value="Win32">\r
3146 <xs:annotation>\r
3147 <xs:documentation xml:lang="en-us">\r
3148 For Windows 2003, Windows XP and Windows Vista.\r
3149 </xs:documentation>\r
3150 </xs:annotation>\r
3151 </xs:enumeration>\r
3152 <xs:enumeration value="Win64">\r
3153 <xs:annotation>\r
3154 <xs:documentation xml:lang="en-us">\r
3155 For Windows 2003, Windows XP and Windows Vista.\r
3156 </xs:documentation>\r
3157 </xs:annotation>\r
3158 </xs:enumeration>\r
3159 <xs:enumeration value="RedHat32"/>\r
3160 <xs:enumeration value="RedHat64"/>\r
3161 <xs:enumeration value="SuSE32"/>\r
3162 <xs:enumeration value="SuSE64"/>\r
3163 <xs:enumeration value="Linux32"/>\r
3164 <xs:enumeration value="Linux64"/>\r
3165 <xs:enumeration value="OS/X32"/>\r
3166 <xs:enumeration value="OS/X64"/>\r
3167 <xs:enumeration value="Generic"/>\r
3168 <xs:enumeration value="GenericWin">\r
3169 <xs:annotation>\r
3170 <xs:documentation xml:lang="en-us">\r
3171 Typically, this is used for Windows Batch files.\r
3172 </xs:documentation>\r
3173 </xs:annotation>\r
3174 </xs:enumeration>\r
3175 <xs:enumeration value="GenericNix">\r
3176 <xs:annotation>\r
3177 <xs:documentation xml:lang="en-us">\r
3178 Typically use for shell scripts - valid for any Linux and Mac\r
3179 OS/X.\r
3180 </xs:documentation>\r
3181 </xs:annotation>\r
3182 </xs:enumeration>\r
3183 <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>\r
3184 </xs:restriction>\r
3185 </xs:simpleType>\r
f51461c8
LG
3186\r
3187</xs:schema>\r