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