c6494ba8aa2888b53492da430d9fa3bdb2b619ab
[people/mcb30/edk2.git] / edk2 / Tools / XMLSchema / FrameworkDataTypes.xsd
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">\r
3   <!--\r
4     Filename: FrameworkDataTypes.xsd\r
5     \r
6     Copyright (c) 2006, Intel Corp.\r
7     All rights reserved. This program and the accompanying materials\r
8     are licensed and made available under the terms and conditions of the BSD License\r
9     which may be found at http://opensource.org/licenses/bsd-license.php\r
10     \r
11     THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12     WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13     \r
14   -->\r
15   <xs:annotation>\r
16     <xs:documentation xml:lang="en">This schema defines EFI and Framework Data Types. Only simpleType are specified in this file. </xs:documentation>\r
17   </xs:annotation>\r
18   <xs:include schemaLocation="NamingConvention.xsd"/>\r
19   <xs:simpleType name="PrimaryArchListType">\r
20     <xs:list itemType="SupportedArchitectures"/>\r
21   </xs:simpleType>\r
22   <xs:simpleType name="ArchListType">\r
23     <xs:restriction base="PrimaryArchListType">\r
24       <xs:minLength value="1"/>\r
25     </xs:restriction>\r
26   </xs:simpleType>\r
27   <xs:simpleType name="BlockNameType">\r
28     <xs:restriction base="UCNameType">\r
29       <xs:pattern value="BLOCK[A-F0-9]{2}"/>\r
30     </xs:restriction>\r
31   </xs:simpleType>\r
32   <xs:simpleType name="BootModeNames">\r
33     <xs:restriction base="UCNameType">\r
34       <xs:enumeration value="FULL"/>\r
35       <xs:enumeration value="MINIMAL"/>\r
36       <xs:enumeration value="NO_CHANGE"/>\r
37       <xs:enumeration value="DIAGNOSTICS"/>\r
38       <xs:enumeration value="DEFAULT"/>\r
39       <xs:enumeration value="S2_RESUME"/>\r
40       <xs:enumeration value="S3_RESUME"/>\r
41       <xs:enumeration value="S4_RESUME"/>\r
42       <xs:enumeration value="S5_RESUME"/>\r
43       <xs:enumeration value="FLASH_UPDATE"/>\r
44       <xs:enumeration value="RECOVERY_FULL"/>\r
45       <xs:enumeration value="RECOVERY_MINIMAL"/>\r
46       <xs:enumeration value="RECOVERY_NO_CHANGE"/>\r
47       <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>\r
48       <xs:enumeration value="RECOVERY_DEFAULT"/>\r
49       <xs:enumeration value="RECOVERY_S2_RESUME"/>\r
50       <xs:enumeration value="RECOVERY_S3_RESUME"/>\r
51       <xs:enumeration value="RECOVERY_S4_RESUME"/>\r
52       <xs:enumeration value="RECOVERY_S5_RESUME"/>\r
53       <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>\r
54     </xs:restriction>\r
55   </xs:simpleType>\r
56   <xs:simpleType name="BootModeUsage">\r
57     <xs:restriction base="UsageTypes">\r
58       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
59       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
60       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
61       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
62     </xs:restriction>\r
63   </xs:simpleType>\r
64   <xs:simpleType name="BuildTargetList">\r
65     <xs:restriction base="BuildTargetUList">\r
66       <xs:minLength value="1"/>\r
67     </xs:restriction>\r
68   </xs:simpleType>\r
69   <xs:simpleType name="BuildTargetUList">\r
70     <xs:list itemType="BrUType"/>\r
71   </xs:simpleType>\r
72   <xs:simpleType name="BrUType">\r
73     <xs:union memberTypes="BrType UCNameType"/>\r
74   </xs:simpleType>\r
75   <xs:simpleType name="BrType">\r
76     <xs:restriction base="UCNameType">\r
77       <xs:enumeration value="DEBUG"/>\r
78       <xs:enumeration value="RELEASE"/>\r
79     </xs:restriction>\r
80   </xs:simpleType>\r
81   <xs:simpleType name="ComponentExecutionPhase">\r
82     <xs:restriction base="UCNameType">\r
83       <xs:enumeration value="MDE"/>\r
84       <xs:enumeration value="SEC"/>\r
85       <xs:enumeration value="PEI_CORE"/>\r
86       <xs:enumeration value="PEIM"/>\r
87       <xs:enumeration value="DXE_CORE"/>\r
88       <xs:enumeration value="DXE_DRIVER"/>\r
89       <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
90       <xs:enumeration value="DXE_SAL_DRIVER"/>\r
91       <xs:enumeration value="DXE_SMM_DRIVER"/>\r
92       <xs:enumeration value="UEFI"/>\r
93       <xs:enumeration value="UEFI_APPLICATION"/>\r
94     </xs:restriction>\r
95   </xs:simpleType>\r
96   <xs:simpleType name="DataHubUsage">\r
97     <xs:restriction base="UsageTypes">\r
98       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
99       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
100       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
101       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
102       <xs:enumeration value="PRIVATE"/>\r
103     </xs:restriction>\r
104   </xs:simpleType>\r
105   <xs:simpleType name="DatumSizeLimitation">\r
106     <xs:restriction base="xs:nonNegativeInteger">\r
107       <xs:minExclusive value="0"/>\r
108       <xs:maxExclusive value="13777216"/>\r
109       <xs:pattern value="(\s)*[1-9][0-9]*(\s)*"/>\r
110     </xs:restriction>\r
111   </xs:simpleType>\r
112   <xs:simpleType name="DefaultValueType">\r
113     <xs:union memberTypes="xs:normalizedString Hex64BitDataType UnicodeString HexByteArrayType"/>\r
114   </xs:simpleType>\r
115   <xs:simpleType name="EfiSectionType">\r
116     <xs:restriction base="UCNameType">\r
117       <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>\r
118       <xs:enumeration value="EFI_SECTION_VERSION"/>\r
119       <xs:enumeration value="EFI_SECTION_USER_INTERFACE"/>\r
120       <xs:enumeration value="EFI_SECTION_DXE_DEPEX"/>\r
121       <xs:enumeration value="EFI_SECTION_PEI_DEPEX"/>\r
122       <xs:enumeration value="EFI_SECTION_PE32"/>\r
123       <xs:enumeration value="EFI_SECTION_PIC"/>\r
124       <xs:enumeration value="EFI_SECTION_TE"/>\r
125       <xs:enumeration value="EFI_SECTION_RAW"/>\r
126       <xs:enumeration value="EFI_SECTION_COMPRESSION"/>\r
127       <xs:enumeration value="EFI_SECTION_GUID_DEFINED"/>\r
128       <xs:enumeration value="EFI_SECTION_COMPATIBILITY16"/>\r
129       <xs:enumeration value="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
130     </xs:restriction>\r
131   </xs:simpleType>\r
132   <xs:simpleType name="EventTypes">\r
133     <xs:restriction base="UCNameType">\r
134        <xs:enumeration value="EVENT_GROUP_GUID"/>\r
135       <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>\r
136       <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>\r
137     </xs:restriction>\r
138   </xs:simpleType>\r
139   <xs:simpleType name="EventUsage">\r
140     <xs:restriction base="UsageTypes">\r
141       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
142       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
143       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
144       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
145       <xs:enumeration value="PRIVATE"/>\r
146     </xs:restriction>\r
147   </xs:simpleType>\r
148   <xs:simpleType name="ExecutionType">\r
149     <xs:restriction base="UCNameType">\r
150       <xs:enumeration value="REL" id="Relocatable"/>\r
151       <xs:enumeration value="NREL" id="Non-Relocatable"/>\r
152       <xs:enumeration value="XIP" id="Execute_In_Place"/>\r
153       <xs:enumeration value="PIC" id="Position_Independent_Code"/>\r
154     </xs:restriction>\r
155   </xs:simpleType>\r
156   <xs:simpleType name="ExternType">\r
157     <xs:restriction base="xs:normalizedString">\r
158       <xs:minLength value="1"/>\r
159       <!--<xs:pattern value="((\w)+(\W)*(\s)*)+"/>-->\r
160     </xs:restriction>\r
161   </xs:simpleType>\r
162   <xs:simpleType name="ExternUsage">\r
163     <xs:restriction base="UsageTypes">\r
164       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
165       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
166     </xs:restriction>\r
167   </xs:simpleType>\r
168   <xs:simpleType name="FileNameUsage">\r
169     <xs:restriction base="UsageTypes">\r
170       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
171       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
172       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
173       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
174       <xs:enumeration value="PRIVATE"/>\r
175     </xs:restriction>\r
176   </xs:simpleType>\r
177   <xs:simpleType name="FeatureFlagExpressionType">\r
178     <xs:restriction base="xs:normalizedString">\r
179       <xs:minLength value="1"/>\r
180     </xs:restriction>\r
181   </xs:simpleType>\r
182   <xs:simpleType name="FrameworkComponentListType">\r
183     <xs:list itemType="FrameworkComponentTypes"/>\r
184   </xs:simpleType>\r
185   <xs:simpleType name="FrameworkComponentTypes">\r
186     <xs:restriction base="UCNameType">\r
187       <xs:enumeration value="APRIORI"/>\r
188       <xs:enumeration value="SEC"/>\r
189       <xs:enumeration value="LIBRARY"/>\r
190       <xs:enumeration value="FV_IMAGE_FILE"/>\r
191       <xs:enumeration value="BS_DRIVER"/>\r
192       <xs:enumeration value="RT_DRIVER"/>\r
193       <xs:enumeration value="SAL_RT_DRIVER"/>\r
194       <xs:enumeration value="PE32_PEIM"/>\r
195       <xs:enumeration value="PIC_PEIM"/>\r
196       <xs:enumeration value="COMBINED_PEIM_DRIVER"/>\r
197       <xs:enumeration value="PEI_CORE"/>\r
198       <xs:enumeration value="DXE_CORE"/>\r
199       <xs:enumeration value="BS_DRIVER_EFI"/>\r
200       <xs:enumeration value="SHELLAPP"/>\r
201       <xs:enumeration value="BINARY"/>\r
202       <xs:enumeration value="LOGO"/>\r
203       <xs:enumeration value="USER_DEFINED"/>\r
204     </xs:restriction>\r
205   </xs:simpleType>\r
206   <xs:simpleType name="FrameworkModuleTypes">\r
207     <xs:restriction base="ModuleTypeDef">\r
208       <xs:enumeration value="BASE"/>\r
209       <xs:enumeration value="SEC"/>\r
210       <xs:enumeration value="PEI_CORE"/>\r
211       <xs:enumeration value="PEIM"/>\r
212       <xs:enumeration value="DXE_CORE"/>\r
213       <xs:enumeration value="DXE_DRIVER"/>\r
214       <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
215       <xs:enumeration value="DXE_SAL_DRIVER"/>\r
216       <xs:enumeration value="DXE_SMM_DRIVER"/>\r
217       <xs:enumeration value="UEFI_DRIVER"/>\r
218       <xs:enumeration value="UEFI_APPLICATION"/>\r
219       <xs:enumeration value="USER_DEFINED"/>\r
220     </xs:restriction>\r
221   </xs:simpleType>\r
222   <xs:simpleType name="FvRegionTypes">\r
223     <xs:restriction base="UCNameType">\r
224       <xs:enumeration value="FV_MAIN"/>\r
225       <xs:enumeration value="FV_MAIN_COMPACT"/>\r
226       <xs:enumeration value="NV_STORAGE"/>\r
227       <xs:enumeration value="FV_RECOVERY"/>\r
228       <xs:enumeration value="FV_RECOVERY_FLOPPY"/>\r
229       <xs:enumeration value="FV_FILE"/>\r
230       <xs:enumeration value="CAPSULE_CARGO"/>\r
231       <xs:enumeration value="NULL"/>\r
232       <xs:enumeration value="USER_DEFINED"/>\r
233     </xs:restriction>\r
234   </xs:simpleType>\r
235   <xs:simpleType name="PrimaryGuidListType">\r
236     <xs:list itemType="GuidTypes"/>\r
237   </xs:simpleType>\r
238   <xs:simpleType name="GuidListType">\r
239     <xs:restriction base="PrimaryGuidListType">\r
240       <xs:minLength value="1"/>\r
241     </xs:restriction>\r
242   </xs:simpleType>\r
243   <xs:simpleType name="GuidTypes">\r
244     <xs:restriction base="UCNameType">\r
245       <xs:enumeration value="DATA_HUB_RECORD"/>\r
246       <xs:enumeration value="EFI_EVENT"/>\r
247       <xs:enumeration value="EFI_SYSTEM_CONFIGURATION_TABLE"/>\r
248       <xs:enumeration value="EFI_VARIABLE"/>\r
249       <xs:enumeration value="GUID"/>\r
250       <xs:enumeration value="HII_PACKAGE_LIST"/>\r
251       <xs:enumeration value="HOB"/>\r
252       <xs:enumeration value="TOKEN_SPACE_GUID"/>\r
253     </xs:restriction>\r
254   </xs:simpleType>\r
255   <xs:simpleType name="GuidUsage">\r
256     <xs:restriction base="UsageTypes">\r
257       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
258       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
259       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
260       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
261       <xs:enumeration value="DEFAULT"/>\r
262       <xs:enumeration value="PRIVATE"/>\r
263     </xs:restriction>\r
264   </xs:simpleType>\r
265   <xs:simpleType name="HexByteArrayListType">\r
266     <xs:restriction base="xs:normalizedString">\r
267       <xs:minLength value="4"/>\r
268       <xs:pattern value="((( )?0x[a-fA-F0-9]{2})(,)?)+( )?"/>\r
269     </xs:restriction>\r
270   </xs:simpleType>\r
271   <xs:simpleType name="HexByteArrayType">\r
272     <xs:restriction base="xs:normalizedString">\r
273       <xs:minLength value="4"/>\r
274       <xs:pattern value="((\s)*0x([a-fA-F0-9]){2}(,)?(\s)*)+"/>\r
275     </xs:restriction>\r
276   </xs:simpleType>\r
277   <xs:simpleType name="HexWordArrayType">\r
278     <xs:restriction base="xs:normalizedString">\r
279       <xs:minLength value="6"/>\r
280       <xs:pattern value="((\s)*0x([a-fA-F0-9]){4}(,)?(\s)*)+"/>\r
281     </xs:restriction>\r
282   </xs:simpleType>\r
283   <xs:simpleType name="HiiPackageUsage">\r
284     <xs:restriction base="UsageTypes">\r
285       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
286       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
287       <xs:enumeration value="PRIVATE"/>\r
288     </xs:restriction>\r
289   </xs:simpleType>\r
290   <xs:simpleType name="HobTypes">\r
291     <xs:restriction base="UCNameType">\r
292       <xs:enumeration value="PHIT"/>\r
293       <xs:enumeration value="MEMORY_ALLOCATION"/>\r
294       <xs:enumeration value="RESOURCE_DESCRIPTOR"/>\r
295       <xs:enumeration value="GUID_EXTENSION"/>\r
296       <xs:enumeration value="FIRMWARE_VOLUME"/>\r
297       <xs:enumeration value="CPU"/>\r
298       <xs:enumeration value="POOL"/>\r
299       <xs:enumeration value="CAPSULE_VOLUME"/>\r
300     </xs:restriction>\r
301   </xs:simpleType>\r
302   <xs:simpleType name="HobUsage">\r
303     <xs:restriction base="UsageTypes">\r
304       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
305       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
306       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
307       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
308       <xs:enumeration value="PRIVATE"/>\r
309     </xs:restriction>\r
310   </xs:simpleType>\r
311   <xs:simpleType name="IntermediateOutputType">\r
312     <xs:restriction base="UCNameType">\r
313       <xs:enumeration value="MODULE"/>\r
314       <xs:enumeration value="UNIFIED"/>\r
315     </xs:restriction>\r
316   </xs:simpleType>\r
317   <xs:simpleType name="LibraryUsage">\r
318     <xs:restriction base="UsageTypes">\r
319       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
320       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
321       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
322       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
323       <xs:enumeration value="DEFAULT"/>\r
324       <xs:enumeration value="PRIVATE"/>\r
325     </xs:restriction>\r
326   </xs:simpleType>\r
327   <xs:simpleType name="ModuleTypeDef">\r
328     <xs:restriction base="UCNameType">\r
329       <xs:enumeration value="BASE"/>\r
330       <xs:enumeration value="SEC"/>\r
331       <xs:enumeration value="PEI_CORE"/>\r
332       <xs:enumeration value="PEIM"/>\r
333       <xs:enumeration value="DXE_CORE"/>\r
334       <xs:enumeration value="DXE_DRIVER"/>\r
335       <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
336       <xs:enumeration value="DXE_SAL_DRIVER"/>\r
337       <xs:enumeration value="DXE_SMM_DRIVER"/>\r
338       <xs:enumeration value="TOOL"/>\r
339       <xs:enumeration value="UEFI_DRIVER"/>\r
340       <xs:enumeration value="UEFI_APPLICATION"/>\r
341       <xs:enumeration value="USER_DEFINED"/>\r
342     </xs:restriction>\r
343   </xs:simpleType>\r
344   <xs:simpleType name="Md5sumType">\r
345     <xs:restriction base="xs:normalizedString">\r
346       <xs:pattern value="[a-fA-F0-9]{32}"/>\r
347     </xs:restriction>\r
348   </xs:simpleType>\r
349   <xs:simpleType name="PrimaryModuleListType">\r
350     <xs:list itemType="FrameworkModuleTypes"/>\r
351   </xs:simpleType>\r
352   <xs:simpleType name="ModuleListType">\r
353     <xs:restriction base="PrimaryModuleListType">\r
354       <xs:minLength value="1"/>\r
355     </xs:restriction>\r
356   </xs:simpleType>\r
357   <xs:simpleType name="PackageType">\r
358     <xs:restriction base="UCNameType">\r
359       <xs:enumeration value="SOURCE"/>\r
360       <xs:enumeration value="BINARY"/>\r
361       <xs:enumeration value="MIXED"/>\r
362     </xs:restriction>\r
363   </xs:simpleType>\r
364   <xs:simpleType name="PackageUsage">\r
365     <xs:restriction base="UsageTypes">\r
366       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
367       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
368       <xs:enumeration value="DEFAULT"/>\r
369     </xs:restriction>\r
370   </xs:simpleType>\r
371   <xs:simpleType name="PcdListType">\r
372     <xs:restriction base="PrimaryPcdListType">\r
373       <xs:minLength value="1"/>\r
374     </xs:restriction>\r
375   </xs:simpleType>\r
376   <xs:simpleType name="PrimaryPcdListType">\r
377     <xs:list itemType="PcdItemTypes"/>\r
378   </xs:simpleType>\r
379   <xs:simpleType name="PcdTypes">\r
380     <xs:restriction base="UCNameType">\r
381       <xs:enumeration value="FIXED_AT_BUILD"/>\r
382       <xs:enumeration value="FEATURE_FLAG"/>\r
383       <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
384       <xs:enumeration value="DYNAMIC"/>\r
385       <xs:enumeration value="DYNAMIC_EX"/>\r
386     </xs:restriction>\r
387   </xs:simpleType>\r
388   <xs:simpleType name="PcdDriverTypes">\r
389     <xs:restriction base="UCNameType">\r
390       <xs:enumeration value="PEI_PCD_DRIVER"/>\r
391       <xs:enumeration value="DXE_PCD_DRIVER"/>\r
392     </xs:restriction>\r
393   </xs:simpleType>\r
394   <xs:simpleType name="PcdDataTypes">\r
395     <xs:restriction base="xs:normalizedString">\r
396       <xs:enumeration value="UINT8"/>\r
397       <xs:enumeration value="UINT16"/>\r
398       <xs:enumeration value="UINT32"/>\r
399       <xs:enumeration value="UINT64"/>\r
400       <xs:enumeration value="VOID*"/>\r
401       <xs:enumeration value="BOOLEAN"/>\r
402     </xs:restriction>\r
403   </xs:simpleType>\r
404   <xs:simpleType name="PcdFeatureFlagUsage">\r
405     <xs:restriction base="UsageTypes">\r
406       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
407       <xs:enumeration value="DEFAULT"/>\r
408     </xs:restriction>\r
409   </xs:simpleType>\r
410   <xs:simpleType name="PcdItemTypes">\r
411     <xs:restriction base="UCNameType">\r
412       <xs:enumeration value="FEATURE_FLAG"/>\r
413       <xs:enumeration value="FIXED_AT_BUILD"/>\r
414       <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
415       <xs:enumeration value="DYNAMIC"/>\r
416       <xs:enumeration value="DYNAMIC_EX"/>\r
417     </xs:restriction>\r
418   </xs:simpleType>\r
419   <xs:simpleType name="PcdUsage">\r
420     <xs:restriction base="UsageTypes">\r
421       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
422       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
423       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
424       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
425       <xs:enumeration value="DEFAULT"/>\r
426     </xs:restriction>\r
427   </xs:simpleType>\r
428   <xs:simpleType name="PpiNotifyUsage">\r
429     <xs:restriction base="UsageTypes">\r
430       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
431     </xs:restriction>\r
432   </xs:simpleType>\r
433   <xs:simpleType name="PpiUsage">\r
434     <xs:restriction base="UsageTypes">\r
435       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
436       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
437       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
438       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
439       <xs:enumeration value="PRIVATE"/>\r
440     </xs:restriction>\r
441   </xs:simpleType>\r
442   <xs:simpleType name="ProtocolNotifyUsage">\r
443     <xs:restriction base="UsageTypes">\r
444       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
445     </xs:restriction>\r
446   </xs:simpleType>\r
447   <xs:simpleType name="ProtocolUsage">\r
448     <xs:restriction base="UsageTypes">\r
449       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
450       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
451       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
452       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
453       <xs:enumeration value="TO_START"/>\r
454       <xs:enumeration value="BY_START"/>\r
455       <xs:enumeration value="PRIVATE"/>\r
456     </xs:restriction>\r
457   </xs:simpleType>\r
458   <xs:simpleType name="SkuListType">\r
459     <xs:restriction base="xs:normalizedString">\r
460       <xs:minLength value="1"/>\r
461       <xs:pattern value="(\d)+((,)?(\s)*(\d)+)*"/>\r
462     </xs:restriction>\r
463   </xs:simpleType>\r
464   <xs:simpleType name="SupportedArchitectures">\r
465     <xs:restriction base="UCNameType">\r
466       <xs:enumeration value="EBC"/>\r
467       <xs:enumeration value="IA32"/>\r
468       <xs:enumeration value="X64"/>\r
469       <xs:enumeration value="IPF"/>\r
470       <xs:enumeration value="ARM"/>\r
471       <xs:enumeration value="PPC"/>\r
472     </xs:restriction>\r
473   </xs:simpleType>\r
474   <xs:simpleType name="SystemTableUsage">\r
475     <xs:restriction base="UsageTypes">\r
476       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
477       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
478       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
479       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
480       <xs:enumeration value="PRIVATE"/>\r
481     </xs:restriction>\r
482   </xs:simpleType>\r
483   <xs:simpleType name="TokenDataType">\r
484     <xs:union memberTypes="HexDoubleWordDataType  xs:nonNegativeInteger"/>\r
485   </xs:simpleType>\r
486   <xs:simpleType name="ToolChains">\r
487     <xs:restriction base="UCNameType">\r
488       <xs:minLength value="2"/>\r
489       <xs:enumeration value="MSFT"/>\r
490       <xs:enumeration value="INTEL"/>\r
491       <xs:enumeration value="GCC"/>\r
492       <xs:enumeration value="CYGWIN"/>\r
493     </xs:restriction>\r
494   </xs:simpleType>\r
495   <xs:simpleType name="UiNameType">\r
496     <xs:restriction base="xs:string">\r
497       <xs:minLength value="1"/>\r
498       <xs:pattern value="[^ ].*"/>\r
499     </xs:restriction>\r
500   </xs:simpleType>\r
501   <xs:simpleType name="UnicodeString">\r
502     <xs:restriction base="xs:normalizedString">\r
503       <xs:minLength value="3"/>\r
504       <xs:pattern value="(\s)*L(\:)?&quot;[^&quot;]*&quot;(\s)*"/>\r
505     </xs:restriction>\r
506   </xs:simpleType>\r
507   <xs:simpleType name="UsageListType">\r
508     <xs:restriction base="PrimaryUsageList">\r
509       <xs:minLength value="1"/>\r
510     </xs:restriction>\r
511   </xs:simpleType>\r
512   <xs:simpleType name="PrimaryUsageList">\r
513     <xs:list itemType="UsageTypes"/>\r
514   </xs:simpleType>\r
515   <!-- UsageTypes describes all of the Usage Attributes that are defined in the Module Surface Area Specification -->\r
516   <xs:simpleType name="UsageTypes">\r
517     <xs:restriction base="UCNameType">\r
518       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
519       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
520       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
521       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
522       <xs:enumeration value="TO_START"/>\r
523       <xs:enumeration value="BY_START"/>\r
524       <xs:enumeration value="PRIVATE"/>\r
525       <xs:enumeration value="DEFAULT"/>\r
526     </xs:restriction>\r
527   </xs:simpleType>\r
528   <xs:simpleType name="VariableOffsetValues">\r
529     <xs:restriction base="xs:string">\r
530       <xs:minLength value="1"/>\r
531       <xs:pattern value="\d+(:)?\d*"/>\r
532     </xs:restriction>\r
533   </xs:simpleType>\r
534   <xs:simpleType name="VariableUsage">\r
535     <xs:restriction base="UsageTypes">\r
536       <!-- Module requires the variable entry to be set -->\r
537       <xs:enumeration value="ALWAYS_CONSUMED"/>\r
538       <!-- Module will use the variable entry if it's set -->\r
539       <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
540       <!-- Module Always will write the variable -->\r
541       <xs:enumeration value="ALWAYS_PRODUCED"/>\r
542       <!-- Module sometimes writes the variable -->\r
543       <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
544       <!-- Variable is produced and consumed only by this module -->\r
545       <xs:enumeration value="PRIVATE"/>\r
546     </xs:restriction>\r
547   </xs:simpleType>\r
548   <!-- Complex Data Types -->\r
549   <xs:complexType name="DbPathAndFilename">\r
550     <xs:simpleContent>\r
551       <xs:extension base="PathAndFilename">\r
552         <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
553         <xs:attribute name="Md5sum" type="Md5sumType"/>\r
554       </xs:extension>\r
555     </xs:simpleContent>\r
556   </xs:complexType>\r
557   <xs:complexType name="ArgsType">\r
558     <xs:sequence minOccurs="0" maxOccurs="unbounded">\r
559       <xs:element name="Arg" type="xs:string"/>\r
560     </xs:sequence>\r
561   </xs:complexType>\r
562   <xs:complexType name="ToolType">\r
563     <xs:sequence>\r
564       <xs:element name="ToolName" type="xs:string"/>\r
565       <xs:element name="ToolArgs" type="xs:string"/>\r
566     </xs:sequence>\r
567   </xs:complexType>\r
568 </xs:schema>\r