0% found this document useful (0 votes)
655 views194 pages

Beyond BIOS Chinese Simple Preview Rev 0.2

Uploaded by

fahri20125031006
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
655 views194 pages

Beyond BIOS Chinese Simple Preview Rev 0.2

Uploaded by

fahri20125031006
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 194

Beyond BIOS

Ё᭛乘㾜⠜

WWW.BIOSREN.COM

Rev 0.2
ໄᯢ
ᴀ䌘᭭ҙկᄺдখ㗗П⫼ˈ䇋೼ᄺдখ㗗ᅠПৢ 24 ᇣᯊ‫ߴݙ‬䰸ˈ
᳾㒣ᥜᴗ㗙ϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩ПՓ⫼ˈ৺߭
ৢᵰ㞾䋳DŽ
ᴀ䌘᭭‫ݙ‬ᆍᴹ⑤Ѣ㔥㒰ˈ⬅⛁ᖗ㔥টˈ㣅䇁⠅ད㗙ण԰㗠៤ˈϡֱ
䆕݊Ё᮴㒄ⓣǃ᮴⨩⮉ˈ⫮㟇᳝ѯഄᮍᅠܼ䫭䇃ˈ䇋䯙㗙ԧ䇙DŽ
ᴀ䌘᭭‫ݙ‬ᆍᇮϡᅠᭈˈሲ乘㾜⠜ᴀˈᇮ᳝㄀ϔゴǃ㄀Ѩゴǃ㄀कゴ
䚼ߚ‫ݙ‬ᆍᕙᅠ៤DŽ
㢹㽕㦋ᕫᅠᭈ⠜ᴀⱘᄺдк㈡ˈ䇋䌁ф㣅᭛ℷ⠜кljBeyond BIOS
–Implementing the Unified Extensible Firmware Interface with Intel’s
Framework NJ ԰ 㗙 ˖ Vincent Zimmer,
Michael Rothman, and Robert Hale
ߎ⠜˖Intel Press www.intel.com/intelpress

ᛳ䇶㔥ট Perseveranceǃxtdumplingǃ
LibeiliǃRexǃSamliǃsnowcusoǃcharlieǃ
XtjiayouǃLightSeedǃStrengthǃhabouǃ
yuxi1127 ǃ xueyin000 ǃ luciferli ǃ
wyz198461ǃmayfangǃedmoonǃgbyHWǃ
ella ǃ Zonel ǃ Kaeshine ǃ gssxd ǃ
dingchao0205ǃpassionappleǃwendywu00ǃfreasyǃbiosyeǃDelphiǃ
EdwinǃRainbowǃgikidyǃhitpirǃdebugcodeǃmanliangpaiǃwj025ǃ
shen ㄝЎℸҬߎⱘ㡄䕯ࡾ࡯ˈᛳ䇶݊Ҫ೼䖭䞠≵߫ߎৡᄫⱘ㔥টⱘ咬咬
ᬃᣕˈᏠᳯ㛑೼ᅠᭈ⠜ᴀⱘᛳ䇶ৡऩЁⳟࠄ᠔᳝ᬃᣕ੠Ҭߎ䖛ࡾ࡯ⱘ㔥
টⱘৡᄫDŽ
ᛳ䇶⼲ˈᛳ䇶Џˈᛳ䇶 CCTVʽ

Giantt.Peng
2010.5.10
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀ϔゴ
ὖ䗄
ᴹ䖭Ͼ᳈དⱘഄᮍᡒ៥ˈ㺙԰ϔাᇣⱑ‫……ܨ‬

—Harlan Ellison

᱂䗮⫼᠋ᑊϡⶹ䘧ϔৄ⦄ҷ䅵ㅫᴎ݊ᐩৢⱘᎹ԰ॳ⧚DŽ䆒䅵Փ✊ˈᓔথ㗙㗫䌍໻䞣ⱘᯊ䯈ǃ
ᗱ㗗੠㊒࡯ᇚ㒘៤䅵ㅫᴎⱘ䳊ᬷ䚼ӊᭈড়៤ϔϾᅠܼড়Т䘏䕥ⱘᭈԧDŽ䕗䅵ㅫᴎਃࡼ⿟ᑣ㗠㿔ˈ
䖭⾡ᭈড়ˈ⫮㟇ᇍѢ䙷ѯ㓪‫ݭ‬䅵ㅫᴎ݊Ҫ⿟ᑣⱘҎˈ䛑᳈ࡴҸҎ䌍㾷DŽ

ৃਃࡼ೎ӊⱘ໡ᴖᗻϢ᮹‫ׅ‬๲ˈ⦄೼Ꮖ㒣থሩࠄᅠܼৃҹϢᑩሖ⹀ӊঞ݊ࡴ䕑ⱘ䕃ӊⱘ໡
ᴖ ᗻ ᑊ 偒 唤 偅 њ DŽ ᳔ ᮄ ⱘ ৃ ਃ ࡼ ೎ ӊ ⱘ ᶊ ᵘ ᰃ ৃ ᠽ ሩ ೎ ӊ ᥹ ষ ˄ Extensible Firmware
InterfaceˈҹϟѺㅔ⿄ EFI˅ˈEFI ᅮНњ೎ӊϢ᪡԰㋏㒳ҹঞ option ROMs П䯈ⱘ᥹ষDŽᅲ⦄
EFI ⱘ䕃ӊᶊᵘৃҹ᳝᮴᭄⾡DŽᴀк佪‫ᦣܜ‬䗄њ EFI ⱘ৘㒘៤䚼ߚঞ݊⡍ᗻˈ✊ৢ䆺䗄њϔϾࡳ
㛑Єᆠⱘ EFI ⱘᶊᵘˈ⦄೼㹿⿄ПЎ㣅⡍ᇨ® EFI ᑇৄ߯ᮄᶊᵘ˄Intel® Platform
Innovation Framework for EFI˅ˈ៪㗙ㅔऩⱘ⿄԰ FrameworkDŽ

EFI Ϣ Framework ഛᰃ㸡⫳㞾⦄ҷ䕃ӊᓔথᷛ‫ⱘޚ‬ὖᗉϢᡔᴃDŽ㱑✊ EFI Ϣ Framework


ᑊ≵᳝ᅮНϔϾ᪡԰㋏㒳ˈԚҢӏԩϔϾӴ㒳ⱘ㾚㾦ᴹⳟˈᅗӀ䛑‫⫼׳‬њ䆌໮䆹乚ඳⱘὖᗉ੠
ᛇ⊩DŽEFI ҹঞ Tiano ⱘ䆒䅵ᮍ⊩ড᯴њ䕃ӊᎹ⿟ⱘ⦄⢊੠䍟࢓ˈৠḋг㗗㰥њጠܹᓣ乚ඳⱘᅲ
䰙㒣偠DŽ㗠䖭ϸᴵ䏃㒓䛑䳔㽕ᇍПࠡৃਃࡼ೎ӊᶊᵘ㦋পⱘ㒣偠᳝⏅ܹⱘ⧚㾷DŽ

ग़৆

᳔ᮽⱘ⬉㛥≵᳝ৃਃࡼ೎ӊDŽ⫼᠋ϡᕫϡ᠟ࡼ᪡԰⬉㛥ࠡ䴶ᵓϞⱘᓔ݇ᴹ䕧ܹϔϾਃࡼ⿟
ᑣDŽ䖭Ͼ䖛⿟䴲ᐌ㓧᜶ǃ䌍࡯ˈᑊϨᯧѢߎ䫭DŽϔѯ⬉㛥Փ⫼ᕜ໡ᴖⱘᣛҸ䲚˄ᛇᛇ䕧ܹ䖭ѯ
ᣛҸᴀ䑿ⱘᎹ԰ህҸҎথ⮃ 䆥㗙˅ˈ᠔ҹҪӀⱘ䆒䅵㗙Ӏㅔ࣪њ䖭ϔ⌕⿟ˈ↨བҢϔϾ㒌ᏺϞ
ᴹ䇏ܹ⿟ᑣDŽ䖭Ͼᯊҷ᱂䘡Փ⫼ϔ⾡⣀⡍ⱘ“㞾ࡼ࣪”䆒໛——ϔഫ೼↣Ͼᓔ݇໘䛑᳝ߛࡆ䔼䗍
ⱘ㛊ড়ᵓDŽ೼Փ⫼᥻ࠊᵓ⊓ⴔ᳼ᵓⳈ㒓⒥ࡼᯊˈߛࡆ䔼䗍ՓП‫ܜ‬ϟ⒥‫ݡ‬Ϟ⒥ˈ᥻ࠊᓔ݇Ӯ೼ℷ
⹂ⱘԡ㕂ࡼ԰DŽᇍѢ᪡԰ਬᴹ䇈ᓔথ᳈ᇣⱘ⿟ᑣਃࡼ㋏㒳ᴹপᕫゲѝӬ࢓ᰃ䴲ᐌᐌ㾕ⱘ‫ˈ⊩خ‬
᳈᱂䘡ⱘᰃ䞛⫼ᏺ᳝޴Ͼ䕀ᤶᓔ݇ⱘ⿟ᑣᴹਃࡼ㋏㒳DŽ

Пৢˈ᳔߱ⱘᓔ݇ԡ㕂㹿ᵓवϞⱘѠᵕㅵ᠔ҷ᳓ˈ䖭⾡㺙㕂ⳟ䍋ᴹ‫ڣ‬ᰃϔϾ᠔䇧ⱘ໪ೈ䆒
໛DŽা᳝ϔϾҢѠᵕㅵ“ᄬ‫”ټ‬໡ࠊࠄ RAM 䞠ⱘᇣⱘ⿟ᑣৃҹ㹿ỡܹDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䱣ⴔᇣൟ⬉㛥ⱘথሩˈ‫݌‬ൟⱘϡ䍙䖛 256 ᄫ㡖䭓ⱘᖂൟ⿟ᑣ㹿ᄬ‫ټ‬೼᳔ᮄⱘৃ⫼ⱘ ROM


䞠䴶ˈᑊৃҹҢᇥ᭄䆒໛ϞਃࡼDŽབᵰ᪡԰ਬᛇҢ঺໪ϔϾ䆒໛ਃࡼˈ↨བҢϔϾ㒌ᏺ䇏ߎ఼
㗠ϡᰃҢ⺕哧៪㗙⺕ⲬϞˈϔ㠀ᚙ‫މ‬ϟҪা㛑᳈ᤶ ROMDŽ

ϔᮺࡴ䕑Пৢˈ᪡԰㋏㒳෎ᴀϞϡ‫ݡ‬Փ⫼䖭ѯ ROM 䞠ⱘҷⷕDŽⳌডഄ໻໮᭄᪡԰㋏㒳䛑


ᏺ᳝ৃਃࡼ䆒໛ⱘ偅ࡼˈ಴ℸৃҹゟे߱ྟ࣪䖭ѯ䆒໛DŽ

೎ӊ԰Ў⹀ӊᢑ䈵ሖ

䖭Ͼ乚ඳⱘϔϾЏ㽕䕀ᡬᰃ೼ 70 ᑈҷᮽᳳ⬅ Gary Kildall ҹঞ݊ҪϔѯҎ⬠ᅮⱘˈ㗠


Gary ৢᴹ៤Ўњ㨫ৡⱘ᪡԰㋏㒳 CP/M ⱘথ䍋Ҏˈৠᯊгᰃ Digital Research ⱘ߯ᓎ㗙DŽ
˄г
ℷᰃ䖭ϾҎˈҹ݊‫چ‬᜶ⱘᗕᑺ䖿Փ IBM 䗝ᢽњᖂ䕃ˈ⌾䌍њϔ⃵៤Ў↨ᇨⲪ㣼ⱘᴎӮ—䆥㗙˅
Ҫᦤߎৃਃࡼ೎ӊᰃ䅵ㅫᴎ⹀ӊϢ᪡԰㋏㒳П䯈ⱘϔϾᢑ䈵ሖDŽ䆹ᢑ䈵ሖ⫼Ѣਃࡼ᪡԰㋏㒳ҹ
ঞϢ㋏㒳෎ᴀ໪䆒䖯㸠ㅔऩ䗮䆃-DŽৃਃࡼ೎ӊ䆩೒㾷‫އ‬ϔϾ᪡԰㋏㒳ⱘぬ๗˖བԩᕫࠄҢ໪ೈ
䆒໛᠔ࡴ䕑ⱘ偅ࡼDŽ

PC ᴎ㹿ᓔথߎᴹⱘᯊ‫ˈ׭‬ᓔথ㗙Ӏᑨ⫼њϔϾϢ Gary ㄝҎᦤߎⱘৃਃࡼ೎ӊ㉏Ԑⱘᠽሩ


ὖᗉˈি‫خ‬෎ᴀ䕧ܹ䕧ߎ㋏㒳ˈㅔ‫ݭ‬Ў BIOS˄IBM ݀ৌˈ1985˅DŽBIOS Џ㽕ࣙ৿ϸϾ䚼ߚ˖Ϟ
⬉㞾Ẕ䚼ߚ˄POST˅ҹঞ䖤㸠ᯊᑧ˄runtime˅
ˈ䖭ϔ䚼ߚЏ㽕ᰃЎᮽᳳⱘ PC ᪡԰㋏㒳ᦤկ෎
ᴀⱘ䖤㸠᳡ࡵDŽ

BIOS ⱘ෎ᴀⳂᷛᰃ㞾Ẕҹঞ߱ྟ࣪㋏㒳ˈẔ⌟䕧ܹ䕧ߎ䆒໛ঞৃਃࡼ䆒໛ˈ䕧ܹ䆒໛ϔ㠀
ᣛ䬂Ⲭˈ䕧ߎ䆒໛ϔ㠀ᣛ೒ᔶᰒ⼎఼ˈ㗠ৃਃࡼ䆒໛ϔ㠀ᣛⱘᰃ⺕ⲬDŽ᥹ϟᴹ BIOS ӮҢ⺕Ⲭ䇏
প᪡԰㋏㒳᳔ᓔྟⱘ 512 ᄫ㡖ⱘਃࡼ⿟ᑣᴹਃࡼ᪡԰㋏㒳ᑊᇚ᥻ࠊᴗӴ䗦㒭ᅗDŽПৢ BIOS ᇚ
ᇍ݊᠔㛑䆚߿ⱘ䆒໛㒻㓁থ᣹݊⹀ӊᢑ䈵ⱘ԰⫼DŽ

䱣ⴔᯊ䯈ⱘ᥼⿏ˈ䖭ϔᛇ⊩Ёⱘ㔎䱋᮹ⲞᕄᰒDŽBIOS ᦤկⱘᢑ䈵ሖᰃᵕ݊ॳྟϨϡৠℹⱘDŽ
⬅Ѣ㔎УৠℹᗻˈBIOS ᢑ䈵ሖϡᕫϡ䞛⫼䕂䆶˄polled˅㗠ϡᰃЁᮁⱘㄪ⬹DŽ䖯ϔℹ䇈ˈ⬅ᢑ
䈵ሖ᠔‫؛‬ᅮⱘ໘⧚఼῵ᓣ‫؛‬䆒໘⧚఼Ꮉ԰Ѣᅲ῵ᓣˈ䖭ᑊϡᰃ᪡԰㋏㒳䖤㸠ᯊ᠔Փ⫼ⱘ῵ᓣDŽ
Ϟ䗄㉏Ԑⱘᢑ䈵ˈџᅲϞϔⳈ೼Փ⫼ˈԚҙҙ೼᪡԰㋏㒳㞾Вⱘᯊ‫׭‬Փ⫼DŽ

䖭ϔ῵ൟ䖬ᄬ೼݊Ҫᠽሩᗻ䯂乬˖ᔧ᳝ᮄⱘᡔᴃߎ⦄ⱘᯊ‫݊ˈ׭‬छ㑻੠ᠽሩ㛑࡯᳝䰤DŽ↨
བˈ㾚乥ᢑ䈵˄INT 10H˅ձ䴴ᵮВⱘ῵ᓣᴹ䗝ᢽ೒ᔶߚ䕼⥛DŽ㗠໻໮᭄ᮽᳳⱘߚ䕼⥛ˈ↨བ
320X200ˈᕜᖿህ䖛ᯊњDŽIBM থᯢ䖭ϔ᥹ষᯊˈϔᓔྟህ㗗㰥ࠄ䆹೒ᔶ῵ᓣⱘᠽሩᗻDŽԚ⬅
ѢՓ⫼㗙ⱘߚᬷᗻˈ೒ᔶ῵ᓣⱘᠽሩ⬅ᷛ‫ࠊޚ‬ᅮ㒘㒛៪㗙݀ৌ㕸ԧᴹㅵ⧚ˈ䖭ѯ㒘㒛াᰃㅔऩ
ⱘᠽሩॳ᳝῵ᓣ㗠≵᳝㗗㰥ࠄᅗӀⱘᅲ䰙ᛣНˈ↨བˈᇍ݊Ҫⱘѻકⱘ䞡㽕ᗻDŽ

䖭ϔ䕃ӊ῵ൟ‫ܕ‬䆌ᅲ⦄䆌໮ᑩሖᶊᵘϨᕐℸⳌѦ‫ݐ‬ᆍDŽᶊᵘⱘᅲ⦄ϞҢऩϔࠄ໮‫ⱘܗ‬䕃ӊ
㒘ӊഛ᳝DŽ෎ᴀᗱ䏃ᰃ˖޴Т᠔᳝ⱘᑩሖᶊᵘ䛑ᰃ∛㓪䇁㿔ᅲ⦄ˈॳ಴བϟ˖

ʄ Ӵ㒳
ʄ ぎ䯈䰤ࠊ
ʄ ᑊ䴲᠔᳝ⱘ㓪䆥఼䛑ᬃᣕ໻໮᭄໘⧚఼ⱘᄬ‫ټ‬῵ᓣˈгህᰃ big real mode
ʄ 䴲催㑻䇁㿔ᦣ䗄ⱘ䕃ӊ᥹ষᖙ乏Ꮉ԰Ѣ᳝䰤ⱘේᷜぎ䯈

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䳔㽕⊼ᛣⱘᰃˈᕜ໮䖥ᳳⱘ BIOS ᅲ⦄䛑Փ⫼ C 䇁㿔ᴹ߯ᓎϔѯ⡍ᅮⱘ㒘ӊˈЏ㽕ᰃ Setup


⿟ᑣDŽ‫݌‬ൟⱘ BIOS ᓔথᎹ‫݋‬ৠḋгᰃ⫼催㑻䇁㿔ᅲ⦄ⱘˈࣙᣀ CˈC++ҹঞ PerlDŽ

Option ROMs

PC BIOS Ў೎ӊЁⱘ⹀ӊᢑ䈵ᦤկњϔϾᕜ䞡㽕ᠽሩὖᗉ˖Option ROMDŽOption ROM


ᰃᄬ೼ѢᠽሩवЁⱘ BIOS ᠽሩ䚼ߚDŽሑㅵᔧᯊϡᰃབℸ㸼䗄ˈ Ԛ Option ROM ैᦤկњϢ᪡
԰㋏㒳Ё⹀ӊ偅ࡼ⿟ᑣϔḋⱘࡳ㛑˖‫ܕ‬䆌෎⸔䕃ӊ䆓䯂݊᮴⊩Ⳉ᥹䆓䯂ⱘ໪䆒DŽ

PC BIOS Option ROM ⱘᅲ⦄ᄬ೼䆌໮㔎䱋ˈࣙᣀ˖

ʄ Option ROM 㦋প㋏㒳‫ݙ‬ᄬ៪㗙݊Ҫ䌘⑤ᑊ≵᳝ϔϾᷛ‫ޚ‬DŽ䌘⑤߽⫼ৠḋ≵⫼ᕜདⱘ㾘


ᅮˈᇸ݊ᰃ≵᳝ᅮН೼䇗⫼䖛⿟Ё᠔‫ܕ‬䆌ⱘ᳔໻ේᷜぎ䯈DŽ
ʄ ᑊ≵᳝ϔϾᯢ⹂ⱘᮍ⊩ᴹ㾘ᅮ Option ROM བԩᇚ݊⡍ᗻࡴܹࠄ⹀ӊᢑ䈵ሖDŽВϾ՟
ᄤˈᅗᑊ≵᳝Ў SCSI वᅮНⳌ݇⡍ᗻˈҢ㗠ৃҹᇚ SCSI 䆒໛偅ࡼࡴܹࠄ㋏㒳⹀ӊᢑ䈵ሖDŽ⬅
ℸᇐ㟈 Option ROM ᮴⊩Փ⫼㗠߽⫼ᷛ‫ ⱘޚ‬INT 13 ⺕ⲬЁᮁᴹᅲ⦄DŽ
ʄ ≵᳝ᷛ‫ޚ‬ᮍ⊩ᴹ᥻ࠊ⬅ Option ROM ㅵ⧚ⱘ੠ЏᵓϞ㞾ᏺⱘ䆒໛П䯈ⱘਃࡼ乎ᑣDŽ
ʄ ≵᳝ϔϾ䖯ܹ Option ROM 䜡㕂⿟ᑣⱘ䗮⫼ᮍ⊩DŽ㱑✊䆌໮ Option ROM 䛑䳔㽕䖯㸠
䜡㕂ˈԚ䖰⿟䆓䯂 Option ROM ⱘ䜡㕂ֵᙃৃϡᰃϔӊᆍᯧⱘџᚙˈ಴Ў⬅ VBIOS ᅮНⱘᑩ
ሖⱘ㾚乥᥹ষ䳔㽕Ⳉ᥹ⱘ⹀ӊ䆓䯂ᠡ㛑䖒ࠄϔϾৃҹ᥹ফⱘᗻ㛑DŽ

Џᵓ⹀ӊ߱ྟ࣪

POST ⱘߎ⦄ˈ䈵ᕕⴔ⹀ӊ໡ԡᯊা䳔᳈ᇥⱘ߱ྟ࣪ℹ偸ⱘ䍟࢓DŽ䕃ӊᓔྟ߱ྟ࣪㋏㒳⹀ӊˈ
䖭⾡ࡲ⊩ⱘ޴⚍Ӭ࢓䱣ⴔᯊ䯈ⱘ᥼⿏বᕫ᳈ࡴさߎ˖
ʄ ⹀ӊˈᇸ݊ᰃ䲚៤⬉䏃ˈৃҹ䗮䖛‫ܕ‬䆌ᑇৄ೎ӊᣝ䳔∖߱ྟ࣪݊䜡㕂ᴹՓП䗮⫼DŽʄ Ⳍ
ᔧϔ䚼ߚ⹀ӊⱘ咬䅸ؐ䛑䴲ᐌ໡ᴖˈ݊߱ྟ࣪ᯧѢߎ䫭ǃ䌍ᯊˈϨ೼߱ྟ࣪ᯊऴ⫼໻䞣ⱘ
ぎ䯈DŽ
ʄ Ꮖ߱ྟ࣪ⱘ⹀ӊ䜡㕂䳔㽕कߚᯖ䌉ⱘ⹀ӊব᳈ᴹׂ໡䯂乬DŽ㗠೎ӊ᳔໮া䳔㽕᳈ᮄϔϾ
ROMˈ䖭ϔᮍ⊩᳈Ў㒣⌢DŽ䖭⾡ᚙ‫މ‬ϟ೎ӊᏆ㒣៤Ўњׂ໡㢃⠛㒘⹀ӊ㔎䱋ⱘϔϾЏ㽕᠟
↉DŽ

೼ᮽᳳⱘ 3& ҹঞ $7 ㋏㒳Ϟˈ3267 ⱘЏ㽕ࡳ㛑ᑊϡᰃ߱ྟ࣪ˈ㗠ᰃ㞾ẔDŽ䱣ⴔ⬉䏃఼ӊ䍞


ᴹ䍞〇ᅮˈ䲚៤ᑺॳᴹ䍞催ˈⳌᑨⱘᇍ䆒໛䖯㸠Ẕ⌟ⱘᖙ㽕ᗻ䗤⏤䰡ԢњˈԚᑊ≵᳝ᅠܼ⍜༅DŽ

㗠঺ϔѯ䳔∖߭䱣ⴔᯊҷⱘব᳈ˈᓔྟ䗤⏤⏏ࡴࠄ %,26 ᳔໻ⱘϔ䚼ߚЁњDŽВϾ՟ᄤˈ%,26


䋳䋷ࡴ䕑 &38 ⱘ 0LFURFRGHVˈৠᯊᓔྟ㽕䋳䋷ᦣ䗄㋏㒳‫ݙ‬᮴⊩㹿᪡԰㋏㒳᠔᥶⌟ࠄⱘ⹀ӊⱘሲ
ᗻDŽ

 ᑈ⫳ѻ㄀ϔৄ 3& ᯊˈЏᵓҹঞ޴Т᠔᳝ⱘ໪䆒व䛑᳝ϔѯ ',3 ᓔ݇㒘ˈԴৃҹ⫼䖭ѯ


',3 ᓔ݇㒘ᴹ䜡㕂䖭ѯ⹀ӊ䆒໛DŽ䜡㕂ⱘ‫ݙ‬ᆍ߭Ң෎ᴀⱘ᪡԰ˈ䇌བ ,2 䌘⑤ߚ䜡ˈⳈࠄᦣ䗄⡍
⅞ⱘ䆒໛⡍ᗻˈ↨བЏᵓⱘ‫ݙ‬ᄬ໻ᇣˈ㔥वⱘ 0$& ഄഔㄝˈҹঞ݊Ҫ㉏Ԑⱘϰ㽓DŽ䙷Ͼᯊ‫ⱘ׭‬
㋏㒳䜡㕂ᰃकߚೄ䲒ⱘˈ಴Ў䆒㕂ᵓवⱘ ,2 㣗ೈঞЁᮁᕜᆍᯧᓩ䍋‫ކ‬さDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䱣ⴔᵓ䕑ⱘѠᵕㅵ៤ᴀⱘᰒ㨫䰡Ԣˈᇍᵓवҹঞᵓ䕑䆒໛ⱘ䕃ӊ䜡㕂ህবᕫৃ㛑њDŽᘏ㒓
⦄೼Ꮖ㒣ৃҹᵮВњ˗䕃ӊ㋏㒳ˈࣙᣀ %,26 ೼‫ˈݙ‬䛑ৃҹ㕂Ѣጠܹᓣ䆒໛Ёˈ໻໮᭄ᚙ‫މ‬ϟ䛑
ৃҹᬃ䜡ᑊ⒵䎇ҪӀⱘ䌘⑤䳔∖DŽ

Ң䭓䖰ⱘ㾦ᑺⳟ݊䍟࢓ᰃϡᣖ䕑ѢІ㸠ᘏ㒓ⱘ໪ೈ䆒໛ᑊ≵᳝Փ⫼ᑊ㸠䆒໛᠔Փ⫼ⱘ䙷ѯ
Ӵ㒳䌘⑤DŽ ੠ 86% ᰃϔѯ䖭ḋⱘ՟ᄤˈϔϾІ㸠ᘏ㒓ৃҹՓ⫼Ⳍᔧᇥⱘৠϔ⹀ӊ䌘⑤ᴹᬃ
ᣕᕜ໮ 86% 䆒໛DŽ

೼ϔѯ催ッ᳡ࡵ఼Ϟˈᘏ㒓ⱘ߱ྟ࣪䖛⿟বᕫᵕ݊໡ᴖˈ䖭ϔ໡ᴖᗻᰃ⬅䳔㽕ᅮԡ᠔᳝ৃ
㛑䕧ܹˈ䕧ߎҹঞਃࡼ䆒໛㗠ᏺᴹⱘDŽ

(᳾ᅠˈ࠽ԭ 11 义)

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀Ѡゴ
෎ᴀⱘ (), ᶊᵘ
៥Ⳍֵᷛ‫↣ˈޚ‬ϾҎ䛑ᑨ䆹᳝
---Ш⊏ 㥿㔫

EFI ᦣ䗄њᇍᑇৄⱘϔϾৃ㓪⿟ⱘ᥹ষˈ䖭ϾᑇৄࣙᣀЏᵓˈ㢃⠛㒘ˈЁ༂໘⧚ऩ‫˄ܗ‬CPU˅
੠݊Ҫ㒘៤䚼ߚDŽEFI ‫ܕ‬䆌᪡԰㋏㒳乘໘⧚ˈ䖭䞠乘໘⧚ agents ৃҹᰃ OS loaders, 䆞ᮁ⿟ᑣˈ
੠ϔѯ㋏㒳ⱘᑨ⫼䕃ӊᠻ㸠ঞⳌ䗮᠔䳔㽕ⱘ݊ᅗᑨ⫼⿟ᑣˈࣙᣀ EFI 偅ࡼ੠ EFI ᑨ⫼⿟ᑣDŽEFI
Ў偅ࡼ੠ᑨ⫼⿟ᑣᦤկњϔϾ䴲ᐌ⏙᱄ⱘ᥹ষ㾘㣗ˈ೼䖭ϔゴЁ៥Ӏ䞡⚍ᣛߎ䖭Ͼ᥹ষⱘϔѯ
ᶊᵘ䕂ᒧDŽ䖭Ͼᶊᵘ䕂ᒧࣙᣀњ೼ EFI 㾘㣗Ёᦣ䗄ⱘϔ㒘ᇍ䈵੠᥹ষDŽ

⧚㾷 EFI ᑨ⫼⿟ᑣ੠偅ࡼⱘ෎⸔ᰃϔѯ EFI ⱘὖᗉˈ䖭Ͼὖᗉ೼ EFI1.1 㾘㣗ЁᅮНDŽ‫؛‬䆒Դ


⦄೼ᰃ߮᥹㾺 EFI,ϟ䴶ⱘᦣ䗄ᇚЎԴ㾷䞞ϔᇣ䚼ߚ݇䬂ⱘ EFI ὖᗉˈ䖭Ͼὖᗉᑨ䆹ᯊࠏ೼Դⱘ㛥
⍋Ёҹ֓ѢԴ᳈དⱘᄺд EFI 㾘㣗DŽ
ʄ ෎Ѣ EFI ೎ӊ᠔ㅵ⧚ⱘᇍ䈵---⫼ᴹㅵ⧚㋏㒳ⱘ⢊ᗕˈࣙᣀ I/O 䆒໛ˈ‫ݙ‬ᄬˈ੠џӊDŽʄ EFI
System Table --- ⫼ᴹϢ㋏㒳ѸѦ᠔⫼ࠄⱘЏ㽕ⱘ᭄᥂ֵᙃ੠ߑ᭄䇗⫼᠔ᵘ៤᭄᥂㒧ᵘ
㸼DŽ
ʄ Handle ᭄᥂ᑧ੠ Protocols---Ꮖ㒣⊼‫ৃⱘݠ‬㹿䇗⫼ⱘϔѯᮍ⊩DŽ
ʄ EFI images ---ҷⷕЁՓ⫼ⱘ‫݋‬᳝ৃᠻ㸠⡍ᗻⱘѠ䖯ࠊҷⷕ䲚ড়
ʄ Events ---䕃ӊ⫼ᴹ㾺থⱘџӊ੠ડᑨ݊Ҫџӊ⌏ࡼϔ⾡ᮍᓣ
ʄ Device paths --- ⫼ᴹᦣ䗄⹀ӊᅲԧⱘϔ㒘᭄᥂㒧ᵘˈ՟བᘏ㒓ˈߚऎˈϔϾḐᓣ࣪䖛
ⱘ⺕Ϟ䴶 EFI image ⱘ᭛ӊৡDŽ

෎Ѣ EFI ೎ӊ᠔ㅵ⧚ⱘᇍ䈵

޴Ͼϡৠ㉏ൟⱘᇍ‫ৃڣ‬ҹ䗮䖛 EFI ᦤկⱘ᳡ࡵ⿟ᑣᴹㅵ⧚ˈϔѯ EFI 偅ࡼৃ㛑䳔㽕䆓䯂⦃๗


ব䞣ˈԚᰃ໻໮᭄偅ࡼᰃϡ䳔㽕䖭ḋⱘDŽџᅲϞᕜᇥⱘ EFI 偅ࡼ䳔㽕⫼ࠄ䅵఼᭄ˈⳟ䮼⢫៪㗙ᅲ
ᯊⱘᯊ䩳ֵোDŽEFI ⱘ System Table ᠡᰃ᳔䞡㽕ⱘ᭄᥂㒧ᵘˈ಴Ўᅗৃҹᦤկ䆓䯂 EFI ᴀ䑿ᦤ
կⱘ᠔᳝᳡ࡵ⿟ᑣ੠᠔᳝݊Ҫᦣ䗄ᑇৄ䜡㕂ֵᙃⱘ᭄᥂㒧ᵘDŽ

EFI System Table

EFI System Table ᰃ EFI Ё᳔䞡㽕ⱘ᭄᥂㒧ᵘˈEFI System Table ⱘᣛ䩜㹿ᔧ԰ܹষഄഔ


ⱘϔ䚼ߚখ᭄Ӵ䗦㒭↣Ͼ偅ࡼ੠ᑨ⫼⿟ᑣDŽ Ң䖭Ͼ᭄᥂㒧ᵘˈEFI ⱘৃᠻ㸠 Image 㛑ᕫࠄ㋏㒳
ⱘ䜡㕂ֵᙃ੠Єᆠⱘ EFI ᳡ࡵ⿟ᑣˈࣙᣀབϟ˖
ʄ EFI Boot Services
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ʄ EFI Runtime Services


ʄ Protocol Services

EFI Boot Service ੠ EFI Runtime Services ᰃ䗮䖛৘㞾ⱘ㸼ᴹ䆓䯂ⱘˈ䖭ϸϾ㸼ⱘܹষഄ


ഔᄬ೼Ѣ EFI System Tableˈ䖭ϸϾ㸼䞠䴶ৃҹՓ⫼ⱘ Services ⱘϾ᭄੠㉏ൟ೼↣Ͼ EFI ⠜ᴀ
ⱘ㾘㣗ᰃ೎ᅮⱘˈEFI Boot Service ੠ EFI Runtime Services ೼ EFI1.10 㾘㣗ЁᅮНˈ೼ EFI1.10
㄀ಯゴᦣ䗄њ䖭ѯ EFI 偅ࡼ㒘៤ⱘ᳡ࡵ⿟ᑣⱘᐌ㾘⫼⊩DŽ

Protocol services ᰃϔ㕸 GUID ੑৡⱘߑ᭄੠᭄᥂ⱘ䲚ড়ˈGUID ᰃϔϾ 16 Ͼᄫ㡖ⱘଃϔ


ⱘ᭄᥂ˈ೼ EFI1.10 㾘㣗ⱘ䰘ᔩ A Ё᳝ᅮНDŽ↨䕗‫݌‬ൟⱘˈProtocol services ⫼ᴹᦤկ䆒໛ⱘ
䕃ӊᢑ䈵ˈ՟བ䕧ܹ䕧ߎ᥻ࠊৄˈ⺕Ⲭ੠㔥㒰䆒໛ˈ✊㗠ҪӀ㛑໳ᡞᑇৄϞᕜ໮ৃ⫼ⱘ䆒໛ᢑ
䈵៤䗮⫼᳡ࡵ⿟ᑣDŽProtocols ᰃ EFI ೎ӊᠽሩࡳ㛑ⱘᴎࠊˈEFI1.10 㾘㣗ᅮНњ䍙䖛 30 ⾡ϡৠ
ⱘ Protocolsˈ੠ EFI ೎ӊⱘϡৠ⫼⊩ˈEFI 偅ࡼৃҹѻ⫳᳈໮ⱘ Protocols ᴹᠽሩᑇৄⱘࡳ㛑DŽ

Handle ᭄᥂ᑧ

Handle ᭄᥂ᑧ⬅ handles ੠ protocols 㒘៤ˈhandles ⬅ϔϾ៪໮Ͼ protocols 㒘៤ˈ


protocols ߭ᰃ⬅ GUID ᴹੑৡⱘ᭄᥂㒧ᵘԧˈ䖭Ͼ᭄᥂㒧ᵘԧৃ㛑ᰃぎˈৃ㛑ࣙ৿᭄᥂ˈৃ
㛑ࣙ৿᳡ࡵ⿟ᑣˈ៪㗙ৠᯊࣙᣀ᭄᥂੠᳡ࡵ⿟ᑣDŽ೼ EFI ⱘ߱ྟ࣪Ёˈ㋏㒳೎ӊˈEFI 偅ࡼ੠ EFI
ᑨ⫼⿟ᑣ߯ᓎ handlesˈᑊЎ↣Ͼ handle ᣖϞϔϾ៪໮Ͼ protocolsDŽ೼ handle ᭄᥂ᑧЁֵ
ᙃᰃܼሔⱘˈ㗠Ϩ㛑㹿ӏԩϔϾৃᠻ㸠ⱘ EFI Image 䆓䯂DŽ

Handle ᭄᥂ᑧᰃ EFI ೎ӊ䳔㽕㓈ᡸⱘ᳔䞡㽕ⱘᇍ䈵ᑧDŽ䖭Ͼ handle ᭄᥂ᑧᰃ᠔᳝ EFI


handles ⱘ߫㸼ˈ↣Ͼ EFI handle ⬅㋏㒳೎ӊߚ䜡ϔϾଃϔⱘ handle 㓪োDŽ䖭Ͼଃϔⱘ㓪ো
ህᰃ handle ᭄᥂ᑧЁܹষⱘĀ䩹࣭āˈ↣Ͼ handle ᭄᥂ᑧЁܹষ໘䛑ᰃϔϾ៪໮Ͼ protocol
ⱘ䲚ড়ˈᣖࠄ EFI handl Ϟ䴶ⱘ protocol ㉏ൟ‫އ‬ᅮњ䖭Ͼ handle ⱘ㉏ൟDŽϔϾ EFI handle
ৃҹԧ⦄ϟ䴶䖭ḋⱘ㉏ൟ㒘ӊ˖
ʄ ৃᠻ㸠ⱘ Imagesˈ՟བ EFI Driver ੠ EFI ᑨ⫼䕃ӊDŽ
ʄ 䆒໛ˈ՟བ㔥㒰᥻ࠊ఼੠⹀Ⲭߚऎ
ʄ EFI ᳡ࡵ⿟ᑣˈ՟བ EFI 㾷य़㓽੠ EBC 㰮ᢳᴎ

ϟ䴶ⱘ೒ 2.1 ሩ⼎њϔ䚼ߚⱘ handle ᭄᥂ᑧDŽ䰸њ handles ੠ protocols ҹ໪ˈ ↣Ͼ


protocol 䖬᳝ϔϾᇍ䈵ⱘ߫㸼ˈ䖭Ͼ߫㸼⫼ᴹ䎳䏾ાѯ agents ℷ೼Փ⫼ાѯ protocolsDŽ䖭
ϾֵᙃᇍѢ EFI 偅ࡼⱘ䖤㸠ᴹ䆆ᰃ䴲ᐌ݇䬂ⱘˈ಴Ўℷᰃ䗮䖛䖭ḋⱘֵᙃᴹՓ EFI 偅ࡼ㹿ᅝܼⱘ
㺙䕑ˈᓔྟˈ‫ذ‬ℶˈ੠ौ䕑ᯊ≵᳝ӏԩⱘ䌘⑤‫ކ‬さDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 2.2 ሩ⼎њ೼ handle ᭄᥂ᑧЁৃ㛑ߎ⦄ⱘϡৠ㉏ൟⱘ handle ҹঞ৘⾡ϡৠ handle ㉏


ൟП䯈ⱘ݇㋏ˈ᠔᳝ⱘ handle 䛑ᄬ೼ѢৠϔϾ handle ᭄᥂ᑧˈ↣Ͼ handle ㉏ൟⱘऎ߿⬅
handle ϟ䴶ⱘ protocol ⱘ㉏ൟ‫އ‬ᅮDŽ೼ϔϾ᪡԰㋏㒳⦃๗ϟⱘ᭛ӊ㋏㒳 handlesˈ೼ϔϾᇍ
䆱ᳳ䯈ᰃ೎ᅮⱘˈԚᰃҪӀⱘؐᰃϡᅮⱘDŽϢℸ㉏Ԑⱘˈ೼ C 䇁㿔ᑧЁˈҢϔϾ fopen ߑ᭄Ё
䖨ಲⱘ handleˈ೼ϡৠⱘ䖯⿟៪೼ৠϔ䖯⿟ⱘϡৠ䇗⫼Ёˈϡ䳔㽕ᦤկϔϾ⡍ᅮⱘؐDŽHandle
াᰃϔϾ⫼ᴹㅵ⧚⢊ᗕⱘЈᯊؐDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Protocols

EFI ⱘৃᠽሩ⡍ᗻৃҹЎ Protocol ᦤկᕜ໻䰤ᑺⱘ㒘ড়ˈEFI 偅ࡼ੠ EFI Protocol ᳝ⱘᯊ‫׭‬


↨䕗ᆍᯧ⏋⎚DŽ㱑✊ҪӀⱘ݇㋏ᕜᆚߛˈԚᰃҪӀᰒ✊ᰃϡৠⱘϰ㽓ˈEFI 偅ࡼᰃϔϾৃᠻ㸠ⱘ
EFI Imageˈ䗮䖛ৠᯊᅝ㺙໮⾡ protocol ੠໮⾡ handle ᴹᅲ⦄ᅗⱘࡳ㛑DŽ

EFI protocol ᰃϔѯߑ᭄ᣛ䩜੠᭄᥂㒧ᵘԧ៪㗙㾘㣗ᅮНⱘ APIs ⱘϔϾ䲚ড়ˈ᳔ᇥᴹ䆆ˈ


GUID ᖙ乏㽕㹿ᅮНˈ៥Ӏৃҹ䅸Ў䖭Ͼ GUID ᰃ Protocol ⱘⳳᅲৡᄫˈਃࡼ᳡ࡵ⿟ᑣˈ՟བ
LocateProtocol ህᰃ⫼䖭Ͼ GUID ᴹ೼ handle ᭄᥂ᑧЁᶹᡒᅗ᠔䳔㽕ⱘ ProtocolDŽProtocol
䗮ᐌӮࣙ৿ϔѯߑ᭄੠᭄᥂㒧ᵘԧˈ៥Ӏ⿄ПЎ Protocol ᥹ষ㒧ᵘԧˈϟ䴶ⱘҷⷕձ⃵ሩ⼎њ
೼ EFI1.10 㾘㣗 9.6 ゴ㡖ЁᅮНⱘ Protocol ՟ᄤˈ⊼ᛣⳟ䞠䴶ϸϾߑ᭄੠ϔϾ᭄᥂ऎᰃᗢМᅮ
НⱘDŽ

Sample GUID
#define EFI_COMPONENT_NAME_PROTOCOL_GUID \
{0x107a772c,0xd5e1,0x11d4,0x9a,0x46,0x0,0x90,
0x27,0x3f,0xc1,0x4d}
Protocol Interface Structure
typedef struct _EFI_COMPONENT_NAME_PROTOCOL {
EFI_COMPONENT_NAME_GET_DRIVER_NAME
GetDriverName;
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

EFI_COMPONENT_NAME_GET_CONTROLLER_NAME
GetControllerName;
CHAR8
*SupportedLanguages;
} EFI_COMPONENT_NAME_PROTOCOL;

೒⠛ 2.3 ሩ⼎њ೼ handle ᭄᥂ᑧЁⱘϔϾ handle ੠ protocolˈ 䖭Ͼ handle ੠ protocol


ᰃ⬅ϔϾ EFI 偅ࡼѻ⫳ⱘˈ Protocol ⬅ GUID ੠ Protocol ⱘ᥹ষ㒧ᵘԧ㒘៤DŽ ᕜ໮ᯊ‫ˈ׭‬Protocol
䖬᳝ϔѯ⾕᭄᳝᥂䳔㽕ѻ⫳䖭Ͼ Protocol ⱘ EFI driver এ㓈ᡸDŽProtocol ⱘ᥹ষ㒧ᵘԧᴀ䑿া
ᰃㅔऩࣙ৿њᣛ৥ Protocol ‫݋‬ԧߑ᭄ⱘᣛ䩜ˈProtocol ߑ᭄ᴀ䑿ᰃ㹿ࣙ৿೼ EFI 偅ࡼ䞠䴶ⱘˈ
ऩϾ EFI 偅ࡼ㛑໳ѻ⫳ϔϾ៪໮Ͼ Protocolˈ䖭প‫އ‬Ѣ䖭Ͼ偅ࡼᴀ䑿ⱘ໡ᴖᗻDŽ

ϡᰃ᠔᳝ⱘ Protocols ೼ EFI1.10 㾘㣗Ё䛑᳝ᅮНˈ೼ᓔথࣙ˄EDK˅Ёህ᳝ᕜ໮䖭ḋⱘ


ProtocolsˈᅗӀᦤկњ䴲ᐌᑓ䯨ⱘࡳ㛑ᠽሩˈ೼⡍ᅮᑨ⫼ᓔথЁӮ⫼ᕫࠄˈԚᰃ䖭ѯ Protocols
≵᳝೼ EFI1.10 ⱘ㾘㣗ЁᅮНˈᑨЎᅗӀϡӮᦤկਃࡼ OS ੠‫ݭ‬ϔϾ偅ࡼ᠔ᖙ䳔໪䚼᥹ষDŽℷᰃ
ᮄⱘ Protocol ⱘѻ⫳ᠡ㛑Փ෎Ѣ EFI ⱘ㋏㒳㛑໳䱣ⴔᯊ䯈ⱘ᥼⿏㗠ᕫࠄᠽሩˈ಴Ўᮄⱘ䆒໛ˈ
ᮄⱘᘏ㒓ˈᮄⱘᡔᴃⱘӮ䱣Пϡᮁⱘߎ⦄DŽ
Ƶ9DUVWRUHᇍ (), 㒳ϔⱘѠ䖯ࠊᄬ‫ټ‬ᇍ䈵ᢑ䈵ⱘ᥹ষ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ƶ&RQ,Qᦤկᄫヺ䕧ܹⱘ᳡ࡵ⿟ᑣ
Ƶ&RQ2XWᦤկᄫヺ䕧ߎⱘ᳡ࡵ⿟ᑣ
Ƶ6WG(UUᦤկ䫭䇃ֵᙃ䕧ߎⱘ᳡ࡵ⿟ᑣ
ƵPULPDU\&RQ,Qϔ㑻㾚೒䕧ܹ᥻ࠊৄ
Ƶ9JD0LQL3RUWᦤկ㾚乥೒ᔶⶽ䰉䕧ߎⱘ᳡ࡵ⿟ᑣDŽ
Ƶ8VE$WDSL೼ 86% ᘏ㒓Ϟᢑ䈵ऎഫ䆓䯂ⱘ᳡ࡵ⿟ᑣ
(), ᑨ⫼⿟ᑣᎹ‫ࣙ݋‬гࣙ৿њ㛑໳೼ϔѯᑇৄᡒࠄⱘ (),3URWRFROV
Ƶ333'HDPRQ⚍ᇍ⚍ण䆂偅ࡼ
Ƶ5DPGLVN೼䱣ᴎᄬপᄬ‫˄఼ټ‬5$0˅㓧‫ކ‬䞠䴶ⱘ᭛ӊ㋏㒳
Ƶ7&3,3Ӵ䕧᥻ࠊ㔥㒰䗮䆃णᅮ

OS loader ੠偅ࡼϡᑨ䆹ձ䌪Ϟ䴶䖭ѯ Protocolsˈ಴Ў䖭ѯ Protocols ϡ㛑㹿ֱ䆕೼↣Ͼ


EFI ‫ݐ‬ᆍⱘ㋏㒳Ёᄬ೼DŽOS loader ੠偅ࡼᑨ䆹াձ䌪Ѣ㛑೼ EFI1.10 㾘㣗Ёᡒࠄⱘҹঞᑇৄ䆒
䅵ᣛᅮ䳔㽕ⱘ Protocolsˈ՟བ 64 ԡ᳡ࡵ఼䆒䅵ᑨ⫼ᣛफDŽ

EFI ⱘৃᠽሩⱘ⡍ᗻ‫ܕ‬䆌↣Ͼϡৠᑇৄᓔথ㗙ৃҹ๲ࡴϧ䮼ⱘ ProtocolsDŽՓ⫼䖭ѯ


Protocolsˈ㛑໳ᠽሩ EFI ⱘ㛑࡯ᑊϨ䆓䯂⣀᳝ⱘ䆒໛੠᥹ষˈৠᯊ੠݊ԭⱘ EFI ԧ㋏ण䇗Ꮉ԰DŽ

಴Ў Protocol ᰃҹ GUID ᴹ“ੑৡ”ⱘˈ᠔ҹϡᑨ䆹᳝ Protocols ৠৡDŽ೼ЎϔϾᮄⱘ


Protocol ҹ GUID ᴹੑৡⱘᖙ乏䴲ᐌᇣᖗˈEFI ᴀ䑿‫؛‬䆒ϔϾ GUID াӮ⫼ࠄϔϾ Protocol ϞDŽ
࠾ߛ੠㉬䌈៪㗙᠟ࡼׂᬍϔϾ⦄᳝ⱘ GUID ӮՓ䞡໡ GUID ⱘߎ⦄៤Ўৃ㛑ˈ៥Ӏ㽕䙓‫ܡ‬䖭ḋ
‫خ‬DŽϔϾᛣ໪ࣙ৿њ䞡໡ⱘ GUID ⱘ㋏㒳೼ᡒ Protocol ⱘᯊ‫ৃ׭‬㛑Ӯᡒࠄ঺໪ϔϾ Protocolˈ
䗴៤㋏㒳ⱘዽ⑗DŽ䖭ḋⱘ bugˈ㽕ᡒߎ䯂乬᠔೼ᰃᕜೄ䲒ⱘDŽGUID г‫ܕ‬䆌ᴹੑৡ APIˈ䖭ḋ
ৃҹϡ⫼ᢙᖗ API ᴀ䑿ৡ⿄ⱘ‫ކ‬さDŽ೼ PC/AT BIOS ᶊᵘⱘ㋏㒳Ёˈ᳡ࡵ⿟ᑣᰃҹᵮВⱘᮍᓣ
ᴹ乎ᑣ๲ࡴⱘˈ՟བˈ㨫ৡⱘ Int15 ᥹ষ䗮䖛 AX ᴹӴ䗦᳡ࡵ㉏ൟⱘˈ಴Ў≵᳝᭛ḷᴹㅵ⧚੠㓈
ᡸ Int15 ᳡ࡵ⿟ᑣⱘᠽሩˈϔѯ BIOS ॖଚ৘㞾ᅮНњⳌৠⱘ᳡ࡵ㉏ൟ˄Ԛᰃࡳ㛑ϡৠ˅ˈ䖭ḋ
ህՓ᪡԰㋏㒳੠㋏㒳乘໘⧚ᑨ⫼䕃ӊⱘणৠᎹ԰䴲ᐌೄ䲒DŽEFI 䗮䖛 GUID ᴹੑৡ APIs ᑊ‫ܹݭ‬
㾘㣗ⱘᮍᓣˈՓᕫ API ᑇ㸵њᠽሩⱘ䳔㽕੠णৠᎹ԰ⱘ㛑࡯DŽ

Protocols ⱘՓ⫼

೼ Boot time ᯊˈӏԩ EFI ⱘҷⷕৃҹՓ⫼ ProtocolˈԚᰃᔧ ExitBootServices()ᠻ㸠ᅠˈ


handle ᭄᥂ᑧህϡ೼ᄬ೼DŽϔѯ EFI ਃࡼᯊ䯈ⱘ᳡ࡵ⿟ᑣՓ⫼ EFI ProtocolsDŽ

໮Ͼ Protocols ⱘᅲ՟

ϔϾ handle ৃҹ᳝䆌໮Ͼ Protocols ᅝ㺙೼Ϟ䴶ˈԚᰃৃ㛑↣ϔ⾡㉏ൟⱘ Protocol া᳝


ϔϾˈгህᰃ䇈ˈϔϾ handle ৃ㛑ϡӮ᳝䍙䖛ϔϾⱘⳌৠ㉏ൟⱘ ProtocolDŽ৺߭ˈ೼Փ⫼ϔ
Ͼ handle ⱘ⡍ᅮ Protocol ⱘᯊ‫׭‬Ӯ᳝ϡ⹂ᅮᗻDŽ

Ԛᰃˈ偅ࡼৃҹѻ⫳໮Ͼ⡍ᅮⱘ Protocol ᑊϨᡞҪӀᣖ೼ϡৠⱘ handle Ϟ䴶DŽPCI I/O


protocol ህᰃ䖭ḋⱘˈPCI ⱘᘏ㒓偅ࡼӮЎ↣ϔϾⱘ PCI device ᅝ㺙ϔϾ PCI I/O ProtocolDŽ
↣Ͼ PCI I/O Protocol 䞠䴶ⱘ᭄᥂ᰃḍ᥂݊᠔೼ⱘ PCI 䆒໛ᴹ䜡㕂ⱘˈࣙᣀ EFI Option
Rom(OpROM)ⱘԡ㕂੠໻ᇣDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ৠᯊˈ↣Ͼ偅ࡼৃҹᅝ㺙ৠϔ Protocol ⱘϡৠᅮࠊ⠜ᴀˈা㽕ҪӀϡ㹿⫼೼ৠϔϾ Handle


Ϟ䴶DŽ՟བˈ↣Ͼ EFI 偅ࡼӮЎ㞾Ꮕⱘ Driver Image Handle ᅝ㺙ϔϾি‫“خ‬㒘ӊৡᄫ”ⱘ
protocolˈᔧ EFI_COMPONENT_NAME_PROTOCOL.GetDriverName 䖭Ͼߑ᭄㹿䇗⫼ⱘᯊ
‫ ↣ ˈ ׭‬Ͼ handle Ӯ 䖨 ಲ 偅 ࡼ ᠔ ᇍ ᑨ Image Handle ⱘ ৡ ᄫ DŽ ೼ 㣅 䇁 䇁 㿔 ⦃ ๗ ϟ ˈ
EFI_COMPONENT_NAME_PROTOCOL.GetDriverName()ߑ᭄೼ USB ᘏ㒓偅ࡼ handle Ϟ
䴶Ӯ䖨ಲ“USB bus driver”ˈԚᰃ೼ PXE 偅ࡼ handle Ϟ䴶߭Ӯ䖨ಲ“PXE base code driver.”

Tag GUID

ϔϾ Protocol ৃ㛑া⬅ϔϾ GUID 㒘៤ˈ䖭ḋⱘ GUID 㹿ি‫خ‬ᷛㅒ GUIDˈ 䖭ḋⱘ Protocol


ᰃᕜ᳝⫼ⱘˈ↨བ⫼ᴹᷛ䆄ϔϾ⡍⅞ⱘ device handleˈ៪㗙‫ܕ‬䆌݊Ҫⱘ EFI Images ᕜᆍᯧ
ⱘᡒࠄᅝ㺙᳝ᷛㅒ GUID ⱘ device handleDŽ೼ EDK ЁህՓ⫼ HOT_PLUG_DEVICE_GUID 䖭
ḋⱘᮍᓣᴹᷛ䆄‫݋‬᳝⛁ᦦᢨࡳ㛑䆒໛ⱘ device handlesDŽ

EFI Images

᠔᳝ⱘ EFI Images 䛑ࣙ৿ϔϾ PE/COFF Ḑᓣⱘ༈ᴹᅮН䖭↉ৃᠻ㸠ҷⷕˈPE/COFF ᰃᖂ


䕃೼ 1997 ৃ⿏ỡⱘᠻ㸠ԧ੠䗮⫼ᇍ䈵᭛ӊḐᓣ㾘㣗ЁᅮНⱘˈ䖭⾡ҷⷕৃҹ⫼೼ IA-32 ໘⧚఼ˈ
ᅝ㝒໘⧚఼ˈ៪㗙᳾ⶹⱘ໘⧚఼ˈҹঞ EFI Ѡ䖯ࠊҷⷕDŽ䖭Ͼ༈᭛ӊᅮНњ໘⧚఼੠ Image ⱘ
㉏ൟˈⳂ᳝ࠡ 3 ⾡໘⧚఼㉏ൟ੠ҹϟ 3 ⾡ Image ㉏ൟ㹿ᅮН˖
Ƶ(),ᑨ⫼⿟ᑣ䖭⾡,PDJHⱘ‫ݙ‬ᄬ䌘⑤੠⢊ᗕӮ೼ҪӀ䗔ߎⱘᯊ‫׭‬䞞ᬒDŽ
Ƶ(),%RRW6HUYLFH⿟ᑣ偅ࡼ䖭⾡,PDJHⱘ‫ݙ‬ᄬ䌘⑤੠⢊ᗕ೼䖯ܹ᪡԰㋏㒳Пࠡ䛑㹿ֱ
ᣕDŽᔧ26ORDGHU䇗⫼([LW%RRW6HUYLFHV ⱘᯊ‫׭‬㹿䞞ᬒDŽ
Ƶ(),5XQWLPH偅ࡼ䖭⾡,PDJHⱘ‫ݙ‬ᄬ䌘⑤੠⢊ᗕӮϔⳈᄬ೼ˈ䖭ѯ,PDJH੠(),᪡԰㋏
㒳ᑊᄬˈᑊϨ㛑໳㹿ᬃᣕ(),ⱘ᪡԰㋏㒳䇗⫼DŽ

EFI Iamge ḐᓣⱘӋؐ೼Ѣϡৠᮍѻ⫳ⱘѠ䖯ࠊ᭛ӊ㛑໳Ѧ⫼ˈ՟བˈᖂ䕃 Windows ੠


Linux ᪡԰㋏㒳Ўᬃᣕ EFI ⱘ᪡԰㋏㒳ⱘDŽ঺໪ˈ㄀ϝᮍᓔথⱘᢑ䈵⡍ᅮ⹀ӊⱘ EFI 偅ࡼˈ‫ڣ‬㔥
㒰᥹ষЏᴎᘏ㒓䗖䜡఼˄HBA˅៪㗙݊Ҫ䆒໛.EFI image 䗮䖛 Boot Service gBS->LoadImage()
㹿㺙䕑.EFI images ⱘ޴Ͼৃ⫼ⱘᬃᣕᄬ‫ⱘټ‬ഄᮍ᳝˖
Ƶ3&,वϞ䴶ⱘ([SDQVLRQ520V
Ƶ㋏㒳ⱘা䇏ᄬ䌂఼៪㗙㋏㒳ⱘIODVK㢃⠛
Ƶၦҟ䆒໛ˈ‫ˈⲬ⹀ڣ‬䕃Ⲭˈ‫Ⲭܝ‬ㄝ
Ƶ㔥㒰ਃࡼ᳡ࡵ఼

ᘏⱘᴹ䇈ˈEFI images ϡᰃ㹿㓪䆥੠䫒᥹೼ϔϾ೎ᅮԡ㕂DŽⳌডⱘˈEFI images 㛑໳㹿䞡


ᮄᅮԡˈ᠔ҹ EFI images 㛑໳㹿ᬒ೼㋏㒳‫ݙ‬ᄬⱘӏԩഄᮍ.Boot Service gBS->LoadImage()
Ӯ‫خ‬ҹϟᎹ԰˖
ƵЎℷ೼㹿䕀䕑ⱘLPDJHߚ䜡‫ݙ‬ᄬ
Ƶ㞾ࡼᇍLDPJH䖯㸠䞡ᮄᅮԡ
Ƶ೼KDQGOH᭄᥂ᑧЁ߯ᓎϔϾᮄⱘLPDJHKDQGOHˈᅝ㺙(),B/2$'('B,0$*(B35272&2/ⱘϔ
Ͼᅲ՟DŽ

䖭Ͼ EFI_LOADED_IMAGE_PROTOCOL ⱘᅲ՟ࣙ৿ EFI image Ꮖ㒣㹿㺙䕑ⱘֵᙃDŽ಴Ў

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䖭Ͼֵᙃ೼ handle ᭄᥂ᑧЁᰃ݅ᓔⱘˈ᠔ҹᇍѢ᠔᳝ⱘ EFI 㒘ӊᰃৃ⫼ⱘDŽ

೼ EFI Image 㹿 gBS->LoadImage()㺙䕑ҹৢˈᅗ㛑໳䗮䖛 gBS->StartImage ⱘ䇗⫼ᠻ


㸠DŽEFI Image ⱘ༈ࣙ৿њկ gBS->StartImage 䇗⫼ⱘܹষഄഔDŽ䖭Ͼܹষഄഔ᳝ 2 Ͼখ᭄˖
Ƶℷ㽕㹿㺙䕑ⱘ(),LPDJHⱘ,PDJHKDQGOH
Ƶᣛ৥(),6\VWHP7DEOHⱘᣛ䩜
᳝њ䖭ϸ乍ˈ㛑໳Փ(),LPDJH‫˖ࠄخ‬
Ƶ䆓䯂ᑇৄϞ䴶ৃ⫼ⱘ᠔᳝(),᳡ࡵ⿟ᑣDŽ
Ƶⶹ䘧(),,PDJHҢા䞠㹿㺙䕑ҹঞ㹿ᬒ೼‫ݙ‬ᄬⱘҔМԡ㕂DŽ

EFI Image ೼Ҫⱘܹষഄഔ䞠䴶ⱘ᪡԰ᕜ໻⿟ᑺϞপ‫އ‬᳝ EFI image ⱘ㉏ൟDŽ೒ 2.4 ሩ⼎


њϡৠⱘ EFI Image ⱘ㉏ൟ੠ϡৠሖ⃵ image П䯈ⱘ݇㋏DŽ

㸼,PDJH㉏ൟⱘᦣ䗄
Image ⱘ㉏ൟ ᦣ䗄

ᑨ⫼⿟ᑣ ϔ⾡ EFI image ⱘ㉏ൟ

EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION.ᠻ㸠ᯊˈᔧ image 䗔
ߎ៪Ңܹষ⚍䖨ಲᯊ䖭⾡ image Ӯ㹿㞾ࡼौ䕑.

OS loader ϔ⾡⡍⅞㉏ൟⱘⱘᑨ⫼⿟ᑣˈ䗮ᐌϡӮ䖨ಲ៪䗔ߎˈⳌডⱘˈᅗӮ䇗
⫼ EFI Boot Service gBS->ExitBootServices()ᴹᡞᑇৄⱘ᥻ࠊᴗҢ೎ӊ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ѹ㒭᪡԰㋏㒳DŽ

Driver ϔ⾡ EFI image ⱘ㉏ൟ

EFI_IMAGE_SUBSYSTEM_BOOT_SERVICE_DRIVER ៪ 㗙
EFI_IMAGE_SUBSYSTEM_RUNTIME_DRIVERDŽབᵰ䖭⾡ iamge 䖨
ಲ EFI_SUCCESSˈ䙷МᅗϡӮ㹿ौ䕑DŽབᵰҪ䖨ಲ䫭䇃ҷⷕˈ䙷Мᅗ
Ӯ㹿㞾ࡼҢ㋏㒳‫ݙ‬ᄬЁौ䕑DŽ೼㋏㒳‫ݙ‬ᄬЁ偏⬭ⱘ㛑࡯ᰃ偅ࡼ੠ᑨ⫼
⿟ᑣϡৠⱘഄᮍDŽ಴Ў偅ࡼ㛑೼‫ݙ‬ᄬЁ偏⬭ˈ᠔ҹҪӀ㛑ᦤկ᳡ࡵ⿟
ᑣ㒭݊Ҫ偅ࡼ੠ᑨ⫼⿟ᑣˈ៪㗙᪡԰㋏㒳DŽা᳝䖤㸠ᯊ偅ࡼ(runtime
drivers)೼䇗⫼ gBS->ExitBootServices()ҹৢ䖬㛑偏⬭‫ݙ‬ᄬDŽ

Service driver 䖭 ⾡ 偅 ࡼ Ӯ ೼ ϔ Ͼ ៪ ໮ Ͼ ᳡ ࡵ ⿟ ᑣ handle Ϟ 䴶 ࡴ 䕑 ϔ Ͼ ៪ ໮ Ͼ


protocolˈᑊϨᅗⱘܹষ⚍Ӯ䖨ಲ EFI_SUCESSDŽ

Initializing driver 䖭⾡偅ࡼϡӮѻ⫳ӏԩⱘ handle,гϡӮ೼ handle ⱘ᭄᥂ᑧЁ๲ࡴӏԩ


ⱘ protocol, ᅗাӮ䖯㸠ϔѯ߱ྟ࣪᪡԰ˈᑊϨ䖨ಲ䫭䇃ҷⷕDŽ᠔ҹ䖭
⾡偅ࡼᠻ㸠ᅠ៪㹿Ң㋏㒳‫ݙ‬ᄬЁौ䕑DŽ

Root bridge driver 䖭⾡ driver Ӯѻ⫳ϔϾ៪໮Ͼ controller handleˈ㗠䖭⾡ handle Ӯࣙ৿


ϔϾ Device Path Protocol ੠ϔϾᇍ㢃⠛ḍᘏ㒓ᦤկⱘ I/O 䌘⑤䕃ӊᮍ
ᓣᢑ䈵ߎᴹⱘ protocolˈ᳔ᐌ㾕ⱘ Root bridge driver ᰃЎᑇৄϞ䴶ⱘ
PCI root bridges ѻ⫳ handles ⱘϔϾ偅ࡼˈᑊϨѻ⫳ⱘ handle Ϟ䴶ᬃᣕ
Device Path Protocol ੠ PCI Root Bridge I/O Protocol.

EFI1.02 driver ϔ⾡䙉ᕾ EFI1.02 㾘㣗ⱘ偅ࡼDŽ䖭⾡㉏ൟⱘ偅ࡼϡӮ⫼ࠄ EFI Driver


ModelDŽ䖭⾡㉏ൟⱘ偅ࡼϡӮ೼䖭ӑ᭛ḷЁ䆺㒚䅼䆎DŽড㗠៥Ӏᓎ䆂ᡞ
EFI1.02 偅ࡼ䕀ᤶЎ䙉ᕾ EFI Driver Model ⱘ偅ࡼDŽ

EFI Driver Model driver ϔ⾡䙉ᕾ EFI1.10 㾘㣗ᦣ䗄ⱘ EFI 偅ࡼ῵ൟⱘ偅ࡼDŽ䖭⾡㉏ൟⱘ偅ࡼ


੠ Service driverˈInitializing driverˈRoot bridge driverˈEFI1.02 driver
ҢḍᴀϞᰃϡৠⱘˈ಴Ў䙉ᕾ EFI Driver Model ⱘ偅ࡼᰃϡ‫ܕ‬䆌᪡԰
⹀ӊ៪㗙೼ܹষ⚍ѻ⫳䆒໛Ⳍ݇ⱘ᳡ࡵ⿟ᑣDŽপ㗠ҷПⱘᰃˈ䖭⾡偅
ࡼⱘܹষ⚍া‫ܕ‬䆌⊼‫ݠ‬ϔ㒘೼ৢ䴶㋏㒳߱ྟ࣪䖯⿟Ё㹿ᓔྟ੠㒧ᴳⱘ
᳡ࡵ⿟ᑣDŽ

Device driver ϔ⾡䙉ᕾ EFI Driver Model ⱘ偅ࡼDŽ䖭⾡㉏ൟⱘ偅ࡼӮ೼ handle ᭄᥂


ᑧЁѻ⫳ϔϾ៪໮Ͼⱘ driver handle ៪㗙 driver image handleˈᑊ೼
handle Ϟᅝ㺙ϔϾ៪໮Ͼ Driver Binding Protocol ⱘᅲ՟DŽ䖭⾡㉏ൟⱘ
偅ࡼ೼ Driver Binding Protocol ⱘ start()ߑ᭄㹿䇗⫼ᯊϡӮѻ⫳ Child
handlesˈᅗাӮ೼⦄᳝ⱘ Controller handles Ϟ䴶๲ࡴ঺໪ⱘ I/O
protocolsDŽ

Bus driver ϔ⾡䙉ᕾ EFI Driver Model ⱘ偅ࡼDŽ䖭⾡㉏ൟⱘ偅ࡼӮ೼ handle ᭄᥂


ᑧЁѻ⫳ϔϾ៪໮Ͼⱘ driver handle ៪㗙 driver image handleˈᑊ೼
handle Ϟᅝ㺙ϔϾ៪໮Ͼ Driver Binding Protocol ⱘᅲ՟DŽ䖭⾡㉏ൟⱘ
偅ࡼ೼ Driver Binding Protocol ⱘ start()ߑ᭄㹿䇗⫼ᯊӮѻ⫳ᮄⱘ Child
handlesˈ㗠ϨгӮ೼ᮄⱘ Child handles Ϟ䴶๲ࡴ঺໪ⱘ I/O protocolsDŽ

Hybrid driver ϔ⾡䙉ᕾ EFI Driver Model ⱘ偅ࡼᑊϨ‫ݐ‬ᆍњ device drivers ੠ bus
drivers ⱘ⡍⚍ˈ䖭Ͼ⡍ᗻᣛˈ೼ Driver Binding Protocol ⱘ start()ߑ᭄
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㹿䇗⫼ᯊӮ೼⦄᳝ⱘ handles Ϟ䴶๲ࡴ঺໪ⱘ I/O protocolsˈ㗠ϨгӮ


ѻ⫳ᮄⱘ Child handlesDŽ

ᑨ⫼⿟ᑣ

ϔϾ EFI ⱘᑨ⫼⿟ᑣҢᅗⱘܹষ⚍ᓔྟᠻ㸠ˈᑊϨϔⳈᠻ㸠Ⳉࠄ೼ܹষ⚍Ё⺄ࠄ䖨ಲ៪㗙
boot service ⱘ EXIT()ߑ᭄㹿䇗⫼DŽᔧ㒧ᴳᯊˈᅗⱘ Image Ӯ㹿Ң‫ݙ‬ᄬЁौ䕑DŽϔ㠀ⱘ EFI ᑨ
⫼⿟ᑣⱘ՟ᄤ᳝ EFI shellˈEFI shell ⱘᣛҸˈࠋ flash 㢃⠛ⱘᎹ‫ˈ݋‬䆞ᮁᎹ‫݋‬DŽҢᑨ⫼⿟ᑣЁ䇗
⫼݊Ҫᑨ⫼⿟ᑣᰃᅠܼৃҹⱘDŽ

OS loader

ϔ⾡⡍⅞㉏ൟⱘ EFI ᑨ⫼⿟ᑣˈি‫خ‬Ā㋏㒳ਃࡼᓩᇐ⿟ᑣāˈᔧ OS loader Ꮖ㒣ᓎゟњ䎇


໳ⱘ㋏㒳෎⸔ᶊᵘᴹᥠᦵ㋏㒳䌘⑤ᯊˈӮ䇗⫼ ExitBootServices()DŽ䖭ᯊˈEFI Ӯ䞞ᬒ᠔᳝ⱘਃ
ࡼᯊ᳡ࡵ⿟ᑣ੠偅ࡼˈা⬭ϟ run-time ᳡ࡵ⿟ᑣ੠偅ࡼDŽ

偅ࡼ

EFI 偅ࡼ੠ EFI ᑨ⫼⿟ᑣⱘऎ߿೼Ѣˈ偅ࡼӮϔⳈ偏⬭‫ݙ‬ᄬˈ䰸䴲ϔϾ䫭䇃Ң偅ࡼⱘܹষ⚍


䖨ಲDŽEFI Ḍᖗ೎ӊˈਃࡼㅵ⧚㋏㒳ˈ៪㗙݊Ҫ EFI ᑨ⫼⿟ᑣৃҹ㺙䕑䖭ѯ偅ࡼDŽ

EFI1.02 偅ࡼ

ϔѯ㉏ൟⱘ EFI 偅ࡼ೼䱣ৢⱘ㾘㣗ЁᏆ㒣㹿छ㑻њDŽ೼ EFI1.02 ⱘᯊ‫ˈ׭‬偅ࡼᰃ೼偅ࡼ῵ൟ


≵᳝㹿ᅮНⱘᚙ‫މ‬ϟ߯ᓎⱘDŽEFI1.10 㾘㣗ᦤկњϔϾ偅ࡼ῵ൟᴹপҷ೼ EFI1.02 ᯊҷ߯ᓎ偅ࡼ
ⱘᮍᓣˈԚᰃৠᯊ‫ݐ‬ᆍ EFI1.02 ⱘ偅ࡼDŽEFI1.02 Ӯ೼ܹষ⚍偀Ϟᓔྟᅗⱘ偅ࡼDŽ䖭ḋᮍᓣᛣੇ
ⴔ偅ࡼᖙ乏偀Ϟᡒࠄᬃᣕⱘ䆒໛ˈᑊᅝ㺙Ϟ᠔䳔㽕ⱘ I/O protocolsˈ䖭⾡ᚙ‫މ‬ϟህ䳔㽕䗮䖛ᅮ
ᯊ఼䕂䆶ᴹᕫࠄ䆒໛DŽԚᰃ䖭⾡ᮍᓣϡӮ㒭㋏㒳ӏԩㄪ⬹ᴹ᥻ࠊ偅ࡼⱘ㺙䕑੠䖲᥹ˈ᠔ҹ EFI
Driver Model 㹿⫼ᴹ㾷‫އ‬䖭ѯ䯂乬ˈEFI Driver Model ೼ EFI1.10 㾘㣗ⱘ 1.6 ゴ㡖ЁᅮНDŽ

⍂⚍䕃ӊ䕙ࡽ(FPSWA)偅ࡼᰃϔ⾡ᐌ㾕ⱘ EFI1.02 偅ࡼDŽ݊Ҫⱘ EFI1.02 偅ࡼৃҹ೼ EFI ᑨ


⫼⿟ᑣᎹ‫ ࣙ݋‬1.02.12.38 ЁᡒࠄDŽЎњ‫ݐ‬ᆍᗻⱘ䳔㽕ˈEFI1.02 偅ࡼ㛑㹿䕀ᤶ៤䙉ᕾ EFI 偅ࡼ῵
ൟⱘ EFI1.10 偅ࡼDŽ

Boot Service and Runtime Drivers

Boot-time 偅ࡼӮ㹿㺙䕑೼ϔϾҹ EfiBootServicesCode ᷛ䆄ⱘ‫ݙ‬ᄬऎඳ‫ˈݙ‬᭄᥂ҹ


EfiBootServicesData ᴹᷛ䆄DŽ䖭ѯ‫ݙ‬ᄬ೼ gBS->ExitBootServices()䇗⫼ᅠҹৢህ㹿䕀ᤶЎৃ
⫼ⱘ‫ݙ‬ᄬDŽ

Runtime 偅ࡼ㹿㺙䕑೼ϔϾҹ EfiRuntimeServicesCode ᷛ䆄ⱘ‫ݙ‬ᄬऎඳ‫ˈݙ‬᭄᥂ҹ


EfiRuntimeServicesData ᴹᷛ䆄DŽ䖭ѯ‫ݙ‬ᄬ೼ gBS->ExitBootServices()䇗⫼ᅠҹৢ䖬ᰃ㹿ֱ
⬭ˈ಴ℸ㛑Փ Runtime 偅ࡼ㛑Ўℷ೼䖤㸠ⱘ᪡԰㋏㒳ᦤկ᳡ࡵ⿟ᑣˈ᠔ҹ Runtime 偅ࡼᖙ乏
㽕ᦤկ঺໪ϔϾ঺໪ⱘ䇗⫼ᴎࠊˈ಴Ў EFI handle ᭄᥂ᑧ೼ OS 䖤㸠ᯊᏆ㒣ϡᄬ೼њDŽ᳔ᐌ㾕
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ⱘ EFI Runtime 偅ࡼᰃ ⍂⚍䕃ӊ䕙ࡽ偅ࡼ(FPSWA.Efi)੠ 䗮⫼㔥㒰偅ࡼ᥹ষ˄UNDI˅偅ࡼDŽ݊


Ҫⱘ Runtime 偅ࡼ䛑ϡᗢМᐌ㾕DŽ঺໪ˈRuntime 偅ࡼⱘᅲ⦄੠偠䆕䛑↨ boot service 偅ࡼ
ೄ䲒ˈ಴Ў EFI ᬃᣕ Runtime ᳡ࡵ⿟ᑣ੠ Runtime 偅ࡼҢ⠽⧚ᇏഔ῵ᓣࠄ㰮ᢳᇏഔഄഔⱘবᤶDŽ
೼䖭Ͼ䕀ᤶⱘᐂࡽϟˈ᪡԰㋏㒳㛑໳⫼㰮ᢳഄഔᴹ䇗⫼ Runtime 偅ࡼDŽ䗮ᐌˈOS 䖤㸠೼㰮ᢳ
῵ᓣϟˈᅗᖙ乏䕀ᤶࠄ⠽⧚ᇏഔ῵ᓣϟᴹ䇗⫼ϔ㠀⿟ᑣDŽЎ⦄ҷⱘˈ໮໘⧚఼᪡԰㋏㒳䕀ᤶࠄ
⠽⧚ᇏഔ῵ᓣᰃ䴲ᐌ⌾䌍ⱘˈ಴Ў䳔㽕‫ކ‬ᥝ䕀ᤶᇏᡒऎ(TLB),ᑊ䲚ড়ण䇗᠔᳝ⱘ CPU ੠݊Ҫӏ
ࡵDŽ᠔ҹˈEFI ⱘ Runtime ᦤկњϔϾ䴲ᐌ᳝ᬜⱘ䇗⫼ᴎࠊˈ಴Ўϡ䳔㽕῵ᓣ䕀ᤶDŽ

џӊ੠ӏࡵⱘӬ‫ܜ‬㑻

џӊᰃ঺໪ϔ⾡䗮䖛 EFI ᳡ࡵ⿟ᑣᴹㅵ⧚ⱘᇍ䈵DŽϔϾџӊ㛑㹿߯ᓎ੠⍜䰸ˈᑊϨ㛑໘೼ㄝ


ᕙ⢊ᗕ៪㗙㾺থ⢊ᗕDŽϔϾ EFI image 㛑‫خ‬ҹϟⱘџᚙDŽ
Ƶѻ⫳ϔϾџӊ
Ƶ⍜䰸ϔϾџӊ
Ƶᶹ䆶ϔϾџӊᰃ৺㹿㾺থ
ƵㄝᕙϔϾџӊ㹿㾺থ
Ƶ䇋∖ϔϾџӊҢㄝᕙ⢊ᗕ䕀ᤶࠄ㾺থ⢊ᗕ

಴Ў EFI ϡᬃᣕЁᮁˈ᠔ҹᅗ㒭њдᛃѢЁᮁ偅ࡼ῵ൟⱘ偅ࡼᓔথ㗙ϔϾᣥ៬DŽপ㗠ҷПⱘˈ
EFI ᦤկ䕂䆶ⱘ偅ࡼDŽEFI 偅ࡼᇍѢџӊ᳔ᐌ⫼ⱘ⫼⊩ˈᰃ⫼ timer џӊᴹ‫ܕ‬䆌偅ࡼᴹ਼ᳳᗻⱘ
䕂䆶䆒໛DŽ೒ 2.5 ሩ⼎њ EFI ᠔ᬃᣕⱘϡৠ㉏ൟⱘџӊঞ䖭ѯџӊП䯈ⱘ݇㋏DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㸼 2.2 џӊ㉏ൟⱘᦣ䗄

џӊ㉏ൟ ᦣ䗄

ㄝᕙџӊ 䖭⾡џӊⱘ䗮ⶹߑ᭄↣ᔧ㹿⹂䅸៪Փ໘Ѣㄝᕙⱘᯊ‫׭‬㹿ᠻ㸠DŽ

㾺থџӊ 䖭⾡џӊⱘ䗮ⶹߑ᭄↣ᔧџӊҢㄝᕙ⢊ᗕ䖛⏵ࠄ㾺থ⢊ᗕⱘᯊ‫׭‬㹿䅵ߦᠻ
㸠DŽ

Boot Services ϔϾ⡍⅞㉏ൟⱘ㾺থџӊˈ䖭Ͼџӊ೼ EFI Boot Services ExitBootServices()


䗔ߎџӊ 㹿䇗⫼ⱘᯊ‫׭‬Ңㄝᕙ⢊ᗕ䖛⏵ࠄ㾺থ⢊ᗕˈ䖭Ͼ䇗⫼ℷདᰃᑇৄⱘ᥻ࠊᴗ
Ң೎ӊѸ㒭᪡԰㋏㒳ⱘᯊ䯈⚍DŽᔧ ExitBootServices()㹿䇗⫼ⱘᯊ‫ˈ׭‬䖭Ͼ
џӊⱘ䗮ⶹߑ᭄㹿䅵ߦᠻ㸠

䆒㕂㰮ᢳഄ ϔ Ͼ ⡍ ⅞ ㉏ ൟ ⱘ 㾺 থ џ ӊ ˈ 䖭 Ͼ џ ӊ ೼ EFI Runtime Service


ഔᕅᇘџӊ SetVirtualAddressMap()㹿䇗⫼ⱘᯊ‫׭‬Ңㄝᕙ⢊ᗕ䖛⏵ࠄ㾺থ⢊ᗕDŽ䖭Ͼ䇗
⫼ℷདᰃ᪡԰㋏㒳䇋∖ EFI runtime 㒘ӊҢ⠽⧚ᇏഔ῵ᓣ㺙ᤶࠄ㰮ᢳᇏഔ῵
ᓣⱘџӊ⚍DŽ᪡԰㋏㒳ᦤկ㰮ᢳഄഔⱘ᯴ᇘDŽᔧ SetVirtualAddressMap()㹿
䇗⫼ⱘᯊ‫ˈ׭‬䖭Ͼџӊⱘ䗮ⶹߑ᭄㹿䅵ߦᠻ㸠DŽ

Timer ϔϾ㉏ൟ㾺থџӊˈ䖭ϾџӊӮ೼ϔϾᣛᅮᯊ䯈䖛ৢҢㄝᕙ⢊ᗕ䖛⏵ࠄ㾺
џӊ থ⢊ᗕDŽᬃᣕ਼ᳳ timer џӊ੠ऩ⃵ᠻ㸠 Timer џӊˈᔧϔϾ⡍ᅮᯊ䯈䖛ৢˈ
䖭Ͼџӊⱘ䗮ⶹߑ᭄㹿䅵ߦᠻ㸠DŽ

਼ᳳ timer ϔϾ㉏ൟ㾺থџӊˈ䖭ϾџӊӮҹϔᅮⱘ乥⥛Ңㄝᕙ⢊ᗕ䖛⏵ࠄ㾺থ⢊ᗕDŽ
џӊ ᔧϔϾ⡍ᅮᯊ䯈䖛ৢˈ䖭Ͼџӊⱘ䗮ⶹߑ᭄㹿䅵ߦᠻ㸠DŽ

ऩ ⃵ ᠻ 㸠 ϔϾ㉏ൟ㾺থџӊˈ䖭ϾџӊӮ೼ϔᅮᯊ䯈਼ᳳ䖛ৢҢㄝᕙ⢊ᗕ䖛⏵ࠄ㾺
Timer џӊ থ⢊ᗕDŽᔧϔϾ⡍ᅮᯊ䯈䖛ৢˈ䖭Ͼџӊⱘ䗮ⶹߑ᭄㹿䅵ߦᠻ㸠DŽ

↣Ͼџӊ᳝ҹϟⱘ 3 Ͼ‫ܗ‬㋴˖
ƵџӊⱘӏࡵӬ‫ܜ‬㑻˄73/˅
Ƶ䗮ⶹߑ᭄
Ƶ䗮ⶹ⦃๗

ㄝᕙџӊⱘ䗮ⶹߑ᭄೼џӊ㹿⹂䅸៪㹿㕂Ѣㄝᕙ⢊ᗕᯊ㹿ᠻ㸠ˈ㾺থџӊⱘ䗮ⶹߑ᭄↣ᔧ
೼џӊҢㄝᕙ⢊ᗕ䕀ᤶࠄ㾺থ⢊ᗕᯊ㹿ᠻ㸠ˈ䗮ⶹ⦃๗೼↣⃵䗮ⶹߑ᭄㹿ᠻ㸠ⱘᯊ‫׭‬㹿Ӵ䗦㒭
䗮ⶹߑ᭄DŽTPL ᰃ䗮ⶹߑ᭄㹿ᠻ㸠ⱘӬ‫ܜ‬㑻ᅮНDŽ㸼 2.3 ՟ߎњᔧࠡᅮНⱘ 4 Ͼ TPL Ӭ‫ܜ‬㑻DŽ঺
໪ ⱘ TPL ৃ ҹ ೼ ҹ ৢ 㹿 ᅮ Н ߎ ᴹ DŽ ↨ བ ϔ Ͼ ‫ ݐ‬ᆍ ⱘ TPL list ৃ ҹ ೼ TPL_NOTIFY ੠
TPL_HIGH_LEVEL П䯈๲ࡴϔ㋏߫ⱘЁᮁ TPLˈᴹЎ EFI ᦤկЁᮁᮍᓣⱘ I/O ᬃᣕDŽ

㸼 2.3 ೼ EFI ЁᅮНⱘӏࡵӬ‫ܜ‬㑻

ӏࡵӬ‫ܜ‬㑻 ᦣ䗄

73/B$33/,&$7,21 (),,PDJHᠻ㸠ⱘӬ‫ܜ‬㑻

73/B&$//%$&. ໻໮᭄䗮ⶹߑ᭄ⱘӬ‫ܜ‬㑻

73/B127,)< ໻໮᭄,2᪡԰ᠻ㸠ⱘӬ‫ܜ‬㑻

73/B+,*+B/(9(/ 7LPHUЁᮁⱘӬ‫ܜ‬㑻

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

TPL ᦤկњϟ䴶 2 Ͼ⫼䗨˖


ƵᅮН䗮ⶹߑ᭄ᠻ㸠ⱘӬ‫ܜ‬㑻
Ƶѻ⫳䫕

ᇍѢӬ‫ܜ‬㑻ᅮНˈা᳝೼ৠᯊџӊ᳝໮Ͼџӊ໘Ѣ㾺থ⢊ᗕⱘᯊ‫ˈ׭‬ԴᠡӮ⫼ࠄ䖭ϾᴎࠊDŽ
೼䖭ѯᚙ‫މ‬ϟˈᑨ⫼⿟ᑣ‫ܜ‬ᠻ㸠㹿⊼‫ݠ‬៤催Ӭ‫ܜ‬㑻ⱘ䗮ⶹߑ᭄DŽৠᯊˈ催Ӭ‫ܜ‬㑻ⱘ䗮ⶹߑ᭄㛑
ЁᮁԢӬ‫ܜ‬㑻䗮ⶹߑ᭄ⱘᠻ㸠DŽ

ᇍѢѻ⫳䫕ˈ಴Ў EFI ᬃᣕ single-timer Ёᮁˈ೼ℷᐌ⦃๗Ё䖤㸠ⱘҷⷕ੠೼Ёᮁ⦃๗ϟ䖤


㸠ⱘҷⷕ㛑䆓䯂ࠄⳌৠⱘ᭄᥂㒧ᵘDŽབᵰ᳈ᮄࠄϔϾ݅ѿⱘ᭄᥂ऎඳ㗠䖭Ͼ᭄᥂ऎඳজϡᰃॳ
ᄤᗻⱘ˄Atomic˄ॳᄤᗻ˅˖џࡵЁࣙ৿ⱘ᪡԰㹿ⳟ‫خ‬ϔϾ䘏䕥ऩ‫ˈܗ‬䖭Ͼ䘏䕥ऩ‫ܗ‬Ёⱘ᪡԰
㽕Мܼ䚼៤ࡳˈ㽕Мܼ䚼༅䋹˅ˈ䖭ḋⱘ䆓䯂㛑໳ѻ⫳䯂乬੠ϡৃ乘᭭ⱘ㒧ᵰDŽEFI ᑨ⫼䕃ӊ៪
EFI 偅ࡼৃҹЈᯊᦤ催ӏࡵӬ‫ܜ‬㑻ᴹ䰆ℶ݅ѿ᭄᥂㒧ᵘ㹿ℷᐌ⦃๗੠Ёᮁ⦃๗ৠᯊ䆓䯂DŽᑨ⫼⿟
ᑣৃҹ䗮䖛Јᯊᦤ催ӏࡵӬ‫ܜ‬㑻ࠄ TPL_HIGH_LEVEL ᴹ߯ᓎϔϾĀ䫕āDŽ೼䖭Ͼ㑻߿ऩ⃵ᠻ㸠
Timer џӊ䛑ৃҹ㹿䰏ℶˈԚᰃԴᖙ乏ሑৃ㛑ⱘ‫ޣ‬ᇥ㋏㒳໘Ѣ TPL_HIGH_LEVEL ⱘᯊ䯈ˈ಴Ў
೼䖭↉ᯊ䯈‫ˈݙ‬᠔᳝෎Ѣ Timer ⱘџӊ䛑Ӯ㹿䰏ℶˈӏԩ䳔㽕਼ᳳᗻ䆓䯂䆒໛ⱘ偅ࡼгӮ㹿䰏
ℶDŽTPL Ϣᖂ䕃 Windows 䞠䴶ⱘ IRQL ঞϔѯ Unix ⦃๗ϟⱘ SPL ⳌԐˈTPL ᦣ䗄њᇍ䌘⑤䆓䯂
᥻ࠊⱘϔϾӬ‫ܜ‬ᥦᑣᴎࠊDŽ

㄀ϝゴ
(), 偅ࡼ῵ൟ
ϛџϛ⠽ᑨ䆹ሑ䞣ㅔऩˈ㗠ϡᰃ᳈ㅔऩDŽ

—Albert Einstein

Ўњᬃᣕヺড়⦄᳝ᎹϮᷛ‫ޚ‬ᘏ㒓˄䅀བ 3&, ੠ 86% ᘏ㒓˅ⱘ䆒໛੠᳾ᴹⱘᶊᵘˈ(), ᦤկњ


ϔϾ偅ࡼ῵ൟˈ䆹῵ൟ㹿ᳳᳯѢ㛑໳ㅔ࣪䆒໛偅ࡼⱘ䆒䅵੠ᠻ㸠ˈᑊϨ㛑໳‫ޣ‬ᇣৃᠻ㸠᯴‫ⱘڣ‬
໻ᇣDŽ෎Ѣℸˈᶤѯ໡ᴖⱘ‫ݙ‬ᆍ㹿⿏ܹࠄᘏ㒓偅ࡼ੠᳈໻㣗ೈⱘ݀݅೎ӊ᳡ࡵПЁএDŽ䆒໛偅
ࡼ䳔㽕೼ࡴ䕑䖭Ͼ偅ࡼⱘ LDPJHKDQGOH Ϟѻ⫳ϔϾ 'ULYHU%LQGLQJ3URWRFROˈ✊ৢ䆹偅ࡼህ
Ӯㄝᕙ㋏㒳೎ӊᇚ݊䖲᥹ࠄϔϾ᥻ࠊ఼ϞDŽᔧ䖲᥹Пৢˈ䆹䆒໛偅ࡼህӮ䋳䋷೼᥻ࠊ఼ⱘ GHYLFH
KDQGOH Ϟѻ⫳ϔϾण䆂ˈ䆹ण䆂ᢑ䈵њ᥻ࠊ఼᠔ᬃᣕⱘ ,2 ᪡԰DŽᘏ㒓偅ࡼӮᠻ㸠䖭ѯⳌৠⱘӏ
ࡵˈ䰸ℸП໪ˈᘏ㒓偅ࡼгӮ䋳䋷ᶹᡒᘏ㒓Ϟⱘӏԩᄤ᥻ࠊ఼ˈᑊϨЎẔ⌟ࠄⱘ↣Ͼᄤ᥻ࠊ఼
߯䗴ϔϾ GHYLFHKDQGOHDŽ

ᇍѢϔϾ⡍ᅮⱘᑇৄˈ⬅೎ӊ᳡ࡵ⿟ᑣˈᘏ㒓偅ࡼ⿟ᑣ੠䆒໛偅ࡼ⿟ᑣᵘ៤ⱘ㒘ড়ᕜৃ㛑
Ӯ⬅ϡৠⱘॖଚᴹ⫳ѻˈ䖭ѯॖଚࣙᣀ 2(0ǃ,%9 ੠ ,+9DŽ㗠ᴹ㞾ϡৠॖଚⱘ䖭ѯ㒘ӊᖙ乏ⳌѦ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ण԰ᴹᦤկϔϾ㒳ϔⱘण䆂ˈ䆹ण䆂⫼ᴹᓩᇐ (), ‫ݐ‬ᆍⱘ᪡԰㋏㒳DŽ಴ℸˈЎњ๲ࡴ䖭ѯ㒘ӊ


ⱘणৠᎹ԰ⱘ㛑࡯ˈ៥Ӏᓎゟњ (), 偅ࡼ῵ൟὖᗉᑊ䆺㒚ᦣ䗄DŽ

ᴀゴᇍ EFI 偅ࡼ῵ൟ‫خ‬њㅔ㽕ὖ䗄ˈৠᯊᦣ䗄њ偅ࡼⱘܹষ⚍ˈЏᴎᘏ㒓᥻ࠊ఼ˈ䆒໛偅ࡼ


੠ᘏ㒓偅ࡼⱘ⡍ᗻˈҹঞ EFI 偅ࡼ῵ൟབԩ䇗ᑺ⛁ᦦᢨџӊDŽ

Ўԩ㽕೼ 26 ਃࡼПࠡᓎゟ偅ࡼ῵ൟਸ਼˛

೼ (), 偅ࡼ῵ൟϟˈা䳔㽕᳔ᇣ᭄Ⳃⱘ ,2 䆒໛໘Ѣ⌏ࡼПЁDŽ՟བˈ෎Ѣᔧࠡ %,26 ⱘ㋏


㒳˄䴲 (),˅ˈϔϾᢹ᳝໮Ͼ 6&6, 䆒໛ⱘ᳡ࡵ఼䳔㽕Փ᠔᳝ⱘ䖭ѯ 6&6, 䆒໛䛑໘Ѣ⌏ࡼПЁ˄ᴹ
ᓩᇐ᪡԰㋏㒳˅䖭ᰃ಴Ў %,26 ⱘ ,1 ҷⷕᑊϡ㛑乘‫ⶹܜ‬䘧ાϾ䆒໛ࣙ৿ 26 ᓩᇐ⿟ᑣ˄݊াӮ
ᕾ㾘䐜ⶽⱘᇍ↣Ͼ䆒໛䖯㸠ᇱ䆩˅DŽ㗠 (), 偅ࡼ῵ൟাӮՓᇍѢਃࡼᖙ䳔ⱘ䚼ߚ䆒໛໘Ѣ⌏ࡼП
Ёˈ䖭ህՓᕫ㋏㒳ⱘᖿ䗳䞡ਃ៤Ўৃ㛑ˈᑊϨࡴ䗳њ݊ᅗ䆒໛▔⌏䖯ܹࠄ᪡԰㋏㒳ᔧЁDŽ䱣ⴔ
⍜䌍⬉ᄤ䆒໛㹿᥼৥᠔᳝ⱘᓔᬒᑇৄˈᇍѢᖿ䗳ਃࡼᯊ䯈ⱘ䳔∖ᰃकߚ䖿ߛⱘDŽ

偅ࡼ߱ྟ࣪
GULYHULPDJH ᭛ӊᖙ乏Ңᶤ⾡㉏ൟⱘၦҟЁࡴ䕑ˈ䖭ѯၦҟࣙᣀ 520ˈ䮾ᄬˈ⹀Ⲭˈ䕃Ⲭˈ
‫៪ˈⲬܝ‬㗙⫮㟇Ѣ㔥㒰㒓䏃DŽϔᮺϔϾ GULYHULPDJH 㹿㋏㒳Ẕ⌟ࠄПৢˈ䆹 LPDJH ህӮ㹿ਃࡼ
᳡ࡵⱘ /RDG,PDJH  ࡴ䕑ࠄ㋏㒳ⱘ‫ݙ‬ᄬ˄/RDG,PDJH  ⫼Ѣࡴ䕑 3(&2)) Ḑᓣⱘ LPDJH 䖯ܹࠄ
㋏㒳‫ݙ‬ᄬ˅DŽৠᯊ䆹偅ࡼⱘ KDQGOH 㹿⫳៤ˈᑊϨϔϾ /RDGHG,PDJH3URWRFRO ՟⿟㹿ᣖ䕑ࠄ䆹
KDQGOH Ϟˈ㗠ࣙ৿᳝ /RDGHG,PDJH3URWRFRO ՟⿟ⱘ KDQGOH ি‫ خ‬LPDJHKDQGOHDŽℸࠏ䆹偅ࡼ
ᑊ≵᳝ᓔྟˈ ݊াᰃ偏⬭೼‫ݙ‬ᄬПЁㄝᕙᓔྟDŽ೒  ሩ⼎њ偅ࡼⱘ LPDJHKDQGOH 㹿 /RDG,PDJH
䇗⫼Пৢⱘ⢊ᗕDŽ


偅ࡼ㹿ਃࡼ᳡ࡵⱘ /RDG,PDJH ࡴ䕑Пৢˈᅗ䳔㽕䗮䖛ਃࡼ᳡ࡵⱘ 6WDUW,PDJH 䖯㸠ਃࡼˈ
䖭䗖⫼Ѣ೼ (), ㋏㒳Ё㛑㹿ࡴ䕑੠ਃࡼⱘ৘⾡㉏ൟⱘ (), ᑨ⫼⿟ᑣ੠偅ࡼDŽ䙉ᕾ (), 偅ࡼ῵ൟ
ⱘ偅ࡼⱘܹষ⿟ᑣᖙ乏䙉ᕾϔѯϹḐⱘ㾘߭˖佪‫ˈܜ‬ϡ‫ܕ‬䆌⍝ঞ ӏԩ⹀ӊⱘ᪡԰ˈҙҙ‫ܕ‬䆌䗝
ᢽᗻⱘᅝ㺙ϔѯण䆂՟⿟ࠄ㞾Ꮕⱘ LPDJHKDQGOH Ϟˈ 䙉ᕾ (), 偅ࡼ῵ൟⱘ偅ࡼᖙ乏ᅝ㺙ϔϾ
'ULYHU%LQGLQJ3URWRFRO ࠄ㞾Ꮕⱘ LPDJHKDQGOH Ϟˈ঺໪ˈᅗ䖬ৃҹ䗝ᢽᗻഄᅝ㺙ϔѯण䆂ˈ
՟བ 'ULYHU&RQILJXUDWLRQ3URWRFROˈ'ULYHU'LDJQRVWLFV3URWRFROˈ៪㗙 &RPSRQHQW1DPH
3URWRFRODŽ䰸ℸПৢ໪ˈབᵰ偅ࡼᏠᳯৃҹ㹿ौ䕑ˈᅗৃҹ䗝ᢽᗻⱘ᳈ᮄ /RDGHG,PDJH3URWRFRO
ҹℸᴹᦤկ㞾Ꮕⱘ 8QORDG ᥹ষDŽ᳔ৢˈབᵰ偅ࡼ䳔㽕೼ਃࡼ᳡ࡵⱘ ([LW%RRW6HUYLFHV ࡳ㛑
㹿䇗⫼ⱘᯊ‫׭‬ᠻ㸠ϔѯ⡍⅞ⱘ᪡԰ˈᅗৃҹ䗝ᢽᗻⱘ߯ᓎϔϾᏺ᳝䗮ⶹࡳ㛑ⱘџӊˈᔧਃࡼ᳡
ࡵⱘ ([LW%RRW6HUYLFHV ࡳ㛑㹿䇗⫼ⱘᯊ‫ˈ׭‬䆹䗮ⶹࡳ㛑ህӮ㹿㾺থDŽࣙ৿᳝ 'ULYHU%LQGLQJ
3URWRFRO ՟⿟ⱘ LPDJHKDQGOH 㹿䅸Ўᰃ GULYHULPDJHKDQGOHDŽ೒  ড᯴њ೒  Ё᠔⼎ⱘ
LPDJHKDQGOH ೼ਃࡼ᳡ࡵ 6WDUW,PDJH 㹿䇗⫼ৢⱘৃ㛑䜡㕂DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Џᴎᘏ㒓᥻ࠊ఼

೼偅ࡼⱘܹষ⿟ᑣЁ偅ࡼϡ‫ܕ‬䆌᪡԰ӏԩⱘ⹀ӊDŽ಴ℸˈ㱑✊偅ࡼ㹿ࡴ䕑੠ਃࡼˈԚᰃҪ
Ӏ䛑೼ㄝᕙ㹿ਞⶹএㅵ⧚䆹㋏㒳ЁⱘϔϾ៪㗙໮Ͼ᥻ࠊ఼DŽ‫)( ڣ‬, ਃࡼㅵ⧚఼䖭ḋⱘϔϾᑇৄ
㒘ӊˈӮ䋳䋷ㅵ⧚偅ࡼ੠᥻ࠊ఼П䯈ⱘ䖲᥹DŽৃᰃˈेՓ೼㄀ϔϾ偅ࡼ੠᥻ࠊ఼㹿䖲᥹Пࠡˈ
ᶤѯ᳔߱ⱘ ೎᳝ⱘ ᥻ࠊ఼䳔㽕ᄬ೼ᴹ㹿偅ࡼㅵ⧚ˈ䖭ѯ᳔߱ⱘ ೎᳝ⱘ ᥻ࠊ఼ህᰃ໻ᆊⶹ䘧
ⱘЏᴎᘏ㒓᥻ࠊ఼DŽЏᴎᘏ㒓᥻ࠊ఼᠔ᦤկⱘ ,2 ᢑ䈵ᰃ⬅ (),偅ࡼ῵ൟ㣗ೈП໪ⱘ೎ӊ㒘ӊ
᠔ѻ⫳ⱘˈЏᴎᘏ㒓᥻ࠊ఼ⱘ GHYLFHKDQGOH ੠ ,2 ᢑ䈵ᖙ乏⬅ᑇৄϞⱘ೎ӊ‫ݙ‬Ḍ៪㗙ৃ㛑ϡ
䙉ᕾ (), 偅ࡼ῵ൟⱘ (), 偅ࡼѻ⫳DŽ‫݋‬ԧ䇋খ✻ 3&,+RVW%ULGJH,23URWRFRO 㾘㣗Ϟ䴶ᇍ 3&,
ᘏ㒓 ,2 ᢑ䈵ⱘ՟ᄤDŽ
ϔϾᑇৄৃҹⳟ԰ᰃϔ㒘 &38 ੠ϔ㒘ৃ㛑ࣙ৿ϔϾ៪㗙໮ϾЏᴎᘏ㒓ⱘ㢃⠛㒘ӊⱘ㒘ড়DŽ
೒  ሩ⼎њϔϾᢹ᳝ Q Ͼ &38 ੠ࣙ৿ P ϾЏḹⱘ㢃⠛㒘ⱘᑇৄDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑


೼ (), Ёˈ↣ϾЏḹ㹿㸼⦄ЎϔϾࣙ৿њ 'HYLFH3DWK3URWRFRO ՟⿟ⱘ GHYLFHKDQGOHˈ
੠ϔϾᢑ䈵ߎЏᴎᘏ㒓ৃҹᠻ㸠ⱘ ,2 ᪡԰ⱘण䆂՟⿟DŽ՟བˈ3&, Џᴎᘏ㒓᥻ࠊ఼ᬃᣕ 3&,+RVW
%ULGJH,23URWRFRODŽ೒  ሩ⼎њϔϾ 3&,Џḹⱘ GHYLFHKDQGOH ⱘ՟ᄤDŽ


3&, ᘏ㒓偅ࡼ㛑໳䖲᥹ࠄ䆹 3&, ЏḹˈᑊϨЎ㋏㒳Ёⱘ↣Ͼ 3&, 䆒໛߯䗴 FKLOGKDQGOHVˈ
✊ৢ 3&, 䆒໛偅ࡼ䳔㽕 㹿 䖲᥹ࠄ䖭ѯ FKLOGKDQGOH ϞˈᑊϨѻ⫳ৃ⫼Ѣਃࡼ (), ‫ݐ‬ᆍⱘ 26
ⱘ ,2 ᢑ䈵DŽ᥹ϟᴹⱘゴ㡖ᇚӮᦣ䗄෎Ѣ (), 偅ࡼ῵ൟᅲ⦄ⱘϡৠ㉏ൟⱘ偅ࡼDŽ(), 偅ࡼ῵ൟᰃ
䴲ᐌ♉⌏ⱘˈ᠔ҹ䖭䞠ϡӮ䅼䆎᠔᳝ৃ㛑ⱘ偅ࡼ㉏ൟDŽ៥Ӏ೼䖭䞠া䆆䗄Џ㽕ⱘ޴⾡偅ࡼ㉏ൟˈ
䖭ѯ偅ࡼ㉏ൟৃҹ԰Ў䆒䅵੠ᅲ⦄݊Ҫ㉏ൟ偅ࡼⱘ෎⸔DŽ

䆒໛偅ࡼ
䆒໛偅ࡼϡ‫ܕ‬䆌߯䗴ӏԩⱘᮄⱘ GHYLFHKDQGOHˈⳌডᅗাᰃ೼⦄ᄬⱘ䆒໛ KDQGOH Ϟᅝ㺙
݊ᅗⱘण䆂᥹ষDŽ໻໮᭄ᐌ㾕㉏ൟⱘ䆒໛偅ࡼ䋳䋷ᡞ ,2 ᢑ䈵ᣖࠄ⬅ᘏ㒓偅ࡼ᠔߯䗴ⱘ䆒໛
KDQGOH Ϟˈ䆹 ,2 ᢑ䈵ৃҹ㹿⫼Ѣਃࡼ (), ‫ݐ‬ᆍⱘ᪡԰㋏㒳ˈ䖭ѯ ,2 ᢑ䈵ህࣙᣀ՟བ 6LPSOH
7H[W2XWSXW6LPSOH,QSXW%ORFN,2 ੠ 6LPSOH1HWZRUN3URWRFRODŽ೒  ሩ⼎њϔϾ䆒
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

໛偅ࡼ㹿䖲᥹ࠡৢⱘ GHYLFHKDQGOHDŽ೼䖭Ͼ՟ᄤПЁˈ䆹 GHYLFHKDQGOH ᰃ ;<= ᘏ㒓ⱘᄤ䆒໛


KDQGOHˈ᠔ҹᅗࣙ৿њ ;<= ᘏ㒓ᬃᣕⱘ⫼Ѣ ,2 ᳡ࡵⱘ ;<=,2 ण䆂DŽ䆹 KDQGOH гࣙ৿њϔϾ
⬅ ;<= ᘏ㒓偅ࡼ߯ᓎⱘ 'HYLFH3DWK3URWRFRODŽϡᰃ᠔᳝ⱘ GHYLFHKDQGOH 䛑ᖙ乏᳝ 'HYLFH3DWK
3URWRFROˈԚᇍѢ⫼ᴹ㸼⼎㋏㒳Ё⠽⧚䆒໛ⱘ GHYLFHKDQGOH ᴹ䇈 'HYLFH3DWK3URWRFRO ᰃ
ᖙ乏ⱘˈ㗠㰮ᢳ䆒໛ⱘ KDQGOH ᰃϡࣙ৿ 'HYLFH3DWK3URWRFRO ⱘ DŽ

೒  ᠔⼎ⱘ䖲᥹ࠄᇍᑨ GHYLFHKDQGOH Ϟⱘ䆒໛偅ࡼᖙ乏Ꮖ㒣೼㞾Ꮕⱘ LPDJHKDQGOH Ϟ


ᅝ㺙ϞϔϾ 'ULYHU%LQGLQJ3URWRFRODŽ'ULYHU%LQGLQJ3URWRFRO ࣙ৿᳝ϝϾࡳ㛑ˈߚ߿Ў˖
6XSSRUWHG ˈ6WDUW ੠ 6WRS DŽ6XSSRUWHG Ẕ⌟䆹偅ࡼᰃϡᰃᬃᣕϔϾ㒭ᅮⱘ᥻ࠊ఼DŽ೼䆹
՟ᄤЁˈ偅ࡼᇚӮẔᶹ GHYLFHKDQGOH ᰃϡᰃᬃᣕ 'HYLFH3DWK3URWRFRO ੠;<=,23URWRFRODŽ
བᵰ偅ࡼⱘ 6XSSRUWHG ࡳ㛑Ẕ⌟䗮䖛ˈ䱣ৢˈᠡৃҹ䗮䖛䇗⫼偅ࡼⱘ 6WDUW ࡳ㛑ᇚ䆹偅ࡼ䖲
᥹ࠄ᥻ࠊ఼ϞDŽ6WDUW ࡳ㛑ᅲ䰙Ϟህᰃᇚ݊Ҫⱘ ,2 ण䆂⏏ࡴࠄ GHYLFHKDQGOH ϞDŽ೼䆹՟ᄤ
Ёˈᰃ %ORFN,23URWRFRO 㹿ᅝ㺙ࠄ GHYLFHKDQGOH ϞњDŽϢПᇍᑨ 'ULYHU%LQGLQJ3URWRFRO
䖬᳝ϔϾ 6WRS ࡳ㛑ˈՓ偅ࡼ‫ذ‬ℶㅵ⧚䆹 GHYLFHKDQGOHDŽ䖭ḋ䆒໛偅ࡼӮौ䕑 6WDUW ࡳ㛑Ё
ᅝ㺙ⱘ᠔᳝ण䆂DŽ
೼ (),'ULYHU%LQGLQJ3URWRFROⱘ 6XSSRUW 6WDUW ੠6WRS ࡳ㛑ЁˈᕫࠄϔϾ
ण䆂᥹ষᖙ乏Փ⫼ᮄⱘਃࡼ᳡ࡵⱘ 2SHQ3URWRFRO ߑ᭄ˈ䞞ᬒϔϾण䆂᥹ষᖙ乏Փ⫼ᮄⱘਃࡼ
ण䆂ⱘ &ORVH3URWRFRO ߑ᭄DŽ2SHQ3URWRFRO ੠ &ORVH3URWRFRO Ӯ᳈ᮄ⬅㋏㒳೎ӊ㓈ᡸⱘ
KDQGOH ᭄᥂ᑧˈҹℸএ䗑䏾ાѯ偅ࡼ೼Փ⫼ાѯण䆂᥹ষDŽ+DQGOH ᑧПЁⱘֵᙃৃҹ㹿⫼Ѣ㦋
ᕫ݇Ѣ偅ࡼ੠᥻ࠊ఼ⱘֵᙃDŽᮄⱘਃࡼ᳡ࡵ 2SHQ3URWRFRO,QIRUPDWLRQ ৃ⫼Ѣ㦋ᕫᔧࠡℷ೼Փ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

⫼ᶤϾ⡍ᅮण䆂᥹ষⱘ㒘ӊ߫㸼DŽ

ᘏ㒓偅ࡼ
Ң (), 偅ࡼ῵ൟⱘ㾖⚍ᴹⳟˈᘏ㒓偅ࡼ੠䆒໛偅ࡼᅲ䋼ϞᰃϔḋˈଃϔⱘᏂ߿೼Ѣᘏ㒓偅
ࡼӮЎ೼䆹ᘏ㒓Ϟথ⦄ⱘᄤ᥻ࠊ఼߯䗴ᮄⱘ GHYLFHKDQGOHDŽ಴ℸˈᘏ㒓偅ࡼ↨䍋䆒໛偅ࡼᴹӮ
⿡ᖂ᳝⚍໡ᴖˈԚᰃড䖛ᴹ䖭гㅔ࣪њ䆒໛偅ࡼⱘ䆒䅵੠ᅲ⦄DŽᘏ㒓偅ࡼЏ㽕᳝ϸ⾡㉏ൟˈ㄀
ϔ⾡ᰃ೼㄀ϔ⃵䇗⫼ 6WDUW ᯊᘏ㒓偅ࡼӮЎ᠔᳝ⱘᄤ᥻ࠊ఼߯䗴 KDQGOHˈ㄀Ѡ⾡ᰃ‫ܕ‬䆌䗮䖛
໮⃵ᇍ 6WDUW ࡳ㛑ⱘ䇗⫼ᴹЎ᠔᳝ᄤ᥻ࠊ఼߯䗴 KDQGOHDŽ㄀Ѡ⾡㉏ൟⱘᘏ㒓偅ࡼ೼ᬃᣕᖿ䗳
ਃࡼⱘ㛑࡯Ϟᰃ䴲ᐌ᳝⫼ⱘˈᅗ‫ܕ‬䆌↣⃵߯䗴޴Ͼ⫮㟇ᰃϔϾᄤ KDQGOHˈ೼䳔㽕㢅䌍ᕜ䭓ᯊ䯈
এᵮВ᠔᳝ⱘᄤ᥻ࠊ఼ⱘᘏ㒓Ϟ˄䅀བ 6&6, ᘏ㒓˅ˈ䖭ৃҹ೼ᑇৄਃࡼ䖛⿟Ё㡖ⳕᕜ໮ⱘᯊ䯈DŽ
೒  ሩ⼎њ 6WDUW 㹿䇗⫼ࠡৢⱘᘏ㒓᥻ࠊ఼ⱘᷥ㒧ᵘDŽ䖯ܹᘏ㒓᥻ࠊ఼㒧⚍ⱘ㰮㒓ҷ㸼њࠄ
ᘏ㒓᥻ࠊ఼ⱘ⠊䕜᥻ࠊ఼ⱘ䫒᥹ˈབᵰᘏ㒓᥻ࠊ఼ᴀⳕህᰃϔϾЏᴎᘏ㒓᥻ࠊ఼ˈ䙷Мᅗ≵᳝
⠊䕜᥻ࠊ఼DŽ㒧⚍ $ǃ%ǃ&ǃ' ੠ ( ҷ㸼ᘏ㒓᥻ࠊ఼ⱘ  Ͼᄤ᥻ࠊ఼DŽ


ϔϾᬃᣕ䇗⫼ϔ⃵ 6WDUW ✊ৢ߯䗴ϔϾᄤ KDQGOH ⱘᘏ㒓偅ࡼৃ㛑Ӯ䗝ᢽ佪‫ܜ‬Ў & ᄤ᥻ࠊ
఼߯䗴 KDQGOHˈ✊ৢᰃЎ (ˈ᥹ϟᴹᰃЎ $% ੠ 'ˈᇍѢ䖭⾡㉏ൟⱘ㸠Ўˈ'ULYHU%LQGLQJ3URWRFRO
ⱘ 6XSSRUWHG ǃ6WDUW ੠ 6WRS ϝϾࡳ㛑ᰃ䎇໳♉⌏ⱘDŽ
ᘏ㒓偅ࡼ䳔㽕Ўᅗ߯䗴ⱘ↣Ͼᄤ䆒໛ KDQGOH ᅝ㺙ण䆂᥹ষˈ㟇ᇥˈᅗ䳔㽕Ўᄤ᥻ࠊ఼ᅝ㺙
ϔϾण䆂᥹ষˈ䆹᥹ষᦤկњᘏ㒓᳡ࡵⱘ ,2 ᢑ䈵DŽབᵰᘏ㒓偅ࡼ߯䗴њϔϾҷ㸼⠽⧚䆒໛ⱘ
ᄤ KDQGOHˈ䙷Мᘏ㒓偅ࡼᖙ乏೼䆹ᄤ KDQGOH Ϟᅝ㺙ϔϾ 'HYLFH3DWK3URWRFRO ՟⿟DŽᘏ㒓偅
ࡼৃҹЎ↣Ͼᄤ KDQGOH 䗝ᢽᗻⱘᅝ㺙ϔϾ %XV6SHFLILF'ULYHU2YHUULGH3URWRFROˈ䆹ण䆂
೼᳝໮Ͼ偅ࡼ㹿䖲᥹ࠄᄤ᥻ࠊ఼ᯊ㹿Փ⫼DŽᮄⱘਃࡼ᳡ࡵ &RQQHFW&RQWUROOHU ӮՓ⫼ᶊᵘϞᅮ
НⱘӬ‫ܜ‬㾘߭Ў㒭ᅮⱘ᥻ࠊ఼䗝ᢽ᳔ড়䗖ⱘ偅ࡼDŽ೼᧰㋶偅ࡼᯊˈ%XV6SHFLILF'ULYHU2YHUULGH
3URWRFRO ⱘӬ‫ܜ‬㑻催Ѣϔ㠀ⱘ偅ࡼˈԢѢ 3ODWIRUP'ULYHU2YHUULGH3URWRFRODŽ3&, ᘏ㒓Ϟህ
᳝ᘏ㒓⡍ᅮ偅ࡼ䗝ᢽⱘ՟ᄤˈ3&, ᥻ࠊ఼ RSWLRQ520 Ёⱘ 3&, ᘏ㒓偅ࡼ↨ᑇৄ݊Ҫഄᮍⱘ 3&,
ᘏ㒓偅ࡼ‫݋‬᳝᳈催ⱘӬ‫ܜ‬㑻DŽ೒ሩ⼎њϔϾ՟ᄤˈ⬅ ;<= ᘏ㒓偅ࡼ߯ᓎⱘᄤ䆒໛ KDQGOH ᬃ
ᣕϔϾ EXVVSHFLILFGULYHURYHUULGH ⱘᴎࠊDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᑇৄ㒘ӊ
೼ (), 偅ࡼ῵ൟЁˈ೼ᶤϾᑇৄϞ偅ࡼ੠᥻ࠊ఼П䯈ⱘ䖲᥹੠ᮁᓔⱘࡼ԰ᰃ໘Ѣᑇৄ೎ӊ
ⱘ᥻ࠊПϟⱘˈ䖭䗮ᐌᰃ⬅ (),%RRW0DQDJHU ᴹᅠ៤ˈгৃ㛑᳝݊ҪⱘᮍᓣDŽᑇৄ೎ӊৃҹՓ
⫼ਃࡼ᳡ࡵᮄⱘ &RQQHFW&RQWUROOHU ੠ 'LVFRQQHFW&RQWUROOHU ᴹ߸ᮁાѯ᥻ࠊ఼Ꮖ㒣㹿偅
ࡼˈાѯ䖬≵᳝DŽབᵰᑇৄᏠᳯᠻ㸠㋏㒳ⱘ䆞ᮁ៪㗙ᰃᅝ㺙ϔϾ᪡԰㋏㒳ˈ䙷Мᅗৃҹ䗝ᢽЎ
᠔᳝ৃ㛑ⱘਃࡼ䆒໛䖲᥹偅ࡼDŽབᵰᶤϾᑇৄᏠᳯਃࡼϔϾ乘ᅝ㺙ⱘ᪡԰㋏㒳ˈᅗৃҹ䗝ᢽা
Ў ਃ ࡼ 䆹 ᪡ ԰ ㋏ 㒳 ᠔ ᖙ 䳔 ⱘ 䆒 ໛ 䖲 ᥹ 偅 ࡼ DŽ (), 偅 ࡼ ῵ ൟ 䗮 䖛 ᮄ ⱘ ਃ ࡼ ᳡ ࡵ
&RQQHFW&RQWUROOHU ੠ 'LVFRQQHFW&RQWUROOHU ᬃᣕϞ䗄ϸ⾡῵ᓣⱘ᪡԰DŽ䰸ℸП໪ˈ⬅Ѣ䋳
䋷ਃࡼᑇৄⱘᑇৄ㒘ӊᖙ乏ձ䴴䆒໛䏃ᕘᴹᅲ⦄᥻ࠊৄ䆒໛੠ਃࡼ䗝乍ࡳ㛑ˈ᠔ҹ೼ (), 偅ࡼ
῵ൟЁ᠔᳝ⱘ᳡ࡵ੠ण䆂݊ᅲᏆ㒣䗮䖛䆒໛䏃ᕘӬ࣪䖛њDŽ

ᑇৄৃ㛑гӮ䗝ᢽѻ⫳ϔϾি‫ خ‬3ODWIRUP'ULYHU2YHUULGH3URWRFRO ⱘৃ䗝ण䆂ˈ䆹ण


䆂Ϣ %XV6SHFLILF'ULYHU2YHUULGH3URWRFRO ᰃⳌԐⱘˈԚᰃैᢹ᳝᳈催ⱘӬ‫ܜ‬ᴗˈ䖭ህ㒭
ќᑇৄ೎ӊ᳔催ⱘӬ‫ܜ‬㑻এ‫އ‬ᅮાϔϾ偅ࡼ㹿䖲᥹ࠄાϔϾ᥻ࠊ఼DŽ3ODWIRUP'ULYHU2YHUULGH
3URWRFRO ᣖ᥹೼㋏㒳ЁⱘϔϾ KDQGOH Ϟˈབᵰ೼㋏㒳Ё䆹ण䆂ᄬ೼ⱘ䆱ᮄⱘਃࡼ᳡ࡵ
&RQQHFW&RQWUROOHU ᇚӮՓ⫼䆹ण䆂DŽ

⛁ᦦᢨџӊ
೼䖛এˈ೼乘ਃࡼ⦃๗Ё㋏㒳೎ӊϡᖙএ໘⧚⛁ᦦџӊDŽ✊㗠䱣ⴔ‫ ڣ‬86% 䖭ḋⱘᘏ㒓ⱘߎ
⦄ˈ᳔㒜⫼᠋ৃҹӏԩᯊ䯈⏏ࡴ੠⿏䰸䆒໛ˈᇍѢ (), 偅ࡼ㉏ൟᴹ䇈ˈ⹂ֱ㛑໳ᦣ䗄䖭ѯ㉏ൟ
ⱘᘏ㒓ᰃ䴲ᐌ䞡㽕ⱘDŽᇍѢϔϾᬃᣕ⛁⏏ࡴ៪㗙⛁⿏䰸䆒໛ⱘᘏ㒓ᴹ䇈ˈ݊ᘏ㒓偅ࡼ㽕ᦤկᇍ
䖭ѯџӊⱘᬃᣕDŽᇍѢ䖭ѯ㉏ൟⱘᘏ㒓ˈϔѯᑇৄⱘㅵ⧚ᇚϡᕫϡ⿏ܹࠄᘏ㒓偅ࡼЁDŽ՟བˈ
೼ϔϾᑇৄϞᔧϔϾ䬂Ⲭ㹿⛁⏏ࡴࠄ 86% ᘏ㒓Ёˈ᳔㒜⫼᠋ᇚӮᳳᳯ䆹䬂Ⲭ㹿偅ࡼDŽ86% ᘏ㒓偅
ࡼᑨ䆹㛑໳Ẕ⌟䆹⛁⏏ࡴџӊˈᑊϨЎ䆹䬂Ⲭ䆒໛߯䗴ϔϾᄤ KDQGOHDŽ✊㗠ˈ⬅Ѣ䰸䴲
&RQQHFW&RQWUROOHU 㹿䇗⫼৺߭偅ࡼᇚϡӮϢ᥻ࠊ఼䖲᥹ˈ䆹䬂ⲬᇚϡӮ៤ЎϔϾৃ⫼ⱘ䕧ܹ
䆒 ໛ DŽ ᠔ ҹ ᔧ ϔ Ͼ ⛁ ⏏ ࡴ џ ӊ থ ⫳ ᯊ ˈ 㽕 Փ 䬂 Ⲭ 偅 ࡼ ৃ ⫼ ˈ 86% ᘏ 㒓 偅 ࡼ 㽕 এ 䇗 ⫼

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

&RQQHFW&RQWUROOHU DŽ ঺ ໪ ˈ ᔧ ϔ Ͼ ⛁ ⿏ 䰸 џ ӊ থ ⫳ ᯊ 86% ᘏ 㒓 偅 ࡼ ᇚ ᖙ 乏 䇗 ⫼
'LVFRQQHFW&RQWUROOHU DŽ
䆒໛偅ࡼгӮফ䖭ѯ⛁ᦦᢨџӊⱘᕅડDŽ‫ ڣ‬86% 䖭ḋⱘᘏ㒓ˈ䆒໛ৃҹ೼≵᳝ӏԩ乘‫ܜ‬䗮
ⶹⱘᚙ‫މ‬ϟ㹿⿏ࡼDŽ䖭ህᛣੇⴔˈ86% 䆒໛偅ࡼⱘ 6WRS ࡳ㛑ᖙ乏ЎϔϾ㋏㒳Ёϡ‫ݡ‬ᄬ೼ⱘ䆒
໛㒜ℶ偅ࡼˈ᠔ҹˈӏԩϡ㛑ᅠ៤ⱘ ,2 䇋∖ᖙ乏೼ϡ᪡԰䆒໛⹀ӊⱘᚙ‫މ‬ϟ㹿⏙䰸DŽ
䗮ᐌˈ⏏ࡴᇍ⛁ᦦᢨџӊⱘᬃᣕ໻໻ⱘ๲ࡴњᘏ㒓偅ࡼ੠䆒໛偅ࡼⱘ໡ᴖᗻDŽᰃ৺๲ࡴ䖭
⾡ᬃᣕᰃ⬅偅ࡼ㓪‫ݭ‬Ҏਬ‫އ‬ᅮⱘˈ಴ℸᖙ乏೼乱໪໡ᴖᑺˈ偅ࡼ໻ᇣ੠乘ਃࡼ⦃๗ᇍ䖭Ͼ⡍ᗻ
ⱘ䳔∖П䯈ᴗ㸵DŽ
ϟ䴶ⱘϸϾᅲ՟ҷⷕ⌕⿟ֱ䆕њ䆒໛偅ࡼ⿟ᑣਬབԩᶹᡒ偅ࡼᴀ䑿ㅵ⧚ⴔⱘ‫׭‬䗝⹀ӊ䆒
໛DŽ䖭ѯᴎࠊࣙᣀ㄀ϔϾ՟ᄤЁⱘᶹⳟ᥻ࠊ఼ KDQGOH ੠㄀ѠϾ՟ᄤЁⱘẔᶹ䆒໛䏃ᕘDŽ
extern EFI_GUID gEfiDriverBindingProtocolGuid;
EFI_HANDLE gMyImageHandle;
EFI_HANDLE DriverImageHandle;
EFI_HANDLE ControllerHandle;
EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath;
//
// Use the DriverImageHandle to get the Driver Binding Protocol
// instance
//
Status = gBS->OpenProtocol (
DriverImageHandle,
&gEfiDriverBindingProtocolGuid,
&DriverBinding,
gMyImageHandle,
NULL,
EFI_OPEN_PROTOCOL_HANDLE_PROTOCOL
);
if (EFI_ERROR (Status)) {
return Status;
}
//
// EXAMPLE #1
//
// Use the Driver Binding Protocol instance to test to see if
// the driver specified by DriverImageHandle supports the
// controller specified by ControllerHandle
//
Status = DriverBinding->Supported (
DriverBinding,
ControllerHandle,
NULL
);

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

if (!EFI_ERROR (Status)) {
Status = DriverBinding->Start (
DriverBinding,
ControllerHandle,
NULL
);
}

return Status;
//

// EXAMPLE #2
//
// The RemainingDevicePath parameter can be used to initialize
// only the minimum devices required to boot. For example,
// maybe we only want to initialize 1 hard disk on a SCSI
// channel. If DriverImageHandle is a SCSI Bus Driver, and
// ControllerHandle is a SCSI Controller, and we only want to
// create a child handle for PUN=3 and LUN=0, then the
// RemainingDevicePath would be SCSI(3,0)/END. The following
// example would return EFI_SUCCESS if the SCSI driver supports
// creating the child handle for PUN=3, LUN=0. Otherwise it
// would return an error.
//
Status = DriverBinding->Supported (
DriverBinding,
ControllerHandle,
RemainingDevicePath
);
if (!EFI_ERROR (Status)) {
Status = DriverBinding->Start (
DriverBinding,
ControllerHandle,
RemainingDevicePath
);
}

return Status;

Ӿҷⷕ

ϝ⾡ϡৠ㉏ൟ偅ࡼⱘ 6WDUW ࡳ㛑ⱘᅲ⦄⊩߭㹿ਜ⦄೼䖭䞠DŽϔϾ偅ࡼⱘ 6WDUW ࡳ㛑ⱘᅲ


⦄ᮍ⊩Ӯᕅડࠄ䖭Ͼ偅ࡼⱘ 6XSSRUWUHG ࡳ㛑ⱘᅲ⦄ᮍ⊩DŽ(),B'5,9(5B%,1',1*B35272&2/ Ё
ⱘ᠔᳝᳡ࡵ䳔㽕݅ৠᎹ԰ҹ⹂ֱ೼ 6XSSRUWHG ੠ 6WDUW Ёᠧᓔ៪㗙ߚ䜡ⱘ䌘⑤೼ 6WRS Ё
㹿䞞ᬒDŽ

㄀ϔϾⱘᅲ⦄⊩߭ᰃϔϾㅔऩⱘ䆒໛偅ࡼˈ䆹偅ࡼϡӮ߯䗴ӏԩ঺໪ⱘ KDQGOHˈᅗাᰃᇚ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ϔϾ៪㗙໮Ͼण䆂ᣖ䕑೼ϔϾ⦄ᄬⱘ KDQGOH ϞDŽ㄀ѠϾᰃϔϾㅔऩⱘᘏ㒓偅ࡼˈ䆹偅ࡼᐌᐌ೼


㄀ϔ⃵䇗⫼ 6WDUW ᯊ߯䗴㞾Ꮕⱘ᠔᳝ᄤ KDQGOHˈᅗᑊϡӮЎᘏ㒓᥻ࠊ఼ KDQGOH ᣖ䕑ӏԩⱘ঺
໪ⱘण䆂DŽ㄀ϝϾᰃ↨䕗催㑻ⱘᘏ㒓偅ࡼˈ䆹偅ࡼৃҹ೼䖲㓁ⱘᇍ 6WDUW 䇗⫼ᯊ↣⃵া߯䗴ϔ
Ͼᄤ KDQGOHˈ៪㗙೼ϔ⃵䇗⫼ 6WDUW ᯊᅗ㛑໳߯䗴᠔᳝ⱘᄤ KDQGOH ៪㗙ᰃ࠽ԭ᠔᳝ⱘᄤⱘ
KDQGOHDŽ‫ݡ‬ᔎ䇗ϔ⃵ˈᅗᑊϡӮЎᘏ㒓᥻ࠊ఼ KDQGOH ᣖ䕑ӏԩⱘ঺໪ⱘण䆂DŽ

䆒໛偅ࡼ

䆒໛偅ࡼЁˈ⫼ 2SHQ3URWRFRO ᠧᓔ᠔᳝ᖙ䳔ⱘण䆂DŽབᵰ䆹偅ࡼ‫ܕ‬䆌Ϣ݊ᅗ偅ࡼ݅ѿ


㹿 ᠧ ᓔ ⱘ ण 䆂 ˈ 䙷 М ᅗ ᑨ 䆹 Փ ⫼ (),B23(1B35272&2/B%<B'5,9(5 ሲ ᗻ ᴹ
2SHQ3URWRFRO 2SHQ3URWRFRO ᠧᓔण䆂᥹ষⱘϔ⾡ᮍᓣ DŽབᵰ䆹偅ࡼϡ‫ܕ‬䆌Ϣ݊ᅗ偅ࡼ݅
ѿ 㹿 ᠧ ᓔ ⱘ ण 䆂 ˈ 䙷 М ݊ ᑨ 䆹 Փ ⫼ (),B23(1B35272&2/B%<B'5,9(5 Ϣ
(),B23(1B35272&2/B(;&/86,9( ⱘሲᗻᴹ 2SHQ3URWRFRO DŽ䆒໛偅ࡼЁՓ⫼ 2SHQ3URWRFRO
ⱘሲᗻᖙ乏੠ 6XSSRUWHG ЁՓ⫼ⱘ 2SHQ3URWRFRO ሲᗻⳌৠDŽ
བᵰ೼ℹ偸  Ёᇍ 2SHQ3URWRFRO ⱘӏԩ䇗⫼䖨ಲњϔϾ䫭䇃ˈ䙷М⫼ &ORVH3URWRFRO
݇ ᥝ ℹ 偸  Ё ᠧ ᓔ ⱘ ᠔ ᳝ ण 䆂 ˈ ᑊ Ϩ 䖨 ಲ ϔ Ͼ ⢊ ᗕ ⷕ ˈ 䆹 ⢊ ᗕ ⷕ ᴹ 㞾 Ѣ 䖨 ಲ 䫭 䇃ⱘᇍ
2SHQ3URWRFRO ⱘ䇗⫼
ᗑ⬹খ᭄ 5HPDLQLQJ'HYLFH3DWK
߱ྟ࣪⬅ &RQWUROOHU+DQGOH ᣛᅮⱘ䆒໛DŽབᵰϔϾ䫭䇃ߎ⦄ˈ⫼ &ORVH3URWRFRO ݇䯁
ᥝ೼ℹ偸  Ёᠧᓔⱘ᠔᳝ण䆂ˈᑊϨ䖨ಲ (),B'(9,&(B(5525DŽ
ߚ䜡੠߱ྟ࣪᠔᳝ⱘ᭄᥂㒧ᵘˈ䖭ѯ᭄᥂㒧ᵘᰃ䆹偅ࡼএㅵ⧚ &RQWUROOHU+DQGOH
ᣛᅮⱘ䆒໛᠔䳔㽕ⱘˈ䖭ᇚӮࣙᣀ݀݅ण䆂ⱘぎ䯈੠Ϣ &RQWUROOHU+DQGOH Ⳍ݇ⱘӏԩⱘ঺໪ⱘ
⾕᭄᳝᥂㒧ᵘDŽབᵰߚ䜡䌘⑤ᯊ᳝䫭䇃ߎ⦄ˈ䙷М⫼ &ORVH3URWRFRO ݇䯁ᥝ೼ℹ偸  Ёᠧᓔⱘ
᠔᳝ण䆂ˈᑊϨ䖨ಲ (),B287B2)B5(6285&(6DŽ
Փ⫼ ,QVWDOO3URWRFRO,QWHUIDFH ೼ &RQWUROOHU+DQGOH Ϟᅝ㺙᠔᳝ⱘण䆂᥹ষDŽབᵰϔ
Ͼ 䫭 䇃 ߎ ⦄ ˈ ⫼ &ORVH3URWRFRO ݇ 䯁 ᥝ ೼ ℹ 偸  Ё ᠧ ᓔ ⱘ ᠔ ᳝ ण 䆂 ˈ ᑊ Ϩ Ң
,QVWDOO3URWRFRO,QWHUIDFH 䖨ಲ䫭䇃ؐDŽ
䖨ಲ (),B68&&(66DŽ

㄀ϔ⃵䇗⫼ Start()ᯊ߯䗴᠔᳝㞾Ꮕᄤ handle ⱘᘏ㒓偅ࡼ

䆒໛偅ࡼЁˈ⫼ 2SHQ3URWRFRO ᠧᓔ᠔᳝ᖙ䳔ⱘण䆂DŽབᵰ䆹偅ࡼ‫ܕ‬䆌Ϣ݊ᅗ偅ࡼ݅ѿ


㹿 ᠧ ᓔ ⱘ ण 䆂 ˈ 䙷 М ᅗ ᑨ 䆹 Փ ⫼ (),B23(1B35272&2/B%<B'5,9(5 ሲ ᗻ ᴹ
2SHQ3URWRFRO 2SHQ3URWRFRO ᠧᓔण䆂᥹ষⱘϔ⾡ᮍᓣ DŽབᵰ䆹偅ࡼϡ‫ܕ‬䆌Ϣ݊ᅗ偅ࡼ݅
ѿ 㹿 ᠧ ᓔ ⱘ ण 䆂 ˈ 䙷 М ݊ ᑨ 䆹 Փ ⫼ (),B23(1B35272&2/B%<B'5,9(5 Ϣ
(),B23(1B35272&2/B(;&/86,9( ⱘሲᗻᴹ 2SHQ3URWRFRO DŽ䆒໛偅ࡼЁՓ⫼ 2SHQ3URWRFRO
ⱘሲᗻᖙ乏੠ 6XSSRUWHG ЁՓ⫼ⱘ 2SHQ3URWRFRO ሲᗻⳌৠDŽ
བᵰ೼ℹ偸  ЁӏԩϔϾᇍ 2SHQ3URWRFRO ⱘ䇗⫼䖨ಲ䫭䇃ˈ䙷М⫼ &ORVH3URWRFRO
݇䯁೼ℹ偸  Ёᠧᓔⱘ᠔᳝ण䆂ˈᑊϨ䖨ಲϔϾ⢊ᗕⷕˈ䆹⢊ᗕⷕᴹ㞾Ѣ䖨ಲ䫭䇃ⱘᇍ
2SHQ3URWRFRO ⱘ䇗⫼DŽ
ᗑ⬹খ᭄ 5HPDLQLQJ'HYLFH3DWKDŽ
߱ྟ࣪⬅ &RQWUROOHU+DQGOH ᣛᅮⱘ䆒໛DŽབᵰϔϾ䫭䇃ߎ⦄ˈ⫼ &ORVH3URWRFRO ݇䯁
ᥝ೼ℹ偸  Ёᠧᓔⱘ᠔᳝ण䆂ˈᑊϨ䖨ಲ (),B'(9,&(B(5525DŽ
ᶹᡒ⬅ &RQWUROOHU+DQGOH ᣛᅮⱘᘏ㒓᥻ࠊ఼ⱘ᠔᳝ᄤ䆒໛DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

བᵰᘏ㒓㽕∖ˈЎ⬅ &RQWUROOHU+DQGOH ᣛᅮⱘᘏ㒓᥻ࠊ఼ⱘ᠔᳝ᄤ䆒໛ߚ䜡䌘⑤DŽ


ᕾ⦃ &RQWUROOHU+DQGOH ⱘ↣ϔϾᄤ䆒໛ &DŽ
ߚ䜡੠߱ྟ࣪䆹偅ࡼㅵ⧚ᄤ䆒໛ & ᠔䳔㽕ⱘ᠔᭄᳝᥂㒧ᵘˈ䖭ᇚࣙᣀ݀݅ण䆂ぎ䯈੠Ϣ
ᄤ䆒໛ & Ⳍ݇ⱘӏԩ঺໪ⱘ⾕᭄᳝᥂㒧ᵘDŽ೼ߚ䜡䌘⑤ᯊབᵰߎ⦄䫭䇃ˈ䙷М⫼ &ORVH3URWRFRO
݇ᥝ೼ℹ偸  Ёᠧᓔⱘ᠔᳝ⱘण䆂ˈᑊϨ䖨ಲ (),B287B2)B5(6285&(6DŽ
བᵰᘏ㒓偅ࡼЎᄤ䆒໛߯䗴䆒໛䏃ᕘˈ䙷М෎Ѣ &RQWUROOHU+DQGOH ⱘ䆒໛䏃ᕘЎᄤ䆒໛
& ߯䗴䆒໛䏃ᕘDŽ
߱ྟ࣪ᄤ䆒໛ &DŽབᵰߎ⦄䫭䇃ˈ䙷М⫼ &ORVH3URWRFRO ݇䯁೼ℹ偸  Ёᠧᓔⱘ᠔᳝
ⱘण䆂ˈᑊϨ䖨ಲ (),B'(9,&(B(5525DŽ
 Ў & ߯ 䗴 ᮄ ⱘ KDQGOH ˈ ᑊ Ϩ Ў ᄤ 䆒 ໛ & ᅝ 㺙 ण 䆂 ᥹ ষ DŽ 䖭 ৃ 㛑 ࣙ ᣀ
(),B'(9,&(B3$7+B35272&2/DŽ
 ⫼ (),B23(1B35272&2/B%<B&+,/'B&21752//(5 ⱘ ሲ ᗻ ҷ 㸼 ᄤ 䆒 ໛ & 䇗 ⫼
2SHQ3URWRFRO DŽ
㒧ᴳ IRU 䇁হDŽ
䖨ಲ (),B68&&(66DŽ

೼↣⃵䇗⫼ 6WDUW ᯊ㛑໳Ў㞾Ꮕ᠔᳝៪㗙݊ЁϔϾᄤ䆒໛߯䗴ᄤ KDQGOH ⱘᘏ㒓偅ࡼ˖

䆒໛偅ࡼЁˈ⫼ 2SHQ3URWRFRO ᠧᓔ᠔᳝ᖙ䳔ⱘण䆂DŽབᵰ䆹偅ࡼ‫ܕ‬䆌Ϣ݊ᅗ偅ࡼ݅ѿ


㹿 ᠧ ᓔ ⱘ ण 䆂 ˈ 䙷 М ᅗ ᑨ 䆹 Փ ⫼ (),B23(1B35272&2/B%<B'5,9(5 ሲ ᗻ ᴹ
2SHQ3URWRFRO 2SHQ3URWRFRO ᠧᓔण䆂᥹ষⱘϔ⾡ᮍᓣ DŽབᵰ䆹偅ࡼϡ‫ܕ‬䆌Ϣ݊ᅗ偅ࡼ݅
ѿ 㹿 ᠧ ᓔ ⱘ ण 䆂 ˈ 䙷 М ݊ ᑨ 䆹 Փ ⫼ (),B23(1B35272&2/B%<B'5,9(5 Ϣ
(),B23(1B35272&2/B(;&/86,9( ⱘሲᗻᴹ 2SHQ3URWRFRO DŽ䆒໛偅ࡼЁՓ⫼ 2SHQ3URWRFRO
ⱘሲᗻᖙ乏੠ 6XSSRUWHG ЁՓ⫼ⱘ 2SHQ3URWRFRO ሲᗻⳌৠDŽ
བᵰ೼ℹ偸  ЁӏԩϔϾᇍ 2SHQ3URWRFRO ⱘ䇗⫼䖨ಲ䫭䇃ˈ䙷М⫼ &ORVH3URWRFRO
݇䯁೼ℹ偸  Ёᠧᓔⱘ᠔᳝ⱘण䆂ˈᑊϨ䖨ಲϔϾ⢊ᗕⷕˈ䆹⢊ᗕⷕᴹ㞾Ѣ䖨ಲ䫭䇃ⱘᇍ
2SHQ3URWRFRO ⱘ䇗⫼DŽ
߱ྟ࣪⫼ &RQWUROOHU+DQGOH ᣛᅮⱘ䆒໛DŽབᵰߎ⦄䫭䇃ˈ⫼ &ORVH3URWRFRO ݇ᥝ೼ℹ
偸  Ё
ᠧᓔⱘ᠔᳝ⱘण䆂ˈᑊϨ䖨ಲ (),B'(9,&(B(5525DŽ
བᵰখ᭄ 5HPDLQLQJ'HYLFH3DWK ϡЎぎˈ䙷М
& ህᰃ⬅ 5HPDLQLQJ'HYLFH3DWK ᣛᅮⱘᄤ䆒໛DŽ
ߚ䜡੠߱ྟ࣪䆹偅ࡼㅵ⧚ᄤ䆒໛ & ᠔䳔㽕ⱘ᠔᳝ⱘ᭄᥂㒧ᵘˈ䖭ᇚӮࣙᣀ݀݅ण䆂ⱘぎ
䯈੠Ϣᄤ䆒໛ & Ⳍ݇ⱘӏԩⱘ঺໪ⱘ⾕᭄᳝᥂㒧ᵘDŽ೼ߚ䜡䌘⑤ᯊབᵰߎ⦄䫭䇃ˈ䙷М⫼
&ORVH3URWRFRO ݇ᥝ೼ℹ偸  Ёᠧᓔⱘ᠔᳝ⱘण䆂ˈᑊϨ䖨ಲ (),B287B2)B5(6285&(6DŽ
བᵰᘏ㒓偅ࡼЎᄤ䆒໛߯䗴䆒໛䏃ᕘˈ䙷М෎Ѣ &RQWUROOHU+DQGOH ⱘ䆒໛䏃ᕘЎᄤ䆒໛
& ߯䗴䆒໛䏃ᕘDŽ
߱ྟ࣪ᄤ䆒໛ &
 Ў & ߯ 䗴 ᮄ KDQGOH ˈ ᑊ Ϩ Ў ᄤ 䆒 ໛ & ᅝ 㺙 ण 䆂 ᥹ ষ DŽ 䖭 ৃ 㛑 ࣙ ᣀ
(),B'(9,&(B3$7+B35272&2/DŽ
 ⫼ (),B23(1B35272&2/B%<B&+,/'B&21752//(5 ⱘ ሲ ᗻ ҷ 㸼 ᄤ 䆒 ໛ & 䇗 ⫼
2SHQ3URWRFRO DŽ
৺߭˄བᵰখ᭄ 5HPDLQLQJ'HYLFH3DWK Ўぎ˅
ᶹᡒ⬅ &RQWUROOHU+DQGOH ᣛᅮⱘᘏ㒓᥻ࠊ఼ⱘ᠔᳝ᄤ䆒໛DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

བᵰᘏ㒓㽕∖ˈЎ &RQWUROOHU+DQGOH ᣛᅮⱘᘏ㒓᥻ࠊ఼ⱘ᠔᳝ᄤ䆒໛ߚ䜡䌘⑤DŽ


ᕾ⦃ &RQWUROOHU+DQGOH ⱘ↣ϔϾᄤ䆒໛ &DŽ
ߚ䜡੠߱ྟ࣪䆹偅ࡼএㅵ⧚ᄤ䆒໛ & ᠔䳔㽕ⱘ᠔᳝ⱘ᭄᥂㒧ᵘˈ䖭ᇚӮࣙᣀ݀݅ण䆂ⱘ
ぎ䯈੠Ϣᄤ䆒໛ & Ⳍ݇ⱘӏԩⱘ঺໪ⱘ⾕᭄᳝᥂㒧ᵘDŽ೼ߚ䜡䌘⑤ᯊབᵰߎ⦄䫭䇃ˈ䙷М⫼
&ORVH3URWRFRO ݇ᥝ೼ℹ偸  Ёᠧᓔⱘ᠔᳝ⱘण䆂ˈᑊϨ䖨ಲ (),B287B2)B5(6285&(6DŽ
བᵰᘏ㒓偅ࡼЎᄤ䆒໛߯䗴䆒໛䏃ᕘˈ䙷М෎Ѣ䰘ሲѢ &RQWUROOHU+DQGOH ⱘ䆒໛䏃ᕘ
Ўᄤ䆒໛ & ߯䗴䆒໛䏃ᕘDŽ
߱ྟ࣪ᄤ䆒໛ &
 Ў & ߯ ᓎ ᮄ ⱘ KDQGOH ˈ ᑊ Ϩ Ў ᄤ 䆒 ໛ & ᅝ 㺙 ण 䆂 ᥹ ষ DŽ 䖭 ৃ 㛑 ࣙ ᣀ
(),B'(9,&(B3$7+B35272&2/DŽ
 ⫼ (),B23(1B35272&2/B%<B&+,/'B&21752//(5 ⱘ ሲ ᗻ ҷ 㸼 ᄤ 䆒 ໛ & 䇗 ⫼
2SHQ3URWRFRO DŽ
㒧ᴳ )25 ᕾ⦃DŽ
㒧ᴳ ,) 䇁হDŽ
䖨ಲ (),B68&&(66DŽ






















㄀ಯゴ
Դᑨ䆹ⶹ䘧ⱘSURWRFROV
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᐌ䆚ᑊϡᰃ䇈ӫ᠔਼ⶹDŽ

—Will Rogers

ᴀゴᦣ䗄њ EFI Փ⫼㗙᮴䆎ᰃࠊ԰䆒໛偅ࡼˈ䖬ᰃՓ⫼ EFI Pre-OS ⿟ᑣˈ៪㗙ᑇৄ೎ӊˈ


䛑ᑨњ㾷ᥠᦵ protocolsDŽ 䖭ѯ protocols 䗮䖛ϔѯ՟ᄤᴹҟ㒡ˈҹ᳔ᐌ㾕ⱘ㓪⿟㒗д ⱘ
“Hello world”ᓔྟDŽ䖭䞠㒭ߎⱘ՟ᄤ⿟ᑣ䛑ᰃሑ䞣ㅔऩDŽᅗϡձ䴴ӏԩ EFI ᑧߑ᭄ˈ᠔ҹ EFI
ᑧߑ᭄ϡӮ㹿䖲᥹ࠄ⫳៤ⱘৃᠻ㸠᭛ӊЁDŽ䖭Ͼ⌟䆩ⱘᑨ⫼⿟ᑣ䗮䖛ᡞ SystemTable Ӵܹࠄܹ
ষ⚍ᴹ䆓䯂 EFI ᥻ࠊৄ䆒໛DŽ䖭Ͼ᥻ࠊৄ䕧ߎ䆒໛䗮䖛⫼ SIMPLE_TEXT_OUTPUT_INTERFACE
protocol ⱘ outputString() ߑ᭄ᴹᰒ⼎ϔ㒘ֵᙃˈᑊϨ䖭Ͼᑨ⫼⿟ᑣㄝᕙᴹ㞾᥻ࠊৄ䕧ܹ䆒໛
Փ ⫼ 㗙 ⱘ ᣝ 䬂 ˈ 䆹 ᥻ ࠊ ৄ 䕧 ܹ 䆒 ໛ Փ ⫼ WaitForEvent() ᳡ ࡵ ⿟ ᑣ ੠
SIMPLE_INPUT_INTERFACE protocol Ёⱘ WaitForKey џӊDŽϔᮺ᳝ᣝ䬂㹿ᣝϟˈᑨ⫼⿟ᑣ
ゟे䗔ߎDŽ
/*++

῵ഫৡ⿄:
helloworld.c

ᨬ㽕:
ϟ䴶ᰃϔϾㅔऩⱘ῵ഫˈ⫼ᴹሩ⼎ϔϾ෎ᴀⱘ EFI ᑨ⫼⿟ᑣⱘ‫⊩ݭ‬DŽ
԰㗙:
Waldo

⠜ᴀग़৆˖
--*/
#include "efi.h"
EFI_STATUS
InitializeHelloApplication (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
UINTN Index;
//
// Send a message to the ConsoleOut device.
//
SystemTable->ConOut->OutputString (
SystemTable->ConOut,
L"Hello application started\n\r");
//
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

// Wait for the user to press a key.


//
SystemTable->ConOut->OutputString (
SystemTable->ConOut,
L"\n\r\n\r\n\rHit any key to exit\n\r");
SystemTable->BootServices->WaitForEvent (
1,
&(SystemTable->ConIn->WaitForKey),
&Index);
SystemTable->ConOut->OutputString (
SystemTable->ConOut,L"\n\r\n\r");
//
// Exit the application.
//
return EFI_SUCCESS;
}

བᵰᠻ㸠ϔϾ EFI ᑨ⫼⿟ᑣˈৃҹ೼ EFI shell ੑҸ㸠Ё䬂ܹ⿟ᑣৡ⿄DŽ᥹ϟᴹⱘⱘ՟ᄤᇚ


Ӯਞ䆝ԴᗢМḋ೼ EFI shell Ёএ䖤㸠Ϟ䴶ᦣ䗄ⱘ⌟䆩ᑨ⫼⿟ᑣDŽᑨ⫼⿟ᑣㄝᕙ⫼᠋ᣝ䬂ˈ✊ৢ
ेৃ䖨ಲ EFI shell ᦤ⼎䕧ܹ⬠䴶DŽҹϞᰃ‫؛‬ᅮ hello.efi ᰃ໘೼ EFI shell ⦃๗ⱘ᧰㋶䏃ᕘϟDŽ

Example

Shell> hello

Hello application started

Hit any key to exit this image

EFI OS Loaders

䖭䚼ߚ䅼䆎ᔧ‫ ݭ‬OS loader ᯊ⡍߿䳔㽕㗗㰥ࠄⱘ޴⚍DŽOS loader ᰃϔ⾡⡍⅞㉏ൟⱘ EFI


ᑨ⫼⿟ᑣˈᅗ䋳䋷ᇚ㋏㒳⬅ firmware ⦃๗䖯ܹ OS ⦃๗DŽЎᅠ៤ℸӏࡵˈ޴Ͼ䞡㽕ℹ偸ᖙ乏ᠻ
㸠˖

1. OS loader ᖙ乏㽕⹂ᅮҢા䞠㹿䇗⫼ⱘDŽ䖭ḋৃҹ䅽 OS loader ҢⳌৠԡ㕂㦋প݊Ҫ᭛


ӊDŽ

2.OS loader ᖙ乏㽕⹂ᅮ㋏㒳Ё OS ᄬᬒ೼ા䞠DŽϔ㠀ᴹ䆆ˈOS 偏⬭Ѣ⹀Ⲭ偅ࡼⱘϔϾߚ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ऎ‫ݙ‬DŽԚᰃ೼ OS ᄬᬒⱘߚऎˈৃ㛑≵᳝Փ⫼ EFI ৃ䆚߿ⱘ᭛ӊ㋏㒳DŽ೼䖭⾡ᚙ‫މ‬ϟˈOS Loader


ҙҙ㹿԰ЎϔϾ block device ϨҙՓ⫼ block I/O ⱘ᪡԰ᮍᓣᴹ䆓䯂DŽOS Loader 䖭ᯊᇚ䳔
㽕এᅲ⦄៪㗙䇏প᭛ӊ㋏㒳偅ࡼᴹ䆓䯂㋏㒳ߚऎϞⱘ᭛ӊDŽ

3.OS Loader ᖙ乏ᓎゟ⠽⧚‫ݙ‬ᄬ䌘⑤ⱘ‫ݙ‬ᄬ᯴ᇘ೒ˈⳂⱘᰃՓ OS kernel ⶹ䘧ᅗ㽕ㅵ⧚ⱘ


‫ݙ‬ᄬぎ䯈DŽ಴Ў㋏㒳ϟⱘᶤѯ⠽⧚‫ݙ‬ᄬᖙ乏㹿ֱ⬭ϡ㹿 OS kernel ᬍবˈ᠔ҹ OS Loader ᖙ乏
Փ⫼ EFI ᑨ⫼⿟ᑣ᥹ষᴹ䞡ᮄ㦋প㋏㒳ᔧࠡⱘ‫ݙ‬ᄬ᯴ᇘ㸼DŽ

4.OS ᳝ᇚਃࡼ䏃ᕘ੠ਃࡼ䗝乍ҹ⦃๗ব䞣ⱘᔶᓣᄬ‫ټ‬೼䴲ᯧ༅ᗻᄬ‫ټ‬䆒໛Ёⱘ䗝ᢽᴗDŽ
OS Loader ৃ㛑䳔㽕Փ⫼ᄬ‫ټ‬೼䴲ᯧ༅ᗻᄬ‫ټ‬䆒໛Ёⱘ⦃๗ব䞣DŽ঺໪ OS Loader ৃ㛑г䳔
㽕Ӵ䗦ᶤѯ⦃๗ব䞣ࠄ OS kernel ЁDŽ

5.ϟϔℹᰃএ䇗⫼ ExitBootServices()DŽ᮴䆎ᰃ OS Loader 䖬ᰃ OS kernel 䛑Ӯᅠ៤䖭Ͼ


䇗⫼DŽ䳔㽕⡍߿⊼ᛣⱘᰃ㽕ֱ䆕೼䇗⫼䖭Ͼ⿟ᑣࠡ໻䚼ߚⱘᔧࠡ‫ݙ‬ᄬᏆ㒣䞞ᬒᑊৃҹՓ⫼DŽϔ
ᮺ ExitBootServices()㹿䇗⫼ˈ䙷Мӏԩ EFI Boot Services ᇚϡ‫ݡ‬㹿䇗⫼DŽ೼ᶤϾᯊ‫ˈ׭‬䇗⫼
ExitBootServices()Пࠡ៪㗙ПৢˈOS Loader Ӯᡞ᥻ࠊᴗѸ㒭 OS kernelDŽ

6.᳔ৢˈ೼䇗⫼ ExitBootServices()ПৢˈEFI Boot Services 䇗⫼ህϡ‫⫼ৃݡ‬DŽ䖭⾡ৃ䇗⫼


ᗻⱘ㔎༅ᛣੇⴔϔᮺ OS kernel Ꮖ㒣᥻ࠊ㋏㒳ˈOS kernel ህҙҙৃҹ䇗⫼ EFI Runtime
ServicesDŽ

ҹϟৃҹⳟࠄ OS loader ᅠᭈⱘᑨ⫼⿟ᑣ⼎՟߫㸼DŽ೼᥹ϟᴹゴ㡖Ёⱘҷⷕ⠛↉ϡӮᠻ㸠


ӏԩⱘ䫭䇃ẔᶹDŽᑊϨ OS loader ⼎՟ᑨ⫼⿟ᑣгՓ⫼њ㢹ᑆ EFI ᑧߑ᭄ᴹㅔ࣪ᠻ㸠䖛⿟DŽϟ
䴶ⱘ䕧ߎֵᙃ⬅ᰒ⼎ OS loader 㞾Ꮕⱘ䆒໛䏃ᕘ੠᭛ӊ䏃ᕘ㗠ᓔྟⱘDŽᅗ䖬ᰒ⼎ߎ OS loader
೼ ‫ ݙ‬ᄬ Ё ⱘ ԡ 㕂 ˈ ऴ ⫼ њ ໮ ᇥ ᄫ 㡖 DŽ ϟ ϔ ℹ ˈ ᅗ ᇚ OSKERNEL.BIN ᭛ ӊ 䕑 ܹ ‫ ݙ‬ᄬ Ё DŽ
OSKERNEL.BIN ᭛ӊৃҹ‫ڣ‬೒ 4.1 OS loader ᦣ䗄䙷ḋҢⳌৠⳂᔩϟ䞡ᮄ㦋পDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ϟϔ䚼ߚ䕧ߎ㒧ᵰ䇈ᯢњ㢹ᑆഫ䆒໛Ёⱘ㄀ϔߚഫDŽ㄀ϔϾᰃՓ⫼ FAT12 ᭛ӊ㋏㒳Ё䕃Ⲭ


ⱘ㄀ϔߚഫDŽ㄀ѠϾᰃ⹀ⲬⱘЏᓩᇐ䆄ᔩ˄MBR˅DŽ㄀ϝϾᰃ೼Ⳍৠ⹀ⲬϞ໻ϔ⚍ⱘ FAT32 ߚ
ऎⱘ㄀ϔߚഫˈ㄀ಯϾгᰃ೼Ⳍৠ⹀ⲬϞᇣϔѯⱘ FAT16 ߚऎⱘ㄀ϔߚഫ.

᳔ৢϔℹ߫ߎњᣛ৥᠔᳝㋏㒳䜡㕂㸼ˈ㋏㒳ᔧࠡⱘ‫ݙ‬ᄬ᯴ᇘ㸼੠᠔᳝㋏㒳⦃๗ব䞣ⱘᣛ䩜DŽ
᠔᳝ℹ偸ᠻ㸠ৢˈOS loader 䇗⫼ ExitBootServices()DŽ

䆒໛䏃ᕘϢ OS Loader Image ֵᙃ

᥹ϟᴹⱘҷⷕ⠛ᮁⓨ⼎㦋প OS Loader 䆒໛䏃ᕘ੠᭛ӊ䏃ᕘⱘℹ偸DŽ

佪‫ܜ‬䇗⫼ Handleprotocol()ˈҢ InageHandle ᕫࠄ LOADER_IMAGE_PROTOCOL ᥹ষˈ


Ӵ㒭 OS Loader ⱘᑨ⫼⿟ ⿟ᑣDŽ㄀Ѡℹ䇗⫼ HandleProtocol()ˈᕫࠄ OS Loader Image ⱘ
device handle ⱘ DEVICE_PATH_PROTOCOL ᥹ষDŽ䖭ϸϾ䇗⫼ᇚ OS Loader Image ⱘ䆒
໛䏃ᕘǃ᭛ӊ䏃ᕘ੠݊Ҫ Image ֵᙃѸ Ѹ㒭 OS LoaderDŽ

BS->HandleProtocol(
ImageHandle,

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

&LoadedImageProtocol,
LoadedImage
);
BS->HandleProtocol(
LoadedImage->DeviceHandle,
&DevicePathProtocol,
&DevicePath
);
Print (
L"Image device : %s\n",
DevicePathToStr (DevicePath)
);
Print (
L"Image file : %s\n",
DevicePathToStr (LoadedImage->FilePath)
);
Print (
L"Image Base : %X\n",
LoadedImage->ImageBase
);
Print (
L"Image Size : %X\n",
LoadedImage->ImageSize
);

೼ OS loader ⱘ䆒໛䏃ᕘϟ䆓䯂᭛ӊ

Ϟϔ㡖ⓨ⼎ⱘᰃᗢḋ㦋প䆒໛䏃ᕘ੠OS Loader䬰‫ڣ‬䏃ᕘDŽ᥹ϟᴹⱘҷⷕ⠛ᮁᇚⓨ⼎ᗢḋ
⫼䖭ѯֵᙃᴹᠧᓔ঺ϔϾি԰OSKERNEL.BINⱘ᭛ӊˈ䖭Ͼ᭛ӊϢOS Loader೼ⳌৠⳂᔩϟDŽ佪
‫⫼ܜ‬HandleProtocolᴹ㦋পҢϞϔ㡖ᕫࠄⱘdevice handleⱘFILE_SYSTEM_PROTOCOL᥹
ষˈ✊ৢˈ⺕Ⲭोᠡৃҹ㹿ᠧᓔˈ᭛ӊᄬপ៤Ўৃ㛑ˈ᳔㒜ⱘ㒧ᵰᰃˈব䞣CurDir៤ЎOS Loader
᠔೼ߚऎⱘϔϾ᭛ӊhandleDŽ

BS->HandleProtocol(
LoadedImage->DeviceHandle,
&FileSystemProtocol,
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

&Vol
);
Vol->OpenVolume (
Vol,
&RootFs
);
CurDir = RootFs;

ϟϔℹᰃЎϢOS loader imageⳌৠⳂᔩϟⱘOSKERNEL.binᓎゟϔϾ᭛ӊ䏃ᕘDŽϔᮺ䖭


Ͼ䏃ᕘᓎゟˈ᭛ӊhandle CurDirৃҹ⫼ᴹᇍOSKERNEL.BIN᭛ӊ䖯㸠Open(), Close(), Read()
੠Write()᪡԰DŽ᥹ϟᴹⱘҷⷕ↉Ёᓎゟњ᭛ӊ䏃ᕘˈᠧᓔ᭛ӊˈ䇏প᭛ӊࠄᏆߚ䜡ⱘ㓧‫఼ކ‬Ёˈ
ᑊ݇䯁᭛ӊDŽ

StrCpy(FileName,DevicePathToStr(LoadedImage->FilePath));
for(i=StrLen(FileName);i>=0 && FileName[i]!='\\';i--);
FileName[i] = 0;
StrCat(FileName,L"\\OSKERNEL.BIN");
CurDir->Open (CurDir, &FileHandle, FileName,
EFI_FILE_MODE_READ, 0);
Size = 0x00100000;
BS->AllocatePool(EfiLoaderData, Size, &OsKernelBuffer);
FileHandle->Read(FileHandle, &Size, OsKernelBuffer);
FileHandle->Close(FileHandle);

ᇏᡒ OS ߚऎ

ᇍ㋏㒳ⱘ↣Ͼߚऎᴹ䇈,EFI⼎՟⦃๗ᅲ⦄њϔϾBLOCK_IO_PROTOCOLᅲ՟DŽOS Loader
㛑໳ձ䴴ᇏᡒ᠔᳝ⱘBLOCK_IO䆒໛ᴹ᧰㋶㋏㒳ߚऎDŽϟ䴶ⱘҷⷕ⠛ᮁ⫼LibLocateHandle()
㦋ᕫBLOCK_IO device handle ߫㸼DŽ䖭ѯhandles⫼ᴹẔ㋶↣ϾBLOCK_IO䆒໛ⱘ㄀ϔϾ
blockDŽHandleProtocol() APIᰃ⫼ᴹ㦋প↣ϾBLOCK_IO䆒໛ⱘDEVICE_PATH_PROTOCOL
੠ BLOCK_IO_PROTOCOLⱘᅲ՟DŽব䞣BlkIoᰃϔϾՓ⫼BLOCK_IO_PROTOCOL᥹ষⱘ
BLOCK_IO䆒໛ⱘhandleDŽ෎ѢℸˈReaddBlocks()ৃ⫼ᴹ䇏প䆒໛ⱘ㄀ϔϾblockDŽ⼎՟OS
Loaderҙҙᰃᡞblockⱘ‫ݙ‬ᆍᰒ⼎ߎᴹњˈᅲ䰙ϞˈOS Loaderࡵᖙ⌟䆩䇏প↣Ͼblockˈ⹂
ֱ↣ϾߚऎᰃৃⶹⱘDŽ೼ৃⶹⱘߚऎᡒࠄПৢˈOS Loader㛑໳ᅲ⦄ϔϾㅔऩⱘ㋏㒳᭛ӊ偅ࡼˈ
䖭Ͼ偅ࡼӮ⫼EFI API ReadBlock()ҢߚऎЁ㺙䕑乱໪ⱘ᭄᥂DŽ

㦋ᕫᔧࠡⱘ㋏㒳䜡㕂ֵᙃ

㋏㒳䜡㕂ֵᙃৃҹ䗮䖛SystemTableⱘ᭄᥂㒧ᵘᕫࠄ˄SystemTableӮ㹿Ӵ㒭OS
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

loader˅DŽ᪡԰㋏㒳Loaderᴀ䑿ᰃϔϾEFIⱘᑨ⫼ˈᅗ䍋ࠄ≳䗮೎ӊᑇৄϢ᪡԰㋏㒳П䯈ⱘḹṕ
԰⫼DŽSystem Talble⫼ᴹਞⶹLoader˖ৃ⫼ⱘ೎ӊᑇৄ᳡ࡵ˄՟བҢၦҟ㺙䕑OS Kernel binary
㽕⫼ࠄⱘblock੠᥻ࠊৄ᳡ࡵ੠㺙䕑OS偅ࡼПࠡ⫼᠋㛑໳Փ⫼ⱘblock੠᥻ࠊৄ᳡ࡵ˅੠䆓䯂Ꮉ
Ϯᷛ‫ޚ‬㸼ˈབACPIˈSMBIOSㄝDŽৃ⫼ⱘ5Ͼ㸼Ḑⱘ㒧ᵘ੠‫ݙ‬ᆍ೼ᅗӀ৘㞾ⱘspecЁ᳝䯤䗄DŽ

㦋পᔧࠡ‫ݙ‬ᄬ᯴ᇘ㸼

EFIࡳ㛑ᑧ㛑໳䞞ᬒEFI᠔⫼ⱘ‫ݙ‬ᄬ䌘⑤DŽ೼Loader䖤㸠ⱘᯊ‫ݙˈ׭‬ᄬ⬅ᑇৄ೎ӊᴹㅵ⧚ˈ
ᑇৄ೎ӊᏆ㒣㒭೎ӊߦߚњ‫ݙ‬ᄬ˄boot services memory˅ˈгߦߚњ݊ᅗ䳔㽕ϔⳈֱᣕࠄOS
runtimeⱘ‫ݙ‬ᄬ䌘⑤˄runtime memory˅DŽⳈࠄ㺙䕑⿟ᑣᡞ᳔ৢⱘ᥻ࠊᴗѸ㒭OS Kernelᑊ䇗⫼
ExitBootServices()ПࠡˈEFIᑇৄ೎ӊϔⳈᥠㅵⴔ‫ݙ‬ᄬⱘߚ䜡DŽ䖭ህᰃ䇈OS Loader੠݊ҪEFI
ᑨ⫼⿟ᑣৃҹ䗮䖛‫ݙ‬ᄬ᯴ᇘ᳡ࡵᴹᶹᯢ‫ݙ‬ᄬߚ䜡DŽ

ϟ䴶ⱘҷⷕ⠛ᮁⓨ⼎ϔϾᶹᯢ‫ݙ‬ᄬ᯴ᇘᑊᰒ⼎݊‫ݙ‬ᆍⱘߑ᭄ⱘ⫼⊩DŽOS Loaderᖙ乏⡍߿
⊼ᛣMapKey䖭Ͼখ᭄ˈᔧ↣⃵EFIׂᬍ݊᠔Փ⫼ⱘ‫ݙ‬ᄬ᯴ᇘᯊˈMapKeyህӮ๲ࡴDŽOS Loader
䳔㽕ᇚᔧࠡ‫ݙ‬ᄬ᯴ᇘѸ㒭OS KernelDŽབᵰ೼‫ݙ‬ᄬ᯴ᇘ㹿䞞ᬒ੠䇗⫼ExitBootServices()ᳳ䯈䇗
⫼OS Loaderࡳ㛑ˈ‫ݙ‬ᄬ᯴ᇘৃ㛑Ӯ㹿ᬍࡼDŽϔ㠀ᴹ䇈ˈOS Loaderᑨ䆹೼䇗⫼
ExitBootServices()Пࠡ䞞ᬒ‫ݙ‬ᄬDŽབᵰ಴ЎMapKeyϡऍ䜡ᇐ㟈ExitBootServices()ࡳ㛑༅䋹ˈ
OS Loader䳔㽕㦋ᕫϔӑᮄⱘ‫ݙ‬ᄬ᯴ᇘࡃᴀ‫ݡ‬䞡ᮄᇱ䆩DŽ

㦋প⦃๗ব䞣

᥹ϟᴹⱘҷⷕ↉ⓨ⼎њབԩ䗝পߎ EFI ⦃๗ϟⱘ⦃๗ব䞣DŽGetNextVariableName() API


䌃こᭈϾ߫㸼DŽ

䖛⏵ࠄ OS Kernel

ᔧ䇗⫼ ExitBootServices()ᯊˈ᠔᳝ⱘ EFI Boot Services 䛑ᇚӮ㹿㒜ℶDŽҢ䖭⚍Ϟ䆆ˈҙ


ҙ EFI Runtime Services ৃ㛑㹿⫼ࠄDŽϔᮺᠻ㸠䇗⫼ࡼ԰ˈOS Loader ህ䳔㽕Ў䖛⏵ࠄ OS
Kernel ‫ޚخ‬໛DŽ‫؛‬䆒 OS Kernel ᢹ᳝᠔᳝㋏㒳ⱘ᥻ࠊᴗ੠ϔѯ݊᠔䳔㽕ⱘ EFI Runtime Services
ࡳ㛑ˈOS Loader ᖙ乏ᇚ SystemTalbe Ѹ㒭 OS Kernelˈҹ֓ OS Kernel 㛑ᮍ֓䇗⫼ Runtime
ServicesDŽOS Loader 䖛⏵ࠄ OS Kernel ⱘ䖭⾡⹂ߛഄᴎࠊ‫݋‬ԧ䎳ᅲ⦄Ⳍ݇˄ህᰃ䇈ৃҹ᳝ϡ
ৠⱘᅲ⦄ᮍ⊩˅DŽ䳔㽕⊼ᛣⱘᰃˈOS Loader ৃҹ೼䇗⫼ ExitBootService()Пࠡ䖛⏵ࠄ OS
Kernelˈ䖭⾡ᚙ‫މ‬ϟˈOS Kernel ೼䋳䋷䇗⫼ ExitBootService()DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀Ѩゴ
(),5XQWLPH
㒭ϔϾᏆ㒣ᓊ䖳ⱘ䕃ӊ乍Ⳃ๲ࡴҎ࡯ˈাӮՓᅗ᳈ࡴᓊ䖳DŽ

--Ꮧ剕‫߭⊩ܟ‬

䖭ϔゴᦣ㒬њ೼‫ݐ‬ᆍ EFI ⱘ㋏㒳䞠ৃҹ䆓䯂ⱘ෎ᴀ᳡ࡵDŽ䖭ѯ෎ᴀ᳡ࡵ⬅ϔѯ᥹ষߑ᭄᠔ᅮ


Нˈ䖤㸠೼ EFI ⦃๗ⱘ⿟ᑣ˄ࣙᣀㅵ⧚䆒໛䆓䯂ⱘ Protocol ੠ᢧሩᑇৄ㛑࡯ⱘ Protocol ㄝ˅
ৃҹՓ⫼䖭ѯ᥹ষߑ᭄DŽ䖭ϔゴ䅼䆎ⱘ⛺⚍ᰃ䖤㸠ᯊ᳡ࡵˈ䖤㸠ᯊ᳡ࡵᰃᣛ೼ EFI ਃࡼ䖛⿟ҹঞ
᪡԰㋏㒳䖤㸠䖛⿟Ё䛑ৃҹՓ⫼ⱘߑ᭄DŽ

೼ਃࡼ䖛⿟Ёˈ㋏㒳䌘⑤⬅೎ӊ᠔ᢹ᳝ˈᑊϨ⬅໮⾡㸼⦄Ўৃ䇗⫼ⱘ API ⱘ㋏㒳᳡ࡵ᠔᥻


ࠊDŽ೼ EFI Ё᳝ϸ⾡Џ㽕ⱘ᳡ࡵ˖
Ƶ Boot Services ਃࡼ᳡ࡵ - ೼ਃࡼⳂᷛ˄↨བ䇈ᰃ᪡԰㋏㒳˅䖤㸠Пࠡˈ៪㗙೼
ExitBootServices˄˅㹿䇗⫼Пࠡৃҹ䆓䯂ⱘߑ᭄DŽ
ƵRuntime Services 䖤㸠ᯊ᳡ࡵ - ೼ਃࡼⳂᷛ䖤㸠ПࠡˈҹঞਃࡼⳂᷛ䖤㸠Пৢ䛑ৃҹ
Փ⫼ⱘߑ᭄DŽ
೒ 5.1 㸼ᯢњϔϾᑇৄ೼ਃࡼ᪡԰Ё᠔㒣ग़ⱘ৘Ͼ䰊↉DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ң೒ 5.1 ৃҹ䴲ᐌᯢᰒⱘⳟࠄˈࠡ䴶ᦤࠄⱘϸ⾡᳡ࡵ˄ਃࡼ᳡ࡵ੠䖤㸠ᯊ᳡ࡵ˅೼ EFI ᶊᵘ


䖤㸠ⱘᮽᳳ䛑ৃҹ䆓䯂ⱘࠄˈԚᰃᔧ೎ӊᷜЁⱘ࠽ԭ䚼ߚ೼ᡞ᥻ࠊᴗ䞞ᬒ㒭᪡԰㋏㒳ࡴ䕑఼ҹ
ৢˈা᳝䖤㸠ᯊ᳡ࡵ䖬㛑㹿䆓䯂DŽϔᮺࡴ䕑఼ᡞᅗ㞾Ꮕⱘ⦃๗ࡴ䕑ࠄ䎇໳㛑ᥠ᥻㋏㒳ⱘ݊Ҫ᪡
԰ˈᅗህӮ䇗⫼ ExitBootServices()ᴹ㒧ᴳਃࡼ᳡ࡵDŽ

ॳ߭ϞˈExitBootServices()ᰃ䆒䅵㒭᪡԰㋏㒳ⱘˈ⫼ҹ㸼ᯢ᪡԰㋏㒳ⱘ Loader Ꮖ㒣‫ޚ‬໛


ད᥻ࠊ Platform ঞᅗⱘ᠔᳝䌘⑤ㅵ⧚DŽ಴ℸࠄ䖭Ͼᯊ䯈⚍ˈਃࡼ᳡ࡵᐂࡽ᪡԰㋏㒳ࡴ䕑఼‫ޚ‬໛
ਃࡼ᪡԰㋏㒳ⱘӏࡵгህᇓ㒜ℷᆱDŽϔᮺ᪡԰㋏㒳ࡴ䕑఼᥻ࠊњ㋏㒳ˈᑊϨᅠ៤њ᪡԰㋏㒳ⱘ
ਃࡼ䖛⿟ˈা᳝䖤㸠ᯊ᳡ࡵৃҹ㹿䇗⫼DŽ✊㗠ˈ݊Ҫⱘϡᰃ᪡԰㋏㒳ࡴ䕑఼ⱘ⿟ᑣˈᅗӀৃҹ
䗝ᢽ䇗⫼៪㗙ϡ䇗⫼ ExitBootServices()DŽ䖭Ͼ䗝ᢽ䚼ߚপ‫އ‬Ѣ䖭ѯ⿟ᑣᰃ৺䆒䅵៤㽕㒻㓁Փ⫼
EFI ਃࡼ᳡ࡵ៪㗙ਃࡼ᳡ࡵ⦃๗DŽ

䲒䘧ϡᰃা᳝ϔ⾡‫ݙ‬ᄬ৫˛

ᔧ EFI ‫ݙ‬ᄬߚ䜡ҹৢˈᅗህᏆ㒣㹿ᣝ✻ᶤ⾡ߚ㉏ᮍ⊩ߦߚ៤ϔ⾡㉏ൟⱘ‫ݙ‬ᄬњˈ䖭⾡ߚ㉏ᮍ
⊩ᣛᯢњ৘⾡⡍ᅮ‫ݙ‬ᄬ㉏ൟⱘϔ㠀⫼䗨DŽ↨བᔧ៥Ӏ䳔㽕ϔഫ㓧‫ކ‬Ёⱘ᭄᥂Ⳉࠄᑇৄ᪡԰ⱘ䖤
㸠ᯊ䰊↉г㛑ֱᣕৃ⫼ˈ䙷៥Ӏህৃҹ䗝ᢽ⫼ EfiRuntimeServicesData ㉏ൟᴹᇍ䖭ഫ㓧‫ކ‬䖯
㸠ߚ䜡DŽ೼ߚ䜡‫ݙ‬ᄬⱘᯊ‫ৃˈ׭‬㛑᳝ҎӮᛇˈЎњҹ䰆ϛϔˈЎҔМϡᡞ᠔᳝ⱘ‫ݙ‬ᄬ䛑ҹ䖤㸠
ᯊ‫ݙ‬ᄬ㉏ൟᴹ䖯㸠ߚ䜡ਸ਼˛ॳ಴೼Ѣˈ䖭⾡㸠Ўᰃॅ䰽ⱘˈ಴ЎᔧᑇৄҢਃࡼ᳡ࡵ䰊↉ߛᤶࠄ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䖤㸠ᯊ䰊↉ҹৢˈ᠔᳝ҹ䖤㸠ᯊ㉏ൟߚ䜡ⱘ‫ݙ‬ᄬᇍ᪡԰㋏㒳ᴹ䇈䛑ᰃ㹿‫ޏ‬㒧ˈϡ㛑㹿Փ⫼ⱘDŽ
᳝䖭МϔϾ䱤৿‫؛‬䆒ˈ᠔᳝䇋∖ߚ䜡䖤㸠ᯊ‫ݙ‬ᄬⱘҷⷕ䛑ⶹ䘧ᅗӀ೼‫خ‬ҔМDŽབᵰ៥Ӏাᰃ‫؛‬
ᅮা᳝ϔ⾡㉏ൟ‫ݙ‬ᄬⱘߚ䜡ⱘ䆱ˈ៥Ӏৃҹᛇ䈵ࠄ‫ݙ‬ᄬ⊘䴆ⱘᠽᬷDŽ෎Ѣ䖭⾡㗗㰥ˈEFI ᓎゟњ
ϔ༫‫ݙ‬ᄬ㉏ൟˈ䖭݊Ёⱘ↣ϔ⾡‫ݙ‬ᄬ㉏ൟ䛑᳝ᶤ⾡ᣛᅮⱘՓ⫼ᛃ՟੠ᅗӀⳌᇍᑨDŽ

㸼 5.1 EFI ‫ݙ‬ᄬ㉏ൟ੠ ExitBootServices()ПࠡⱘՓ⫼ᮍ⊩

ࡽ䆄ヺ ᦣ䗄

EfiReservedMemoryType ᳾Փ⫼

ࡴ䕑ⱘ application ⱘҷⷕ䚼ߚՓ⫼䖭⾡‫ݙ‬ᄬDŽ(⊼ᛣ:EFI ᪡


EfiLoaderCode
԰㋏㒳ࡴ䕑఼ᰃ EFI application)

ࡴ䕑ⱘ application ⱘ᭄᥂䚼ߚ,੠ application ߚ䜡 pool ‫ݙ‬ᄬ


EfiLoaderCode
ᯊⱘ咬䅸᭄᥂ߚ䜡㉏ൟDŽ

EfiBootServicesCode ࡴ䕑ⱘਃࡼ᳡ࡵ偅ࡼⱘҷⷕ䚼ߚDŽ

ࡴ䕑ⱘਃࡼ᳡ࡵ偅ࡼⱘ᭄᥂䚼ߚ,੠ਃࡼ᳡ࡵ偅ࡼߚ䜡 pool
EfiBootServicesData
‫ݙ‬ᄬᯊⱘ咬䅸᭄᥂ߚ䜡㉏ൟDŽ

EfiRuntimeServicesCode ࡴ䕑ⱘ䖤㸠ᯊ᳡ࡵ偅ࡼⱘҷⷕ䚼ߚDŽ

ࡴ䕑ⱘ䖤㸠ᯊ᳡ࡵ偅ࡼⱘ᭄᥂䚼ߚ,੠䖤㸠ᯊ᳡ࡵ偅ࡼߚ䜡
EfiRuntimeServicesData
pool ‫ݙ‬ᄬᯊⱘ咬䅸᭄᥂ߚ䜡㉏ൟDŽ

EfiConventionalMemory ぎ䯆(᳾ߚ䜡)‫ݙ‬ᄬDŽ

EfiUnusableMemory ᥶⌟ࠄ䫭䇃ⱘ‫ݙ‬ᄬDŽ

EfiACPIReclaimMemory ֱᄬ ACPI 㸼ⱘ‫ݙ‬ᄬDŽ

EfiACPIMemoryNVS 乘⬭㒭೎ӊՓ⫼ⱘഄഔぎ䯈DŽ

⫼ᴹ㒭㋏㒳೎ӊ䇋∖‫ݙ‬ᄬ᯴ᇘ IO ऎඳˈ᪡԰㋏㒳ᡞ‫ݙ‬ᄬ᯴
EfiMemoryMappedIO ᇘ IO ऎඳ᯴ᇘࠄ㰮ᢳഄഔˈ䖭ḋ䖭ѯऎඳህ㛑㹿 EFI 䖤㸠
ᯊ᳡ࡵ䆓䯂ࠄњDŽ

໘⧚఼⫼ᴹᡞ‫ݙ‬ᄬ਼ᳳ䕀࣪Ў IO ਼ᳳⱘ㋏㒳‫ݙ‬ᄬ᯴ᇘ IO
EfiMemoryMappedIOPortSpace
ऎඳDŽ

EfiPalCode ೎ӊ乘⬭㒭໘⧚఼ϔ䚼ߚ⿟ᑣⱘഄഔぎ䯈DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㸼  ߫ߎњ৘⾡‫ݙ‬ᄬ㉏ൟҹঞᅗӀ೼䖤㸠ਃࡼⳂᷛ ↨བ䇈᪡԰㋏㒳 ПࠡⱘⳌᑨՓ⫼ᮍ


⊩DŽ໻໮᭄䖤㸠ᯊ偅ࡼ᠔Փ⫼ⱘ‫ݙ‬ᄬ㉏ൟ೼ࡽ䆄ヺЁ䛑ࣙ৿UXQWLPH݇䬂ᄫDŽ

✊㗠ˈЎњ᳈དⱘ䇈ᯢ䖭ѯ‫ݙ‬ᄬ㉏ൟ೼ᑇৄਃࡼⱘ䖤㸠ᯊ䰊↉ᰃབԩ㹿Փ⫼ⱘˈ៥Ӏ⫼㸼
 ᴹ䯤ᯢ೼᪡԰㋏㒳ࡴ䕑఼䇗⫼ ([LW%RRW6HUYLFHV Пৢ䖭ѯ (), ‫ݙ‬ᄬ㉏ൟᰃབԩ㹿Փ⫼ⱘˈ
㸼ᯢҢ乘ਃࡼ䰊↉ࠄ䖤㸠ᯊ䰊↉ⱘ䕀বDŽ

㸼(), ‫ݙ‬ᄬ㉏ൟ੠ ([LW%RRW6HUYLFHV ПৢⱘՓ⫼ᮍ⊩DŽ

ࡽ䆄ヺ ᦣ䗄

EfiReservedMemoryType ᳾Փ⫼

EfiLoaderCode ࡴ䕑఼੠/៪᪡԰㋏㒳ৃҹ೼ᅗӀ䅸Ўড়䗖ⱘᯊ‫׭‬Փ⫼䖭⾡
‫ݙ‬ᄬDŽ⊼ᛣ˖䇗⫼ ExitBootServices()ⱘ᪡԰㋏㒳ࡴ䕑఼Փ
⫼њϔϾ៪㗙໮Ͼ EfiLoaderCode ऎඳDŽ

EfiLoaderData ࡴ䕑఼੠/៪᪡԰㋏㒳ৃҹ೼ᅗӀ䅸Ўড়䗖ⱘᯊ‫׭‬Փ⫼䖭⾡
‫ݙ‬ᄬDŽ⊼ᛣ˖䇗⫼ ExitBootServices()ⱘ᪡԰㋏㒳ࡴ䕑఼Փ
⫼њϔϾ៪㗙໮Ͼ EfiLoaderData ऎඳDŽ

EfiBootServicesCode ϔ㠀Փ⫼ৃҹ䆓䯂ⱘ‫ݙ‬ᄬDŽ

EfiBootServicesData ϔ㠀Փ⫼ৃҹ䆓䯂ⱘ‫ݙ‬ᄬDŽ

EfiRuntimeServicesCode 䖭Ͼ㣗ೈ‫ݙⱘݙ‬ᄬᰃ㹿ࡴ䕑఼੠໘ѢᎹ԰⢊ᗕҹঞ ACPI


S1-S3 ⢊ᗕⱘ᪡԰㋏㒳᠔ֱᡸⱘDŽ

EfiRuntimeServicesData 䖭Ͼ㣗ೈ‫ݙⱘݙ‬ᄬᰃ㹿ࡴ䕑఼੠໘ѢᎹ԰⢊ᗕҹঞ ACPI


S1-S3 ⢊ᗕⱘ᪡԰㋏㒳᠔ֱᡸⱘDŽ

EfiConventionalMemory ϔ㠀Փ⫼ৃҹ䆓䯂ⱘ‫ݙ‬ᄬDŽ

EfiUnusableMemory ᳝䫭䇃ⱘ‫ݙ‬ᄬˈϡ㛑㹿Փ⫼DŽ

EfiACPIReclaimMemory ೼ ACPI 㹿Փ㛑Пࠡˈ䖭⾡㉏ൟⱘ‫ݙ‬ᄬ㹿ࡴ䕑఼੠᪡԰㋏㒳


᠔ֱᡸDŽϔᮺ ACPI 㹿Փ㛑ˈ䖭Ͼ㣗ೈ䞠ⱘ‫ݙ‬ᄬৃҹ⫼԰ϔ
㠀⫼䗨DŽ

EfiACPIMemoryNVS 䖭Ͼ㣗ೈ‫ݙⱘݙ‬ᄬᰃ㹿ࡴ䕑఼੠໘ѢᎹ԰⢊ᗕҹঞ ACPI


S1-S3 ⢊ᗕⱘ᪡԰㋏㒳᠔ֱᡸⱘDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

EfiMemoryMappedIO ᪡԰㋏㒳ϡՓ⫼䖭⾡‫ݙ‬ᄬDŽ㋏㒳䞠᠔᳝ⱘ‫ݙ‬ᄬ᯴ᇘ IO ֵᙃ
䛑ᴹ㞾Ѣ ACPI 㸼DŽ

EfiMemoryMappedIOPortSpace ᪡԰㋏㒳ϡՓ⫼䖭⾡‫ݙ‬ᄬDŽ㋏㒳䞠᠔᳝ⱘ‫ݙ‬ᄬ᯴ᇘ IO ッষ
ぎ䯈ֵᙃ䛑ᴹ㞾Ѣ ACPI 㸼DŽ

EfiPalCode 䖭Ͼ㣗ೈ‫ݙⱘݙ‬ᄬᰃ㹿ࡴ䕑఼੠໘ѢᎹ԰⢊ᗕҹঞ ACPI


S1-S3 ⢊ᗕⱘ᪡԰㋏㒳᠔ֱᡸⱘDŽ䖭⾡‫ݙ‬ᄬгৃҹ‫݋‬᳝⬅݊
Ҫⱘ໘⧚఼ᅲ⦄᠔ᅮНⱘሲᗻDŽ

೼㸼  Ёˈ៥Ӏৃҹⳟࠄ䖤㸠ᯊ‫ݙ‬ᄬ㉏ൟᰃᗢḋ㹿ֱᡸⱘˈৃҹⳟࠄਃࡼ᳡ࡵ㉏ൟⱘ‫ݙ‬
ᄬᰃᗢМ㹿᪡԰㋏㒳ಲᬊˈᔧ‫خ‬㞾ᏅৃҹՓ⫼ⱘ‫ݙ‬ᄬDŽ

䖤㸠ᯊ᳡ࡵᰃབԩሩ⼎ߎᴹⱘ˛

೼ (), Ёˈ೎ӊ᳡ࡵᰃ䗮䖛ϔ༫ (),SURWRFRO ᅮНˈϔ㋏߫೼ᶤѯ⡍⅞Ⳃⱘⱘ᳡ࡵ㸼䞠ⱘ


ߑ᭄ᣛ䩜੠ (), 䜡㕂㸼ሩ⦄ߎᴹⱘDŽ೼䖭ѯሩ⦄೎ӊ $3, ⱘᴎࠊЁˈা᳝ҹϟϸ⾡೼䖯ܹ䅵ㅫ
ᴎ᪡԰ⱘ䖤㸠ᯊৢ䖬೼㒻㓁Փ⫼DŽ

Ƶ䖤㸠ᯊ᳡ࡵ㸼(), 䖤㸠ᯊ᳡ࡵ㸼ࣙ৿᠔᳝䖤㸠ᯊ᳡ࡵⱘᣛ䩜DŽ᠔᳝೼ (), 䖤㸠ᯊ᳡ࡵ


㸼䞠ⱘ‫ܗ‬㋴䛑ᰃߑ᭄ᣛ䩜ⱘॳൟˈ䖭ѯߑ᭄ᣛ䩜೼᪡԰㋏㒳䇗⫼ ([LW%RRW6HUYLFHV ᥹ㅵᑇৄ
ҹৢህ᳝ᬜњDŽ
Ƶ(), 䜡㕂㸼(), 䜡㕂㸼ࣙ৿ϔ༫ *8,'ᣛ䩜ᇍDŽ䖭ᓴ㸼䞠ⱘ㸼乍᭄Ⳃᕜᆍᯧ䱣ⴔᯊ䯈
㗠๲䭓ˈ᠔ҹᠡӮՓ⫼ *8,' ᴹ䆚߿৘⾡䜡㕂㸼ⱘ㉏ൟDŽᇍѢ↣ϔ⾡䜡㕂㸼ⱘ㉏ൟ㗠㿔ˈ೼䜡㕂
㸼Ё㟇໮া㛑ᄬ೼ϔϾᅲ՟DŽ

䖤㸠ᯊ᳡ࡵ㸼Ё᠔ሩ⼎ߎᴹⱘ䖤㸠ᯊ᳡ࡵˈ㟇ᇥ㽕ᅮН‫݋‬໛ (), ‫ݐ‬ᆍᑇৄⱘ 5XQWLPH$3,


㛑࡯ⱘ‫ݙ‬ḌDŽ䖭ѯߑ᳔᭄ᇥ㽕ࣙᣀᯊ䯈ˈ㰮ᢳ‫ݙ‬ᄬ੠ 9DULDEOH ᳡ࡵDŽ

䗮䖛 (), 䜡㕂㸼ሩ⼎ߎᴹⱘֵᙃˈᇚӮ೼ϡৠⱘᑇৄᅲ⦄П䯈㸼⦄ߎ䍞ᴹ䍞໻ⱘᏂᓖᗻDŽ
✊㗠䳔㽕⊼ᛣⱘϔϾ݇䬂⚍ᰃˈϢ *8,'ᣛ䩜ᇍⳌ݇㘨ⱘ *8,' ᅮНњ៥ӀᗢМএ⧚㾷ᣛ䩜᠔ᣛ
৥ⱘ᭄᥂DŽᣛ䩜᠔ᣛ৥ⱘ‫ݙ‬ᆍৃҹᰃϔϾߑ᭄៪㗙 $3,ˈৃҹᰃϔᓴ᭄᥂㸼ˈг޴Тৃҹᰃ݊Ҫ
ⱘӏԩϰ㽓DŽ В޴Ͼ՟ᄤˈ 䗮䖛 (), 䜡㕂㸼ሩ⼎ߎᴹⱘֵᙃ㉏ൟৃҹᰃ 60%,26ˈ
$&3, ੠ 03WDEOHˈ
гৃҹᰃϔഫ 81', ‫ݐ‬ᆍ㔥वⱘߑ᭄ॳൟDŽ೒  ᰃϔᓴড᯴ (), 䜡㕂㸼੠ϔϾߑ᭄ॳൟᅲ՟བ
ԩѸѦⱘ՟೒DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 5.2 EFI 䜡㕂㸼੠ߑ᭄ॳൟⱘѦࡼ

ᯊ䯈᳡ࡵ

䖭ϔ㡖ᦣ㒬ⱘᰃ⫼Ѣᯊ䯈Ⳍ݇ⱘߑ᭄ⱘḌᖗ (), ᅮНˈ䖭ѯߑ᭄ᰃ໘Ѣ䖤㸠ᯊⱘ᪡԰㋏㒳


Ўњ䆓䯂ㅵ⧚ᯊ䯈ֵᙃϢ᳡ࡵⱘ⹀ӊ᠔ᯢ⹂㽕∖ⱘDŽ䖭ѯ᥹ষⱘⳂⱘᰃᦤկ㒭೼䖤㸠ᯊᛇ䆓䯂
ᅗӀⱘ⍜䌍㗙ϔϾᢑ䈵ˈՓᕫ䖭ѯ⍜䌍㗙‫ܡ‬ѢⳈ᥹এ䆓䯂Ӵ㒳ⱘ⹀ӊ䆒໛DŽ㸼  Ё߫ߎⱘߑ
᭄ᄬ೼Ѣ (), 䖤㸠ᯊ᳡ࡵ㸼ЁDŽ

㸼(), 䖤㸠ᯊ᳡ࡵ㸼Ё෎Ѣᯊ䯈ⱘߑ᭄

ৡᄫ ㉏ൟ ᦣ䗄

䖨ಲᔧࠡⱘᯊ䯈੠᮹ᳳҹঞᑇৄⱘᯊ䯈ֱᣕ
*HW7LPH 䖤㸠ᯊ
㛑࡯

6HW7LPH 䖤㸠ᯊ 䆒㕂ᔧࠡⱘᴀഄᯊ䯈੠᮹ᳳֵᙃ

*HW:DNHXS7LPH 䖤㸠ᯊ 䖨ಲᔧࠡⱘ૸䝦䄺ਞᯊ䩳䆒㕂FORFN

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

6HW:DNHXS7LPH 䖤㸠ᯊ 䆒㕂㋏㒳ⱘ૸䝦䄺ਞᯊ䯈

ЎҔМ㽕ᢑ䈵ᯊ䯈˛

෎Ѣ໮⾡ॳ಴ˈҎӀৃ㛑Ӯ䗝ᢽᡞ䆓䯂ᑇৄᅲᯊᯊ䩳 57& ⱘᮍ⊩䖯㸠ᢑ䈵DŽ㄀ϔˈ䆓䯂ᑇ


ৄ 57& ෎ᴀϞϡᄬ೼ҔМᷛ‫ޚ‬ᴎࠊDŽ䆌໮Ӵ㒳Ёᮁг䆌᳡ࡵѢ໮ϾⳂⱘˈԚᰃϔ㠀ϡ໾ৃ㛑ᢑ
䈵ߎ䎇໳໮⡍߿᳝⫼ⱘֵᙃDŽϔϾ⫼᠋བᵰᛇⳈ᥹੠ 57& 䖯㸠ᇍ䆱ˈ䖭Ͼ⫼᠋ϡӮⶹ䘧ᗢМ໘
⧚䰸њᷛ‫ ⱘޚ‬,%0&026 ᣛҸП໪ⱘᚙ‫މ‬DŽ᳔ৢˈҎӀ㦋পĀ⦄೼ᰃҔМᯊ‫׭‬ā䖭ᴵ෎ᴀֵᙃⱘ
ᮍ⊩ˈ䱣ⴔᯊ䯈ⱘ᥼⿏г೼থ⫳ব࣪DŽ䆄ԣ䖭ϔ⚍ҹৢˈҎӀህ䳔㽕ᑇৄᦤկϔ༫ᢑ䈵ˈ䖭ḋ
䇗⫼㗙ህϡᖙᢙᖗϡৠⱘᇍ 57& 㓪⿟ҹপᕫᯊ䯈ֵᙃⱘᮍ⊩ѻ⫳ᓖᐌⱘ㸠Ўˈгϡᖙձ䌪䙷ѯ
Փ⫼ϡᷛ‫ˈⱘޚ‬Ԛᰃ᭛ḷैজ‫ⱘݭ‬ᕜᇥᕜᏂⱘӴ㒳Ёᮁᴹᢑ䈵䖭ѯৠḋⱘ᭄᥂њDŽ

㦋পᯊ䯈

˄Page76-85 ᳾ᅠ៤˅

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀݁ゴ
(),᥻ࠊৄ᳡ࡵ
ϡ㽕ЎԴϡⶹ䘧བԩᥠ᥻ⱘ䫭䇃ᚙᔶ‫⌟خ‬䆩

—Steinbach's Guideline for Systems Programming

ᴀゴҟ㒡њ EFI བԩᠽሩ乘ਃࡼ䰊↉Ё᥻ࠊৄᬃᣕⱘӴ㒳⬠䰤ˈৠᯊᦤկњᑓ⊯ᑨ⫼Ѣヺড়


EFI 㾘㣗ᑇৄⱘϔ㋏߫䕃ӊⱘߚሖᮍ⊩DŽ໻䚼ߚᑇৄ䛑㟇ᇥӮ᳝ϔϾ෎Ѣ᭛ᴀⱘ᥻ࠊৄՓ⫼᠋㛑
໳೼ᴀഄ៪䖰⿟Ϣ㋏㒳䖯㸠ѸѦDŽ೼ EFI Ё᳝ᕜ໮⾡ᴎࠊৃҹᅲ⦄䖭⾡Ѹ⌕DŽϡㅵᰃ䗮䖛䖰⿟⬠
䴶䖬ᰃ䗮䖛ᴀഄ䬂Ⲭ੠ᰒ⼎఼ˈ⫮㟇䗮䖛䖰⿟ⱘ㔥㒰䖲᥹ᴹᅲ⦄ˈ↣⾡ᴎࠊ䛑᳝ϔϾ݅ৠⱘ෎
⸔ˈৃ㹿㾚Ў෎ᴀⱘ EFI ᥻ࠊৄᬃᣕDŽ䖭⾡ᬃᣕ⫼Ѣ໘⧚೼ EFI ਃࡼ᳡ࡵ⦃๗ϟ䖤㸠ҷⷕᯊᦤկ
㒭㋏㒳⫼᠋ⱘ෎Ѣ᭛ᴀⱘ䕧ܹ䕧ߎֵᙃDŽ᥻ࠊৄᅮНৃߚЎϝ㉏ϡৠⱘ᥻ࠊৄ䆒໛˖䕧ܹϔ㉏ˈ
ℷᐌ䕧ߎ੠䫭䇃৘ϔ㉏DŽ

䖭ѯ᥹ষ䗮䖛ߑ᭄䇗⫼ⱘᅮНࡴҹ䆺䗄ˈҹ֓೼ᅲ⦄Ёᕫࠄ᳔໻ⱘ♉⌏ᑺDŽ՟བˈϔϾヺ
ড়㾘㣗ⱘ㋏㒳ᑊϡϔᅮ䳔㽕䬂Ⲭ៪ሣᐩϢ݊Ⳉ᥹䖲᥹DŽা㽕ߑ᭄ⱘ䇁Нᕫҹֱ⬭ˈᅗⱘᅲ⦄ህ
ৃҹӏᛣՓ⫼䖭ѯ᥹ষᴹᓩᇐֵᙃ⌕৥ˈা㽕㛑໳៤ࡳഄᇚֵᙃӴ䗦㒭㋏㒳⫼᠋ेৃDŽ

EFI ᥻ࠊৄ⬅ϸϾЏ㽕ण䆂㒘៤ˈߚ߿ᰃ EFI ㅔऩ᭛ᴀ䕧ܹ੠ EFI ㅔऩ᭛ᴀ䕧ߎण䆂DŽ䖭ϸ


Ͼण䆂ᅲ⦄њϔϾ෎ᴀⱘ෎Ѣ᭛ᴀⱘ᥻ࠊৄˈᅗ‫ܕ‬䆌ᑇৄ೎ӊǃEFI ᑨ⫼⿟ᑣ੠ (),26ORDGHUV
৥㋏㒳ㅵ⧚ਬᦤѸֵᙃ੠Ң㋏㒳ㅵ⧚ਬ᥹ᬊ䕧ܹDŽ(), ᥻ࠊৄ⬅  ԡ 8QLcode ᄫヺǃϔ㒘ㅔ
ऩⱘ䕧ܹ᥻ࠊᄫヺ˄ेᠿᦣⷕ˅ҹঞϔ㒘ৃ㓪⿟ⱘ䴶৥䕧ߎ˄output-oriented˅ⱘৃҹᦤկㄝ
ৠѢᱎ㛑㒜ッࡳ㛑ⱘ᥹ষ㒘៤DŽ䖭㒘෎Ѣ᭛ᴀⱘ᥹ষᑊϡॳ⫳ᬃᣕᣛ⚍䆒໛䕧ܹ៪ԡ೒䕧ߎDŽ

Ўֱ䆕᳔໻ⱘѦ᪡԰ᗻˈEFI ㅔऩ᭛ᴀ䕧ߎण䆂㟇ᇥᑨᬃᣕ෎ᴀⱘৃᠧॄ Latin Unicode ᄫ


ヺ䲚ˈҹՓᷛ‫ޚ‬㒜ッӓⳳ䕃ӊ㛑໳Ϣ EFI ᥻ࠊৄ݅ৠՓ⫼DŽ෎ᴀ Latin Unicode ᄫヺ䲚ᅲ⦄њ
ϔϾ ASCII ⷕⱘ䍙䲚ˈ䖭Ͼ䍙䲚㹿ᠽሩЎϔ㒘 16 ԡⱘᄫヺDŽ䗮䖛Փ⫼໪䚼㒜ッӓⳳˈ䙓‫ܡ‬њ᭛
ᴀ㓪ⷕ㹿䰡Ḑ䕀ᤶЎᇍᑨⱘ ASCII ⷕˈҢ㗠ᦤկњ᳔໻ⱘѦ᪡԰ᗻDŽ

EFI ᳝䆌໮㋏㒳㣗ೈ‫ⱘݙ‬ᇍ᥻ࠊৄⱘᓩ⫼DŽEFI ㋏㒳㸼˄EFI System Table˅ࣙ৿݁Ͼ᥻ࠊৄ


Ⳍ݇ⱘܹষ˖

Ƶ ConsoleInHandle - ⌏ࡼ᥻ࠊৄ䕧ܹ䆒໛ⱘ handleDŽ䖭ϔ handle ᖙ乏ᬃᣕ EFI ㅔऩ


᭛ᴀ䕧ܹण䆂DŽ

Ƶ ConIn - ϔϾϢ ConsoleInHandle Ⳍ݇㘨ⱘᣛ৥ EFI ㅔऩ᭛ᴀ䕧ܹण䆂᥹ষⱘᣛ䩜DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ƶ ConsoleOutHandle - ⌏ࡼ᥻ࠊৄ䕧ߎ䆒໛ⱘ handleDŽ䆹 handle ᖙ乏ᬃᣕ EFI ㅔऩ


᭛ᴀ䕧ߎण䆂DŽ

Ƶ ConOut - ϔϾϢ ConsoleOutHandle Ⳍ݇㘨ⱘᣛ৥ EFI ㅔऩ᭛ᴀ䕧ߎण䆂᥹ষⱘᣛ


䩜DŽ

Ƶ StandardErrorHandle - ⌏ࡼᷛ‫ޚ‬䫭䇃᥻ࠊৄ䆒໛ⱘ handleDŽ䆹 handle ᖙ乏ᬃᣕ EFI


ㅔऩ᭛ᴀ䕧ߎण䆂DŽ

Ƶ StdErr - ϔϾϢ StandardErrorHandle Ⳍ݇㘨ⱘᣛ৥ EFI ㅔऩ᭛ᴀ䕧ߎण䆂᥹ষⱘᣛ


䩜DŽ

೼ EFI Ёˈ݊ᅗᇍ᥻ࠊৄⱘ㋏㒳㣗ೈⱘᓩ⫼㹿ࣙ৿೼ܼሔব䞣ᅮНЁDŽEFI ЁϔѯϢП᳝݇


ⱘܼሔব䞣ᅮНབϟ˖

Ƶ ConIn - EFI ܼሔব䞣ˈࣙ৿咬䅸ⱘ䕧ܹ᥻ࠊৄⱘ䆒໛䏃ᕘDŽ

Ƶ ConInDev - EFI ܼሔব䞣ˈࣙ৿᠔᳝ৃ㛑ⱘ᥻ࠊৄ䕧ܹ䆒໛ⱘ䆒໛䏃ᕘDŽ

Ƶ ConOut - EFI ܼሔব䞣ˈࣙ৿咬䅸ⱘ䕧ߎ᥻ࠊৄⱘ䆒໛䏃ᕘDŽ

Ƶ ConOutDev - EFI ܼሔব䞣ˈࣙ৿᠔᳝ৃ㛑ⱘ᥻ࠊৄ䕧ߎ䆒໛ⱘ䆒໛䏃ᕘDŽ

Ƶ ErrOut - EFI ܼሔব䞣ˈࣙ৿咬䅸ⱘ䫭䇃᥻ࠊৄⱘ䆒໛䏃ᕘDŽ

Ƶ ErrOutDev - EFI ܼሔব䞣ˈࣙ৿᠔᳝ৃ㛑ⱘ᥻ࠊৄ䕧ߎ䆒໛ⱘ䆒໛䏃ᕘDŽ

೒ 6.1 ᠔⼎ⱘᰃⳂࠡЎℶ៥Ӏ᠔䅼䆎䖛ⱘ䕃ӊߚሖᮍᓣDŽབᵰ EFI ᑨ⫼⿟ᑣ៪偅ࡼ⿟ᑣ䳔㽕


䗮䖛᭛ᴀ⬠䴶䖯㸠䗮ֵˈህৃҹՓ⫼ EFI ㋏㒳㸼䞠᠔⼎ⱘ⌏ࡼ᥻ࠊৄᴹ䇗⫼ᬃᣕড়䗖ⱘ᭛ᴀ䕧ܹ
៪᭛ᴀ䕧ߎण䆂ⱘ᥹ষDŽ೼߱ྟ࣪䖛⿟Ёˈ㋏㒳㸼㹿Ӵ䗦㒭Ꮖਃࡼⱘ EFI ᑨ⫼⿟ᑣ៪偅ࡼ⿟ᑣˈ
ᅗӀህৃҹゟेᓔྟՓ⫼᠔䳔ⱘ᥻ࠊৄDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ўњ䖯ϔℹ䇈ᯢ䖭ѯѸѦˈ៥Ӏ᳝ᖙ㽕⏅ܹⷨおϔϟ䖭ѯ᭛ᴀ I/O ᥹ষおコⳟ䍋ᴹᰃҔМ


ḋҹঞᅗӀ㛑᳝ᬜഄ䋳䋷ાѯᎹ԰DŽ

ㅔऩ᭛ᴀ䕧ܹण䆂

ㅔऩ᭛ᴀ䕧ܹण䆂ᅮНњᬃᣕ⡍ᅮ ConIn 䆒໛᠔䳔ⱘ᳔ᇣ䕧ܹDŽ䆹᥹ষЎᅗⱘ䇗⫼㗙ᦤկ


њϸϾ෎ᴀߑ᭄˖

Ƶ Reset - 䆹ߑ᭄ᇚ䕧ܹ䆒໛⹀ӊ໡ԡDŽ԰Ў߱ྟ࣪䖛⿟ⱘϔ䚼ߚˈ೎ӊ/䆒໛䖯㸠ϔ⃵
ᖿ䗳Ԛড়⧚ⱘᇱ䆩ᴹ偠䆕䆒໛ᰃ৺Ꮉ԰ℷᐌDŽ䖭⾡⹀ӊ偠䆕䖛⿟ᰃ಴ϡৠⱘᅲ⦄㗠ᓖⱘˈϨᅗ
㹿⬭㒭೎ӊ੠/៪ EFI 偅ࡼ⿟ᑣᴹᅲ⦄DŽ

Ƶ ReadKeyStroke - 䆹ߑ᭄Ң䕧ܹ䆒໛䇏পϟϔϾߏ䬂DŽབᵰ≵᳝ৢ㓁ߏ䬂ˈ߭䆹ߑ᭄
䖨ಲϔϾ EFI Not Ready 䫭䇃DŽབᵰ᳝ৢ㓁ߏ䬂ˈ߭䖨ಲϔϾ EFI 䬂DŽϔϾ EFI 䬂⬅ϔϾᠿᦣⷕ
੠ϔϾ Unicode ᄫヺ㒘៤DŽ݊Ёⱘ Unicode ᄫヺᰃᅲ䰙ৃᠧॄⱘᄫヺˈ៪㗙㢹䆹䬂≵᳝⫼ৃ
ᠧॄᄫヺ㸼⼎ᯊ߭ℸ Unicode ᄫヺЎ䳊ˈ↨བ᥻ࠊ䬂៪ࡳ㛑䬂DŽ

ᔧҢ ReadKeyStroke()ߑ᭄䇏পϔϾ䬂ᯊˈӮ⫳៤ϔϾ EFI Input KeyDŽ೼Ӵ㒳೎ӊЁˈ᠔


᳝ PS/2 䬂䛑᳝ϔϾ಴⹀ӊϡৠ㗠ᓖⱘᠿᦣⷕˈ䖭гᰃ೎ӊଃϔ໘⧚ⱘϰ㽓DŽ೼ EFI Ёˈ᳝ѯ䆌
ব࣪ҹ֗䖯Ϣᴀഄঞ䖰⿟⫼᠋ⱘ䆹᭄᥂ⱘড়⧚ѸᤶDŽ䗕ಲⱘ᭄᥂᳝ϸϾЏ㽕䚼ߚ˖

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ƶ Unicode ᄫヺ - ㅔऩ᭛ᴀ䕧ܹण䆂ᅮНњϔϾࣙ৿ Unicode ᄫヺⱘ䕧ܹ⌕DŽ䖭Ͼؐ


ҷ㸼њ⫼ Unicode 㓪ⷕⱘ 16 ԡؐˈ䆹 16 ԡؐᇍᑨѢ⫼᠋᠔ᣝϟⱘ䬂DŽϔѯ Unicode ᄫヺ᳝
⡍⅞৿Нˈ಴㗠㹿ᅮНЎ EFI ᬃᣕⱘ Unicode ᥻ࠊᄫヺˈབ㸼 6.1 ᠔⼎DŽ

Ƶ ᠿᦣⷕ - 䕧ܹ⌕ˈ䰸ᬃᣕ Unicode ᄫヺ໪䖬ᬃᣕ EFI ᠿᦣⷕDŽབᵰᠿᦣⷕ㹿㕂Ў 0x00


߭ Unicode ᄫヺ᳝ᬜϨᑨᔧ㹿Փ⫼DŽབᵰ EFI ᠿᦣⷕ㹿㕂ЎϔϾ䴲 0x00 ⱘؐˈ߭ҷ㸼ϔϾ⡍
⅞ⱘ䬂ˈབ㸼 6.2 ᠔⼎DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ReadKeyStroke ߑ᭄ᦤկњᔧᬊࠄ䬂ؐᯊ㾺থϔϾ EFI џӊⱘࡳ㛑DŽ㽕Փ⫼䆹ࡳ㛑ˈ⿟ᑣ


ਬᖙ乏Փ⫼ WaitForEvent ៪ CheckEvent ᳡ࡵѠ㗙ПϔDŽӴ䗦㒭䖭ѯ᳡ࡵⱘџӊབϟ˖

Ƶ WaitForKey - ᔧ䇗⫼ WaitForEvent()ᴹㄝᕙϔϾᣝ䬂ৃ⫼ᯊ᠔Փ⫼ⱘџӊDŽ

ㅔऩ᭛ᴀ䕧ܹण䆂᠔໘⧚ⱘ‫ݙ‬ᆍϢӴ㒳೎ӊЁⱘ INT 16h ᳡ࡵ᠔໘⧚ⱘ‫ݙ‬ᆍ䴲ᐌⳌԐDŽ݊


Џ㽕ऎ߿೼ѢˈӴ㒳೎ӊ᳡ࡵ䖨ಲⱘᰃᣝ䬂ᇍᑨⱘ 8 ԡ ASCII ⷕ੠಴⹀ӊϡৠ㗠ᓖ˄བ PS/2˅
ⱘᠿᦣⷕDŽ

ㅔऩ᭛ᴀ䕧ߎण䆂

ㅔऩ᭛ᴀ䕧ߎण䆂⫼Ѣ᥻ࠊ෎Ѣ᭛ᴀⱘ䕧ߎ䆒໛DŽᅗᰃᇚӏԩ handle ԰Ў ConOut ៪


StdOut 䆒໛⫼䗨ᯊ㟇ᇥ䳔㽕ⱘण䆂DŽ঺໪ˈEFI ᬃᣕℸ㉏䆒໛ⱘ᳔ᇣ᭛ᴀ῵ᓣЎ㟇ᇥ 80 h 25
ϾᄫヺDŽ

ϔϾাᬃᣕ೒‫ڣ‬῵ᓣⱘ㾚乥䆒໛ᖙ乏㛑໳ӓⳳ᭛ᴀ῵ᓣⱘࡳ㛑DŽ䕧ߎᄫヺІЁϡ‫ܕ‬䆌ࣙ৿
䰸㸼 6.1 ҹ໪ⱘ݊ᅗӏԩ᥻ࠊⷕDŽ‫ܝ‬ᷛ㕂ԡা㛑䗮䖛 SetCursorPosition()ߑ᭄ᴹᅠ៤DŽ䖭䞠ᔎ
⚜ᓎ䆂ᇚ৥ StdErr 䆒໛䕧ߎⱘ᭛ᴀ䰤ࠊЎІ㸠ᄫヺІ䕧ߎDŽᤶহ䆱䇈ˈϡᓎ䆂೼৥ StdErr 䕧ߎ
ⱘ⍜ᙃЁՓ⫼ ClearScreen()៪ SetCursorPosition()ˈҹՓ៥Ӏ㛑໳⏙᱄ഄᤩ㦋៪㾖ⳟࠄ䕧ߎ
ֵᙃDŽ

ㅔऩ᭛ᴀ䕧ߎण䆂Ё䖬ࣙ৿њϔϾᣛ৥ᶤ⾡῵ᓣ᭄᥂ⱘᣛ䩜ˈབ೒ 6.2 ᠔⼎DŽ䖭⾡῵ᓣ᭄


᥂⫼Ѣ⹂ᅮᶤᣛᅮ䆒໛ⱘᔧࠡ᭛ᴀ䆒㕂ᰃҔМDŽ䖭ѯֵᙃⱘ໻䚼ߚ㹿⫼Ѣ⹂ᅮᔧࠡⱘ‫ܝ‬ᷛԡ㕂
੠㒭ᅮⱘࠡ᱃੠㚠᱃买㡆DŽℸ໪ˈ⿟ᑣਬ䖬ৃ㾘ᅮ‫ܝ‬ᷛᰃৃ㾕៪ϡৃ㾕DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ㅔऩ᭛ᴀ䕧ߎण䆂䖬ࣙ৿䆌໮᭛ᴀ䕧ߎⳌ݇ⱘߑ᭄DŽԚᰃˈᴀゴা䅼䆎᳔ᐌ⫼ⱘ޴Ͼ˖

Ƶ OutputString - ᦤկᇚҹ NULL 㒧ሒⱘ Unicode ᄫヺІ‫ܹݭ‬䕧ߎ䆒໛ᑊᰒ⼎ⱘ㛑࡯DŽ


᠔᳝䕧ߎ䆒໛䖬ᖙ乏ᬃᣕ䚼ߚ EFI 1.1 㾘㣗Ё᠔߫ߎⱘ෎ᴀ Unicode 㒬೒ᄫヺDŽ䖭ᰃϔϾ䕧ߎ
䆒໛Ϟ᳔෎ᴀⱘ䕧ߎᴎࠊDŽ೼䕧ߎ䆒໛ϞˈᄫヺІ೼ᔧࠡ‫ܝ‬ᷛ໘ᰒ⼎ˈ‫ܝ‬ᷛḍ᥂㸼 6.3 ᠔⼎ⱘ
㾘߭৥ৢ⿏ࡼDŽ

䗮䖛ᦤկϔ⾡‫ܕ‬䆌᥻ࠊৄ䆒໛˄བ㾚乥偅ࡼ⿟ᑣ˅ѻ⫳᭛ᴀ᥹ষⱘᢑ䈵ˈ䖭ৃҹϢӴ㒳೎
ӊⱘ INT 10h ᬃᣕⳌႆ㕢DŽㅔऩ᭛ᴀ䕧ߎ᥹ষⱘ⫳៤㗙䋳䋷ᇚ Unicode ᭛ᴀᄫヺЎ䆹䆒໛䕀ᤶ
៤ℷ⹂ⱘᄫൟDŽᔧϔϾϡ㛑㹿䆚߿ⱘ Unicode ᄫヺ䗕ࠄ OutputString() API ᯊˈ‫݌‬ൟⱘ㒧ᵰᰃ
ѻ⫳ϔϾ䄺ਞˈᦤ⼎䖭ѯᄫヺᇚ㹿ᗑ⬹DŽ

Ƶ SetAttribute - 䆹ߑ᭄⫼ᴹ䆒㕂ߑ᭄ OutputString()੠ ClearScreen()ⱘ㚠᱃੠ࠡ᱃


㡆DŽEFI1.1 㾘㣗ЁᅮНњ໮⾡ࠡ᱃੠㚠᱃㡆DŽेՓ䆒໛໘ѢϔϾ᮴ᬜⱘ᭛ᴀ῵ᓣϟˈгৃҹ䆒
㕂买㡆DŽ㛑໳ᬃᣕϡৠ⾡᭛ᴀ买㡆ⱘ৘⾡䆒໛ᑨ೼݊㛑࡯‫ܕ‬䆌ⱘ㣗ೈ‫ݙ‬ሑ䞣ӓⳳ㾘ᅮⱘ买㡆DŽ

Ƶ ClearScreen - 䆹ߑ᭄㛑⏙䰸ϔϾ៪໮Ͼ䕧ߎ䆒໛ⱘᰒ⼎‫ݙ‬ᆍˈᑊᇚ݊䖬ॳ៤ᔧࠡ䗝
ᅮⱘ㚠᱃㡆DŽৠᯊ‫ܝ‬ᷛⱘԡ㕂ᇚ㹿㕂Ѣതᷛ˄0ˈ0˅໘DŽ

Ƶ SetCursorPosition - 䆹ߑ᭄⫼ᴹ䆒㕂‫ܝ‬ᷛᔧࠡԡ㕂ⱘതᷛDŽሣᐩᎺϞ㾦㹿ᅮНЎതᷛ
˄0ˈ0˅

䖰⿟᥻ࠊৄᬃᣕ

ᴀゴⱘࠡ޴㡖䆆䗄њ䚼ߚ᭛ᴀ䕧ܹ੠䕧ߎण䆂ˈᑊՓ⫼њϔѯ䗮䖛ᴀഄ䆒໛⫳៤ⱘ՟ᄤDŽ
EFI ৠḋᬃᣕ໮⾡䖰⿟᥻ࠊৄDŽ䖭⾡ᬃᣕ߽⫼њᏆ᳝ⱘᴀഄ᥹ষˈԚᅗᅲ⦄њ䖯ߎ䖤㸠Ёⱘᑇৄ
໪䆒໛ⱘ᭄᥂ⱘ䏃⬅DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ϔϾ䖰⿟᥻ࠊৄ㹿ᅲ՟࣪ˈ䗮ᐌᰃ⑤Ѣ EFI ᵘᓎϔϾ᥻ࠊৄ偅ࡼ⿟ᑣϢПᣖ᥹ⱘ I/O ᢑ䈵ᯊDŽ


೼䖭⾡ᚙ‫މ‬ϟˈ៥Ӏⱘ䅼䆎‫ܜ‬ϧ⊼ѢІ㸠᥹ষ᥻ࠊৄDŽᕜ໮⾡᥻ࠊৄӴ䕧ण䆂ˈབ
PC-ANSI,VT-100 ㄝˈᦣ䗄њ䗕㒭੠ᴹ㞾ᴎ఼ⱘ᭄᥂ⱘḐᓣDŽ

䋳䋷ѻ⫳᭛ᴀ I/O ᥹ষⱘ᥻ࠊৄ偅ࡼ⿟ᑣᡂⓨњ I/O 䖛Ⓒ఼ⱘ㾦㡆DŽ՟བˈᔧϔϾ䖰⿟䬂


㹿ᣝϟᯊˈৃ㛑䳔㽕Ң䖰⿟䆒໛ᵘᓎ੠Ӵ䕧ⱘϡৠⱘ᭄᥂ഫDŽৠᯊ೼ᬊࠄ᭄᥂ᯊˈ᥻ࠊৄ偅ࡼ
䳔㽕ᇚ䖭ѯֵᙃ㗏䆥ᑊ䕀ᤶ៤ᇍᑨⱘ EFI 䇁ᛣˈབ EFI ᠿᦣⷕ੠ Unicode ᄫヺDŽᇍѢ᠔᳝೼ᴀ
ഄᴎ఼Ϟ䖤㸠ⱘ䳔㽕ᠧॄ⍜ᙃⱘᑨ⫼⿟ᑣˈ݊ᴎࠊгᰃᅠܼϔḋⱘDŽ⍜ᙃ⬅᥻ࠊৄ偅ࡼ⿟ᑣ᥹
ᬊᑊ㹿㗏䆥៤ヺড়䖰⿟㒜ッ㉏ൟⱘ䇁ᛣDŽ

㸼 6.4 В՟䇈ᯢњϔϾ EFI ᠿᦣⷕབԩ᯴ᇘࠄ ANSI X3.64 㒜ッˈPC-ANSI 㒜ッˈ៪ AT


101/102 䬂ⲬDŽPC ANSI 㒜ッᬃᣕҹ ASCII ᄫヺ 0x1b ᓔ༈ˈৢ᥹ ASCII ᄫヺ 0x5b˄ेĀ[Ā˅
ⱘ䕀Нᑣ߫DŽASCII ᄫヺᅮНⱘ᥻ࠊᑣ߫乏䎳೼䕀Нᑣ߫ПৢDŽ䕀Нᑣ߫ϡࣙ৿ぎḐˈԚЎњᮍ
֓䯙䇏ˈ៥Ӏ೼㸼 6.4 ЁՓ⫼њぎḐDŽ㢹䳔㽕ᕫࠄ EFI 㒜ッᬃᣕⱘ᳈໮ֵᙃˈ䇋ᶹ䯙 EFI1.1 㾘㣗DŽ

㸼 6.5 ᰒ⼎њ PC-ANSI ੠ ANSI X3.64 ⱘ䚼ߚ⫼ᴹ䇗ᭈ᭛ᴀᰒ⼎఼ⱘᰒ⼎ሲᗻ៪᭛ᴀᰒ⼎


ሲᗻⱘ᥻ࠊᑣ߫DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 6.3 䇈ᯢњ‫݋‬᳝᭛ᴀ I/O ᢑ䈵ⱘ䖰⿟І㸠᥹ষⱘ䕃ӊߚሖ㒧ᵘDŽ䆹೒Ϣሩ⼎њᴀഄ䆒໛


ϞⱘⳌৠ᭛ᴀ I/O ᢑ䈵ⱘ೒Ⳍ↨ˈЏ㽕ⱘᏂ߿ᰃᴀ೒໮њϔϾ䕃ӊ偅ࡼ⿟ᑣሖDŽ೼ࠡ䴶ⱘ՟ᄤ
Ёˈᴀഄ䆒໛⬅ϔϾᏆਃࡼⱘҷ⧚থ⦄ˈᅗᇚձ⃵ᓎゟϔ༫᭛ᴀ I/O ᢑ䈵DŽ೼䖰⿟䆒໛ⱘᚙ‫މ‬
ϟˈᴀഄ䆒໛ᰃϔϾІ㸠䆒໛ˈ݊Ϟ᳝ϔሖ᥻ࠊৄ偅ࡼ⿟ᑣˈᑊϨᅗгӮձ⃵ᓎゟϔ༫᭛ᴀ I/O
ᢑ䈵DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

᥻ࠊৄߚ⾏఼

ᦣ䗄৘⾡᥻ࠊৄ䆒໛ⱘ㛑࡯ᵘ៤њᮄⱘ᳝䍷ⱘৃ㛑ᗻDŽ೼Ϟϔҷ೎ӊЁˈ⿟ᑣਬা㛑䗮䖛
ϔ⾡䗨ᕘᴹᦣ䗄᭛ᴀ I/O ⱘᴹ⑤੠ⳂⱘഄDŽ⦄೼ˈ㾘ᅮાѯ᥻ࠊৄᰃ⌏ࡼ᥻ࠊৄⱘ EFI ব䞣⬅
䆒໛䏃ᕘ㾘ᅮDŽ೼䖭⾡ᚙ‫މ‬ϟˈ䖭ѯ䆒໛䏃ᕘᰃ໮ᅲ՟ⱘˈ䖭ᛣੇⴔৃҹ᳝໮ѢϔϾⱘⳂᷛ䆒
໛ৃ԰Ў⌏ࡼ䕧ܹ៪㗙⌏ࡼ䕧ߎDŽ՟བˈབᵰ⿟ᑣਬᛇ䅽ᑨ⫼⿟ᑣᇚ᭛ᴀৠᯊᠧॄࠄᴀഄሣᐩ
੠䖰⿟㒜ッⱘሣᐩϞˈ䗮䖛ᅮࠊ䕃ӊᴹᅲ⦄䖭⾡⡍⅞ᑨ⫼ᇚᰃ䴲ᐌϡߛᅲ䰙ⱘDŽ೼ EFI ᦤկⱘᮍ
ḜЁˈ䗮䖛᥻ࠊৄߚ⾏/ড়ᑊ㛑࡯ˈᑨ⫼⿟ᑣৃҹাՓ⫼ EFI ᦤկⱘᷛ‫ޚ‬᭛ᴀ᥹ষˈ᥻ࠊৄߚ⾏
఼Ӯᇚ䖭ѯ᭛ᴀ䇋∖䗕㟇ড়䗖ⱘऩϾ៪໮ϾⳂᷛ䆒໛ϞDŽ䖭⾡ᮍ⊩ᇍ䕧ܹ੠䕧ߎ⌕䛑ৠḋ䗖⫼DŽ

Ϟ䗄ᮍ⊩া᳝೼བϟᴵӊϟᠡ㛑⫳ᬜ˖೼ヺড় EFI 㾘㣗ⱘᑇৄ߱ྟ࣪ৢˈ᥻ࠊৄߚ⾏఼ᇚ㞾


Ꮕ԰ЎЏ⌏ࡼ᥻ࠊৄ㺙ܹ EFI ㋏㒳㸼ЁDŽ䖭ḋˈᅗ㒻㗠ৃҹᓔྟⲥ᥻ᭈϾᑇৄˈৠᯊ݊Ҫ EFI ᭛

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᴀ᥹ষ԰Ўण䆂㹿ᅝ㺙ˈϨ᥻ࠊৄߚ⾏఼Ў㒭ᅮⱘ᥻ࠊৄব䞣ֱ⬭ϔϾ⫼᠋䗝ᅮⱘ䆒໛ⱘ䖤㸠
ᷛ䆄ˈབ ConOut, ConIn, ៪ ErrOutDŽ

೒ 6.4 ᦣ䗄њϔϾᑨ⫼എ᱃ˈ݊Ёᑨ⫼⿟ᓣ䇗⫼ EFI ᭛ᴀ᥹ষˈ㗠 EFI ᭛ᴀ᥹ষজձ⃵䇗⫼


EFI ㋏㒳㸼᥻ࠊৄ᥹ষDŽ䖭ѯ᥹ষᰃ᥻ࠊৄߚ⾏఼ⱘ㒘៤䚼ߚˈ᥻ࠊৄߚ⾏఼✊ৢᇚᴹ㞾ᑨ⫼⿟
ᑣⱘ᭛ᴀ I/O 䇋∖䗕㟇ձᑇৄ䜡㕂ⱘ᥻ࠊৄDŽ

㔥㒰᥻ࠊৄ

EFI гᦤկњϢ㔥㒰Ё䖰⿟ᑇৄᓎゟ᭄᥂䖲᥹ⱘ㛑࡯DŽা㽕ᅝ㺙њড়䗖ⱘ偅ࡼ⿟ᑣˈ⿟ᑣਬ
гৃҹ䅽ヺড় EFI 㾘㣗ⱘᑇৄᬃᣕϔ༫᭛ᴀ I/O ⱘᢑ䈵DŽࠡ䴶䅼䆎䖛ˈ⹀ӊ᥹ষ˄՟བˈІ㸠
䆒໛ǃ䬂Ⲭǃ㾚乥ǃ㔥㒰᥹ষव˅䛑᳝ϔϾᢑ䈵DŽϢ䖭ϔὖᗉ㉏Ԑˈ݊Ҫ䚼ӊᓎゟ೼䖭⾡⹀ӊ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᢑ䈵ⱘ෎⸔ПϞˈᴹᦤկϔϾᎹ԰䕃ӊᷜDŽ

ϟ䴶ᰃϔѯ EFI ৃҹࣙ৿ⱘ㔥㒰㒘ӊ

Ƶ 㔥㒰᥹ষ䆚߿ - 䖭ᰃϔϾ⬅䗮⫼㔥㒰偅ࡼ⿟ᑣ᥹ষ˄UNDI˅ѻ⫳ⱘৃ䗝ण䆂ˈᅗ⫼Ѣ
⫳៤ㅔऩ㔥㒰ण䆂DŽ䖭Ͼण䆂া᳝೼ᑩሖ㔥㒰᥹ষᰃ 16 ԡ UNDI, 32/64 ԡ S/W UNDI,៪ H/W
UNDI ᯊᠡᰃᖙ乏ⱘDŽᅗ㹿⫼ᴹ㦋পᑩሖ㔥㒰᥹ষⱘ㉏ൟ੠⠜ᴀֵᙃDŽ

Ƶ ㅔऩ㔥㒰ण䆂---䖭Ͼण䆂㒭㔥㒰䗖䜡఼ᦤկњϔϾֵᙃࣙϔ㑻ⱘ᥹ষDŽ঺໪ᅗ䖬ᦤկ
њ߱ྟ࣪㔥㒰᥹ষǃথ䗕ࣙǃ᥹ᬊࣙ੠݇䯁㔥㒰᥹ষⱘ᳡ࡵDŽ

Ўњ㾷䞞ϔϾ䗮⫼㔥㒰᥻ࠊৄⱘ῵ൟˈԴৃҹᦣ䗄ϔϾ߱ྟⱘ⹀ӊᢑ䈵ˈᅗϢ UNDI 偅ࡼ
⿟ᑣѻ⫳ⱘ㔥㒰᥹ষ᥻ࠊ఼˄NIC˅Ⳉ᥹䗮ֵDŽ䖭㒻㗠᳝ϔϾԡѢ UNDI ПϞⱘㅔऩ㔥㒰ण䆂ሖDŽ
ᅗ㛑ᦤկ෎ᴀⱘ㔥㒰ᢑ䈵᥹ষˈབ Send ੠ ReceiveDŽ೼ℸПϞৃ㛑Ӯᅝ㺙ϔϾӴ䕧ण䆂˄བ
TCP/IP ण䆂ᷜ˅DŽᇍѢ໻໮᭄㋏㒳㗠㿔ˈϔᮺᦤկњϔϾ⹂ᅮⱘӴ䕧ᴎࠊˈ៥Ӏৃҹ೼ᑇৄ‫ݙ‬
ᨁᓎ৘⾡ᠽሩ⿟ᑣˈབ Telnet Daemonˈৃҹ䅽䖰⿟⫼᠋䗮䖛㔥㒰䖲᥹ᴹⱏᔩ㋏㒳DŽ᳔㒜ˈ
䖭Ͼᅜᡸ⿟ᑣӮ⫳៤ᑊ䋳䋷໘⧚Ꮖ㒣೼ࠡ䴶ゴ㡖ᦣ䗄䖛ⱘℷᐌ᭛ᴀ I/O ᥹ষDŽ

೒ 6.5 ᦣ䗄њϔϾ䖰⿟ᴎ఼㛑໳䗮䖛㔥㒰䖲᥹䆓䯂ᴀഄヺড় EFI 㾘㣗ᑇৄⱘ՟ᄤDŽᇚ䕃ӊᷜ


乊ሖ(EFI_SIMPLE_TEXT_IN ੠ EFI_SIMPLE_TEXT_OUT)԰Ўᑨ⫼⿟ᑣϢПᇍ䆱ⱘৃѦ᪡԰ҟ䴶ᦤ
կˈ䖭‫ܕ‬䆌᠔᳝ⱘᷛ‫ ޚ‬EFI ᑨ⫼⿟ᑣᑇ⒥ⱘ߽⫼ᑇৄⱘ᥻ࠊৄᬃᣕDŽ‫ࡴݡ‬Ϟ᥻ࠊৄߚ⾏੠ড়ᑊⱘ
೎᳝㛑࡯ˈԴህ‫݋‬໛њ䗮䖛ϔϾ᳈‫ع‬ໂⱘᮍᓣϢᑇৄѸѦⱘ㛑࡯ˈ㗠ϡ‫ݡ‬䳔㽕໻䞣㒣䖛⡍⅞䇗
ᭈⱘ䕃ӊDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀ϗゴ
ϡৠ㉏ൟⱘᑇৄ
໮ḋᗻᰃ⫳⌏ⱘ䇗᭭ˈᅗ䅽⫳⌏Єᆠ໮ᔽDŽ

----࿕ᒝ•㗗ᶣ

ᴀゴҟ㒡њϡৠⱘᑇৄ㉏ൟ੠෎Ѣ Framework ⱘ‫݋‬ԧᅲ⦄ˈབጠܹᓣ㋏㒳ˈᥠϞ⬉㛥ˈ


ৄᓣᴎ੠᳡ࡵ఼DŽ䰸њᦤկϔϾҎӀ❳ⶹⱘϾҎ⬉㛥ᑇৄ䯈ⱘ BIOS replacementˈFramework
ᶊᵘৠḋ䖬ৃҹ⫼ѢЎ᳡ࡵ఼ǃ᠟ᣕ䆒໛ǃ⬉㾚ㄝᵘᓎᓩᇐ੠߱ྟ࣪䆒㕂ⱘ⦃๗DŽ䖭ѯ䆒໛ৃ
㛑ࣙᣀ೼ϾҎ⬉㛥Ёᐌ㾕ⱘ IA-32 ໘⧚఼ǃ‫݋‬᳝Ԣࡳ㗫⡍⚍ⱘ㣅⡍ᇨ XScale ໘⧚఼ǃҹঞᅝ㝒
Itanium ㋏㒳Ёⱘ໻ൟᴎ໘⧚఼DŽℸ໪ˈᴀゴ䖬᥶䅼њ⫼Ѣᵘ䗴ᷛ‫ ޚ‬PC ᑇৄ᠔ᖙ䳔ⱘ PEI ῵
ഫ੠ DXE 偅ࡼ⿟ᑣ.DŽᑊϨˈᦣ䗄њ䖭ѯ῵ഫЁ⫼Ѣӓⳳⱘ䚼ߚ੠Փ⫼㣅⡍ᇨ Xscale ໘⧚఼ⱘ
PDA.

೒ 7.1 ᰃϔϾ‫݌‬ൟⱘ㋏㒳Ḛ೒ˈሩ⼎њ৘⾡‫ܗ‬ӊˈ䲚៤࣫ḹǃफḹ੠ Super I/O,੠䰸ℸП


໪݊Ҫৃ㛑ⱘ‫ܗ‬ӊDŽ䖭ѯḚ೒ҷ㸼њ㋏㒳Џᵓࠊ䗴ⱘ㒘ߚ䚼ߚDŽ↣Ͼ㢃⠛੠ᑇৄϞⱘ㒘ӊ䛑᳝
ϢПⳌ݇㘨ⱘ῵ഫ៪偅ࡼ⿟ᑣᴹ໘⧚ᅗӀ৘㞾ⱘ߱ྟ࣪DŽ䰸њЏᴎᵓϞⱘ㒘៤䚼ߚˈ䆹ᑇৄⱘ
߱ྟ‫ݙ‬ᄬ᯴ᇘг䳔㽕᳝⡍ᅮⱘऎඳߚ䜡DŽ೒ 7.2 ሩ⼎њ PC ᑇৄⱘ‫ݙ‬ᄬ᯴ᇘDŽ೼䖭Ͼᑇৄⱘ䆒㕂
Ёˈ㋏㒳䮾ᄬⱘ໻ᇣᰃ 512K ᄫ㡖ⱘDŽЎњ䅽༨㝒 4 ໘⧚఼೼㋏㒳໡ԡৢপᕫⱘ㄀ϔᴵ᪡԰ⷕᴹ
㞾㋏㒳䮾ᄬϞˈ㋏㒳ⱘ䮾ᄬ㹿ᅝᥦࠄ 32 ԡഄഔぎ䯈ⱘⱘ᳔催ッDŽ㋏㒳໡ԡⱘԡ㕂ԡѢ 32 ԡഄ
ഔぎ䯈ⱘ᳔ৢⱘ 16 Ͼᄫ㡖䞠DŽ೼ SEC 䰊↉ˈ෎Ѣ Framework ⱘ᥻ࠊ⌕‫ܕ‬䆌 SEC ᭛ӊЁⱘ߱
ྟҷⷕϢᑇৄ೎ӊⳌ݇DŽᴹ㞾 SEC ⱘ݊Ҫ῵ഫᠡӮ㹿ᠻ㸠.

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೼⏅ܹ PC ೎ӊⱘ৘Ͼ㒘៤䚼ߚⱘࡴ䕑Пࠡˈ‫ܜ‬ಲ乒ϔϟ݊ҪϔѯᑇৄDŽ݊ЁࣙᣀԢࡳ㗫
IA32 ⱘ CPU ៪ Intel XScale ໘⧚఼ⱘ᮴㒓ϾҎ᭄ᄫࡽ⧚DŽ✊ৢ‫ݡ‬ᇚᑇৄᠽ໻ࠄ᳡ࡵ఼DŽབ೒ 7.3
᠔⼎DŽ

೒ 7.4 ᰒ⼎њϔϾᱎ㛑 I/O ᵓवˈेᄬ‫ࡴټ‬䗳఼ˈ䆹 I/O ᵓवᰃ䗮䖛ϔϾ PCI ᘏ㒓ᦦῑ䖲᥹


ࠄϔৄ᳡ࡵ఼ϞⱘDŽᔧ᳡ࡵ఼䞡ਃᯊˈ䆹 I/O ᵓवӮ⣀ゟ䞡ਃDŽ೼䖭ϾᵓवϞˈϔ乫⡍⅞ⱘ Intel
Xscale ໘⧚఼Ӯ䇗⫼ PEI ῵ഫ˄PEIMs˅੠ DXE 偅ࡼএ߱ྟ࣪ᴀഄ SCSI ᥻ࠊ఼੠ SDRAM 㒘
ӊDŽ✊ৢˈ䆹 I/O ᵓवৃҹᓩᇐࠄϔϾ EFI ⠜ᴀⱘጠܹᓣ᪡԰㋏㒳˅ˈབ BSD Unix ㄝˈгৃҹ
㒻㓁⫼ DXE 䚼ӊᴹ԰Ў I/O runtime ᴹᬃᣕ᳡ࡵ఼Џᴎⱘ CPU ໡ᴖⱘ䇏/‫ݭ‬䇋∖DŽ䖭ⓨ⼎њᗢḋ
䎼䍞བℸ໮ϡৠⱘᢧᠥ㒧ᵘⱘᑇৄ⧚ᗉDŽ䖭ѯᢧᠥ㒧ᵘࣙᣀ‫݌‬ൟⱘǃᓔᬒᓣ PC ੠᮴Ḍⱘˈᇕ䯁
ⱘጠܹᓣ㋏㒳 I/O ᵓवDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

⦄೼ˈ䅽៥Ӏ᳈䆺㒚ⱘ᥶䅼೒ 7.1 Ё⬉㛥ⱘ৘㒘ӊDŽ೼ϔϾ䞡ਃџӊˈ↨བϞ⬉໡ԡˈҢ


ӥ⳴૸䝦ㄝৢ䞡ਃ˄↨བᏺ⬉ⱘ䞡ਃˈӥ⳴ৢⱘᘶ໡ㄝㄝ˅ПৢˈPEI 䰊↉⿟ᑣӮ㹿ゟࠏᠻ㸠DŽ
Ⳉࠄ೼Џ䆄ᖚԧ˄བ‫ݙ‬ᄬ˅㹿߱ྟ࣪ৢˈPEI ῵ഫ䛑ᰃ೼䮾ᄬᄬ‫఼ټ‬Ϟ䖤㸠ⱘDŽ

೒ 7.5 ᰒ⼎њ෎Ѣ PC ᑇৄⱘ PEIMs ῵ഫ㒘DŽϡৠⱘଚϮ߽ⲞӮᦤկϡৠⱘ῵ഫDŽ՟བˈ


೼“Lakeport”ᑇৄϞˈ㣅⡍ᇨӮᦤկ 945 㢃⠛㒘˄೒ᔶ‫ݙ‬ᄬ᥻ࠊ఼Ёᖗ˅‫ݙ‬ᄬ᥻ࠊ఼
῵ഫ੠ ICH6˄I/O ᥻ࠊ఼Ёᖗ˅῵ഫDŽℸ໪ˈ䩜ᇍ䖲᥹ࠄ ICH ⱘ SMBus˄㋏㒳ㅵ⧚ᘏ㒓˅ˈᦤ
կњ෎Ѣ ICH ⱘ SMBus ῵ഫDŽ"Status code"῵ഫᦣ䗄њϔ⾡ৃҹ⫼ᴹ԰ЎᑇৄⳌ݇ⱘҷⷕⱘ
䇗䆩ᮍ⊩ˈᅗৃҹ⫼ᴹথ䗕䇗䆩ֵᙃˈབ৥ I/O ッষ 80H ϶ᄫ㡖ⱘҷⷕϔḋDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೼೒ 7.5 Ё᠔߫ⱘ⫼Ѣ ICH Ϟⱘ SMBus ῵ഫᰃϔϾᷛ‫ ޚ‬PEIM 㟇 PEIM ⱘ᥹ষ˄PPI˅ˈབ


೒ 7.6 ᠔⼎DŽ䖭ḋ‫ݙ‬ᄬ᥻ࠊ఼῵ഫህৃҹ⫼ SMBus 䇏ੑҸএᕫࠄᅲԧ‫ݙ‬ᄬⱘ DIMM˄ঠ߫Ⳉᦦ
‫ݙ‬ᄬ῵ഫ˅ⱘ SPD˄І㸠ᄬ೼Ẕ⌟˅᭄᥂ⱘֵᙃњDŽSPD ᭄᥂ࣙᣀ‫ݙ‬ᄬⱘ໻ᇣˈᯊ䯈ˈҹঞ᳝
݇‫ݙ‬ᄬ῵ഫⱘ݊Ҫ㒚㡖DŽ‫ݙ‬ᄬ߱ྟ࣪῵ഫৃҹՓ⫼ EFI_PEI_SMBUS_PPIˈ䖭ḋ GMCH Ⳍ݇ⱘ
‫ݙ‬ᄬ߱ྟ࣪῵ഫᑊϡ䳔㽕ⶹ䘧ᰃાϾ㒘ӊᦤկⱘ SMBus 䇏‫ࡳݭ‬㛑DŽџᅲϞˈ䆌໮䲚៤ⱘ Super
I/O˄SIO˅䚼ӊгӮᦤկϔϾ SMBus ᥻ࠊ఼DŽ೼䖭⾡ᑇৄϞህৃҹ⫼ SIO SMBus ῵ഫএপҷ
ICH SM SMBus ῵ഫˈ㗠ϡ䳔㽕᳈ᬍ‫ݙ‬ᄬ᥻ࠊ఼῵ഫDŽ

೒ 7.6 PEIM PPI ҷⷕ⠛↉

䰸њ៥ӀПࠡҟ㒡ⱘ EFI_PEI_SMBUS_PPI ໪ˈ䖬᳝䆌໮ৃ㛑ⱘᅲ⦄ᮍᓣDŽ೒ 7.7 ᰒ⼎њϔ


Ͼࠡ䗄ⱘ⫼Ѣᅲ⦄೼ ICH Ϟⱘ SMBus 䇏᪡԰ҷⷕ⠛↉DŽ⊼ᛣᅗՓ⫼ⱘᰃ CPU I/OˈҢ㗠ᴹᅲ⦄
ᇍ ICH 䚼ӊⱘ I/O ᪡԰ⱘᢑ䈵࣪DŽᅲ䰙Ϟ⫼ C 㓪‫ⱘݭ‬ҷⷕ䘏䕥ህᛣੇⴔা㽕䗮䖛ᇍⳂᷛᶊᵘⱘ
ㅔऩ∛㓪ህৃҹ೼㣅⡍ᇨ XScale ៪㗙 Itanium ⱘ㋏㒳Ϟ˄Փ⫼Ⳍৠⱘ ICH6˅Փ⫼Ⳍৠⱘ⑤ҷⷕDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೼ PEI 䰊↉ПৢˈDXE Ḍᖗ䳔㽕ϔ㋏߫ⱘᑇৄⳌ݇ⱘˈCPU ੠㢃⠛㒘⡍ᅮⱘ偅ࡼ


⿟ᑣˈҹᦤկϔϾᅠᭈⱘ DXE/EFI ᬃᣕ᳡ࡵDŽ೒ 7.8 㒭ߎᄺд PC ᑇৄᖙ乏ⱘ䚼ߚᶊᵘण䆂DŽ

џᅲϞˈDXE Foundation ᑊϡ⫼㗗㰥ӏԩϢᯊ䯈㓈ᣕ䘏䕥ˈЁᮁ᥻ࠊ఼ᣛҸ䲚ㄝⳌ݇ⱘ䯂


乬ˈ䖭ḋ DXE Foundation ⱘ C ҷⷕৃ⫼Ѣᕜ໮⾡㉏Ⳃᷛⱘᑇৄˈ㗠᮴乏ᬍব Foundation ҷⷕDŽ
ⳌডˈArchitectural Prorocols˄APs˅ⱘ৘ᓣ৘ḋⱘ䲚ড়Ӯᕅડ Foundation ッষDŽ

㋏㒳Ё䳔㽕㹿ᢑ䈵໘⧚ⱘϔϾᮍ䴶ⱘህᰃᯊ䯈ⱘㅵ⧚DŽ೼ PC/AT ‫ݐ‬ᆍ㢃⠛㒘Ϟⱘᯊ䯈㓈ᣕ


⹀ӊˈབ 8254 ᅮᯊ఼ˈϢᅝ㝒໘⧚఼ CPU 䲚៤ᅮᯊ఼䅵఼᭄៪㗙 Intel XScale ໘⧚఼Ϟⱘᯊ䯈
㓈ᣕ䘏䕥˄ITC˅ᰃϡৠⱘDŽ಴ℸˈЎњᅲ⦄ϔϾ⣀ゟⱘ DXE Foundation ⱘⳟ䮼⢫ᅮᯊ఼ⱘ䘏
䕥ˈ䆓䯂 CPU /㢃⠛㒘ⱘϞⱘ⡍⅞ᅮᯊ఼‫݋‬ԧᰃ䗮䖛 Timer Architectural Protocol ᴹᅲ⦄. ℸ AP

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᦤկϔ㋏߫ⱘ᳡ࡵˈབ㦋প੠䆒㕂㋏㒳ᯊ䯈DŽDŽ䆒㕂㋏㒳ᯊ䯈ᇚӮ೼៥Ӏⱘᑇৄᓩ⫼㉏Ёᴹࡴҹ
ᅵᶹDŽ

佪‫ˈܜ‬೒ 7.9 ᦤկњϔ༫෎Ѣ NT32 ᑇৄⱘᅮᯊ఼ⱘ᳡ࡵᅲ՟DŽNT32 ᰃϔϾᣛҸᠻ㸠


ህ䈵⫼᠋῵ᓣⱘ䖯⿟ϔḋⱘ 32 ԡ Microsoft Windows System 㰮ᢳⱘḚᶊᑇৄDŽ䖭ᰃϔϾ“䕃”ᑇ
ৄˈ䆹ᑇৄⱘࡳ㛑ᰃ䗮䖛ᢑ䈵 Win32 ᳡ࡵᴹᅲ⦄ⱘDŽ಴ℸˈ䖭Ͼ AP ⱘᅲ⦄ህϡ䳔㽕䆓䯂 I/O
᥻ࠊ఼៪㢃⠛㒘᥻ࠊ/⢊ᗕᆘᄬ఼DŽⳌডˈ䆹 AP 䇗⫼њ Win32 ᦤկϔ㋏߫ⱘⳌѦᥦ᭹੠᪡԰㋏
㒳㒓⿟ᴹ῵ᢳ䅵ᯊ఼ⱘ᳡ࡵDŽ

NT32 ⱘᅲ⦄Ϣϔৄ Framework ⱘ㻌ᴎᅲ⦄ᮍᓣᰃ៾✊ϡৠⱘDŽ೒ 7.10 㒭ߎњϔϾ⹀ӊᅲ


⦄ⱘᅲ՟DŽ݊Ё㣅⡍ᇨ XScale ㋏㒳㑻㢃⠛˄SOC˅‫ݙ‬ᄬ᯴ᇘᆘᄬ఼ᰃ䗮䖛ৠϔ AP 䆒㕂䅵ᯊ఼
᥹ষᴹ䆓䯂DŽDXE Foundation ᰃϡ㛑ऎߚ㰮ᢳ NT32 ᑇৄ᳡ࡵ੠㣅⡍ᇨ XScale ໘⧚Ϟⱘᅲ䰙⹀
ӊП䯈ⱘϡৠⱘDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

᳔ৢˈЎњᇍ PC/AT ㋏㒳ҹঞ 20 Ϫ㑾 80 ᑈҷЁᳳⱘ ISA I/O ⹀ӊᦤկᬃᣕˈ䳔㽕ϔϾ乱


໪ⱘ AP ᳡ࡵᴹᅲ⦄DŽ೒ 7.11 ೒ 7.11 ᰒ⼎њ䆓䯂 8254 䅵ᯊ఼ᯊⳌৠⱘ䆒㕂䅵ᯊ఼᳡ࡵˈৠᯊ⊼
‫ݠ‬ϔϾ 8259 ৃ㓪⿟Ёᮁ᥻ࠊ఼˄PIC˅ⱘЁᮁDŽ䖭⾡ᮍᓣ㹿⿄Ў PC/AT ⠜ⱘ APˈ಴ЎҢϾҎ
⬉㛥ҹᴹˈ᠔᳝ PC-Xt 䛑ᬃᣕ䖭ѯ⹀ӊ᥹ষDŽᇍѢ೼䖭ϔゴ᠔䆆 PCˈ݊ ISA I/O 䌘⑤ ICH 䚼ӊ
䛑᳝ᬃᣕˈ㗠ᇍѢ‫ ⱘࠡܜ‬PCˈҪӀ䛑᳝৘㞾⣀ゟⱘ‫ܗ‬ӊ㒭ќᬃᣕDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䰸њЎњᦤկᑓᑺᑇৄ⿏ỡ AP ⱘᅲ⦄໮ḋˈDXE 乱໪ⱘࡳ㛑ህᰃᬃᣕ৘㉏ⳂᷛᑇৄDŽ೼


EFI ЁˈϢᑇৄѦࡼᰃ䗮䖛᥻ࠊৄ䕧ܹ੠䕧ߎᴹᅲ⦄ⱘˈϔৄ PC ᥻ࠊৄⱘ䕧ܹ䆒໛ᰃ‫݌‬ൟⱘ
PS/2 ៪ USB 䬂Ⲭˈ䕧ߎ䆒໛ᰃϔϾ VGA ៪๲ᔎൟ㾚乥ᰒ⼎DŽϡ䖛ˈ៥ӀПࠡⷨお䖛 I/O वˈ
ᰃ≵᳝Ӵ㒳ᛣНϞⱘ“Ḍ”៪ᰒ⼎䆒໛DŽ䖭ѯ⡍⅞ⱘጠܹᓣᑇৄ㋏㒳Ёৃ㛑া᳝ϔϾㅔऩⱘІষDŽ
᳝䍷ⱘᰃˈৠϔৄ⬉㛥ⱘ⹀ӊ‫≵ݡ‬᳝Ӵ㒳ᰒ⼎఼гৃҹ䖤㸠ᑊϨ䗮䖛ϔϾㅔऩⱘІষϢ⫼᠋Ѧ
ࡼDŽ೒ 7.12 ᰒ⼎ϔϾ EFI ㋏㒳Ϟⱘ䗮䖛Іষᓎゟⱘ᥻ࠊৄⱘሖ⃵೒DŽ

Ўњᓎゟ䖭Ͼ᥻ࠊৄේˈBDS ៪ EFI shell 㒭⫼᠋ᦤկњϔϾᑨ⫼⿟ᑣ៪ੑҸ㸠⬠䴶˄CLI˅DŽ


ㅔऩⱘ䕧ܹ䕧ߎण䆂ᰃ䗮䖛ϔϾ෎ѢІ㸠 I/O ण䆂ⱘ᥻ࠊৄ偅ࡼ⿟ᑣথᏗⱘDŽDŽ䩜ᇍѢ෎Ѣ PCI
ⱘ⬉㛥ˈϔϾ PCI root bridge ण䆂‫ܕ‬䆌䆓䯂Іষⱘ᥻ࠊ੠⢊ᗕᆘᄬ఼;ᇍѢϔϾ‫ݙ‬䚼䲚៤ⱘ UART
/Іষⱘ㣅⡍ᇨ XScale ᑇৄˈৃ㛑ᄬ೼ⱘϔϾ໛⫼Ԣ㑻߿ⱘ⫼Ѣ䆓䯂䖭ѯⳌৠᆘᄬ఼ⱘण䆂ˈ

೼ℸᑇৄϞߚሖˈ೒ 7.13 Ё߫ߎⱘ㒘ӊˈᦣ䗄њᓎゟ䖭ϔ᥻ࠊৄේ᠔䳔㽕ⱘ DXE ੠ EFI


㒘ӊDŽℷབ೼ PEI ῵ഫϔḋˈϡৠⱘ߽Ⲟৃҹᦤկϡৠⱘ DXE ੠ EFI 偅ࡼ⿟ᑣDŽ՟བˈ䍙㑻
I/O կᑨଚৃ㛑ᦤկ ISA ACPI 偅ࡼ⿟ᑣˈ㢃⠛ॖଚᦤկⱘ PCI root bridge˄བ PC Ё㢃⠛㒘˅ˈ
ϔϾᑇৄ᥻ࠊৄˈঞϔ༫෎Ѣ PC/AT ೼ ISA ⹀ӊৃ䞡⫼ⱘ㒘ӊDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䰸њ᥻ࠊৄ㒘ӊˈ݊Ҫ޴Ͼ 3(, ῵ഫ੠ ';(㒘ӊг䳔㽕ࣙ೼ܹ ILUPZDUHYROXPH ЁDŽ೒


 Ϟ߫ߎњ䖭ѯ⫼Ѣᦤկ݊Ҫࡳ㛑ⱘ䚼ӊDŽࣙᣀϢ⡍ᅮᑇৄⳌ݇ⱘ (),ব䞣ⱘᄬ‫ˈټ‬ᑇৄᅝ
ܼᬓㄪˈ੠ᑇৄⱘ䜡㕂DŽ

(), ব䞣ৃҹᄬ‫ټ‬೼䮾ᄬⱘ৘Ͼഄᮍ˄៪᳡ࡵ఼ϞⱘϔϾ᳡ࡵ໘⧚఼Ё˅ˈ಴ℸˈ䳔㽕ϔϾ
偅ࡼ⿟ᑣᴹᢑ䈵࣪ব䞣ⱘᄬ‫ټ‬DŽߎѢᅝܼ㗗㰥ˈկᑨଚৃҹ㽕∖䖭ᮍ䴶ⱘ㒘ӊ᳈ᮄㅒ㕆៪῵ഫ
⌒䘷ЎϔϾৃֵᑇৄ῵ഫ˄730˅DŽᅝܼ偅ࡼ⿟ᑣᇚᢑ䈵࣪ⱘ䖭ѯᅝܼ㗗䞣DŽ

᳔ৢϔϾ⡍㡆ᰃᦣ䗄ᇍ⺕Ⲭᄤ㋏㒳ᬃᣕⱘ ';( 偅ࡼ⿟ᑣߚሖ䚼ӊˈे䲚៤䆒໛⬉ᄤ˄,'(˅


੠ (), ᭛ӊ㋏㒳DŽ⺕Ⲭᄤ㋏㒳ⱘण䆂ࠄ᭛ӊ㋏㒳ⱘᅲ՟㾕೒ DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ৠḋⱘˈ(),VKHOO៪ %'6ձ✊ԡѢ䆹ण䆂ߚሖⱘ乊䚼DŽㅔऩⱘ᭛ӊ㋏㒳˄)6˅ण䆂ⱘᅲ
՟ᦤկњᑨ⫼⿟ᑣ䇏‫ݭ‬ᓔਃ݇䯁᭛ӊⱘࡳ㛑DŽ)6 ण䆂ԡѢ⺕Ⲭ ,2 ण䆂ПϞDŽ⺕Ⲭ ,2 ᦤկ
ᄫ㡖㑻䆓䯂ҹ᠛䴶ऎඳЎᇐ৥ⱘഫ䆒໛DŽ಴ℸˈ⺕Ⲭ ,2 ᰃଃϔϔϾᦤկᇍ⹀ӊ⡍ᅮⱘഫ ,2
ᢑ䈵࣪᯴ᇘⱘ㒃䕃ӊ偅ࡼ఼ˈ⺕Ⲭ ,2 ሖ㒻ᡓњᕜ໮ⱘഫ ,2 ⱘᅲ՟DŽഫ ,2 ण䆂ᰃ⬅Ⳍ݇ഫ
䆒໛থᏗⱘˈབ ';( Ёᢑ䈵 ,&+ ЁⱘІ㸠䖲᥹˄6$7$˅⺕Ⲭ᥻ࠊ఼ⱘ ,&+ 偅ࡼ⿟ᑣDŽ⺕Ⲭ偅ࡼ
⿟ᑣՓ⫼њ 3&, ഫ ,2 ण䆂ᴹ䆓䯂 ,&+ 䚼ӊⱘ᥻ࠊ੠⢊ᗕᆘᄬ఼DŽ

⫼Ѣ䆹ᦤկ᭛ӊ㋏㒳ේ䖭ѯࡳ㛑ⱘ㒘ӊৃҹ೼೒  ЁⳟࠄDŽ᭛ӊ㋏㒳㒘៤䚼ߚࣙᣀ᭛ӊ


ߚ䜡㸼˄)$7˅ⱘ偅ࡼ⿟ᑣˈ੠ϔϾᦤկ )$7 ᬃᣕⱘ偅ࡼ఼DŽ

䱣ⴔᯊ䯈ⱘ᥼⿏ˈ⫼ѢᮽᳳⱘϾҎ⬉㛥Ϟⱘ 06'26 ⱘॳྟ᭛ӊ㋏㒳)$7 Ꮖ㒣㹿ᠽሩˈᅗ೼


 ԡ㋏㒳Ё᳔㒜ⓨব៤ :LQGRZV ⦃๗ⱘ )$7DŽℸ໪ˈᦤկϡৠⱘᗻ㛑䗝ᢽⱘᄬ‫ֵټ‬䘧ৃҹ
䗮䖛 ,'( ᥻ࠊ఼߱ྟ࣪㒘ӊᴹᢑ䈵࣪DŽҢ㗠ᦤկњϔϾ $3,ˈ䖭ḋϔϾᑇৄᅝ㺙䜡㕂⿟ᑣ៪䆞
ᮁህৃҹ䗮䖛ᅗᴹᅲ⦄ ,&+ ⱘ䆒㕂DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ⳍৠॳ⧚ⱘІষ᥻ࠊৄሖ⃵ᶊᵘ੠ 6$7$ ᥻ࠊ఼ⱘ᭛ӊ㋏㒳ሖ⃵ᶊᵘা㛑ᄬ೼ѢϔϾ᳝ 3&,


ᢑ䈵࣪ⱘˈ᳝ড়䗖ⱘ㒘ӊᬃᣕⱘ ,&+ 㒘ӊϞDŽ಴ℸˈ᳝Ⳍৠⱘ ,&+៪㗙Ϣ䆹㢃⠛Ⳍᔧⱘ䲚៤⠜
ᴀᬒࠄ঺ϔ⾡⡍ᅮᑨ⫼䲚៤⬉䏃˄$6,&˅Ϟˈᰃৃҹ䞡⫼݊Ҫ㋏㒳˄བ ,$ ⱘḠ䴶៪ ,$ ⱘ
᳡ࡵ఼˅ⳌৠⱘѠ䖯ࠊ᭛ӊⱘDŽ䰸њ ,$ ⱘᑇৄ㉏ϞⱘѠ䖯ࠊ䞡⫼໪ˈ& ҷⷕᴀ䑿гৃҹ䞡⫼DŽ
ᇍѢ ,&+ ⱘՓ⫼ˈ᮴䆎ᰃ᭛ᄫ䚼ߚ៪Ϟ䗄䲚៤೼ ,WDQLXP ໘⧚఼䘏䕥⬉䏃ˈ䛑ৃҹ䗮䖛೼ ,WDQLXP
໘⧚఼䞡ᮄ㓪䆥 & ҷⷕᴹ԰ЎⳂᷛⱘѠ䖯ࠊҷⷕDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀ܿゴ
ो᭛ӊ੠ऎഫ
6 ো˖Դ೼ᡒҔМ˛
2 ো˖៥Ӏᛇ㽕ֵᙃDŽ
6 ো˖Դ੠䇕ϔӭ˛
2 ো˖䖭Ͼϡ㛑䇈DŽ៥Ӏ䳔㽕⍜ᙃ……⍜ᙃ……⍜ᙃDŽ
6 ো˖ԴӀᡒϡࠄⱘDŽ
2 ো˖गᮍⱒ䅵ˈ៥ӀӮⱘ.
—Patrick McGoohan, The Prisoner

᭛ӊᰃ䅵ㅫᴎ䞠᳔෎ᴀⱘὖᗉПϔ䖭ᇍѢ໻໮᭄⫼᠋ᴹ䇈ᰃᄬ‫ټ‬೼ᄬ‫ټ‬ၦԧ ↨བ⹀Ⲭ
‫ Ⲭܝ‬Ϟⱘϔѯ᭄᥂ⱘ䲚ড়гᰃ໻䚼ߚ⿟ᑣਬ⧚㾷䅵ㅫᴎᎹ԰ॳ⧚ⱘϔϾ෎ᴀὖᗉDŽ᭛ӊᰃ
ᕜ෎ᴀⱘὖᗉ໻໮᭄⿟ᑣਬⳳⱘϡ⫼ᇍᅗ᳝໾໮ⱘ㗗㰥བᵰ⹂ᅲ䳔㽕㗗㰥ҪӀ㗗㰥ⱘᰃ᭛
ӊ߯ᓎ䇏‫ݭ‬੠ߴ䰸ҪӀⶹ䘧Դৃҹ೼᭛ӊЁᄬ‫ټ‬᭄᥂ϔ㠀ᴹ䇈ᰃ᭄᥂ⱘⶶ䞣ᑊϨ䖭ѯ᭄
᥂ᰃ䴲ᯧ༅ᗻⱘ

⫼᠋੠⿟ᑣਬгⶹ䘧᭛ӊᰃᄬ‫ټ‬೼⹀Ⲭ䕃Ⲭ8 Ⲭ៪㗙݊ᅗᄬ‫ټ‬ၦԧϞⱘDŽԚᰃ೎ӊ 䖭䞠
ⱘ೎ӊᣛ ELRV ⿟ᑣਬ䗮ᐌᕜᇥՓ⫼Ӵ㒳ⱘᄬ‫ټ‬䆒໛ᴹᄬ‫ټ‬ҪӀⱘ᭛ӊ੠᭄᥂DŽ಴ℸˈ೎ӊՓ⫼
Ӵ㒳ὖᗉⱘ᭛ӊᴹᄬ‫ټ‬ᰃ䴲ᐌᇥ㾕ⱘᚙᔶϡ䖛೼ IUDPHZRUNЁᡞ⿟ᑣ੠᭄᥂ᄬ‫ټ‬೼᭛ӊЁ
ᰃϔ⾡᳔෎ᴀⱘ㒧ᵘ䳔㽕⡍߿⊼ᛣⱘᰃ䖭䞠᠔䇈ⱘ᭛ӊঞ᭛ӊ㋏㒳ⱘՓ⫼ᰃϡৠѢ೼ (), ᶊ
ᵘЁ⫼ᴹㅵ⧚ᓩᇐߚऎⱘ᭛ӊঞ᭛ӊ㋏㒳ⱘDŽ

)UDPHZRUN ෎Ѣ᪡԰㋏㒳ⱘॳ߭ᅮНњᅗՓ⫼ⱘ᭛ӊⱘ෎ᴀᴎࠊԚⳂᷛ⦃๗䅽䖭ѯ᭛ӊ
੠Ӵ㒳᭛ӊⱘὖᗉজ᳝᠔ϡৠDŽ

ᴃ䇁˖

ⳟ䍋ᴹ䖭䞠ⱘ৘⾡৘ḋⱘᴃ䇁ህ੠᪡԰㋏㒳䞠ⱘᏂϡ໮ϟ䴶ⱘᴃ䇁Փ⫼೼ IUDPHZRUN
Ё䞡㽕ⱘᰃ㽕⊼ᛣᔧϟ䴶ⱘᴃ䇁Ϣ⦄೼Դ᠔Փ⫼ⱘ᪡԰㋏㒳Ёⱘᴃ䇁᳝ৃ㛑ⳌৠԚᅗӀ᠔
ᦣ䗄ⱘࡳ㛑໻໮ᰃϡⳌৠⱘ

೎ӊ䆒໛ )' ӏԩৃҹᄬ‫ټ‬೎ӊⱘ⠽⧚䆒໛៪䆒໛ⱘ䲚ড়DŽབᵰᰃ޴Ͼ䆒໛ⱘ䲚ড়ˈ䙷М


೼䖭䞠া㛑‫خ‬ЎऩϾ䆒໛ᴹՓ⫼DŽ

೎ӊो˄)9˅೼ऩϾ೎ӊ䆒໛Ϟߦߚߎⱘ䖲㓁ⱘϔϾ䚼ߚᑊḐᓣৢⱘो䖭䞠ᯢ⹂ⱘ⽕ℶ
ϔϾ )9 ᴹ㞾Ѣ໮Ͼⱘ )'˄㱑✊៥Ӏ䆄ᕫˈϔϾ )' ৃҹᴹ㞾Ѣ໮䆒໛˅DŽϡৠѢ໻໮᭄᪡԰㋏㒳ˈ
᠔᳝೼೎ӊ䆒໛Ёⱘ೎ӊो˄)9˅䛑ৃҹাऴ⫼ℸ೎ӊ䆒໛᳝ᬜぎ䯈Ёⱘϔ䚼ߚ)9V ೼ )' Ё
ⱘԡ㕂ৃҹ೼㓪䆥ⱘᯊ‫׭‬ᅮН✊ৢ⬅偅ࡼᴹᦣ䗄ʽᤶϔ⾡䇈⊩ˈᅗϡ䳔㽕೎ӊो˄)9˅ৃ㹿থ
⦄ⱘˈ䖭ԡ㕂ৃ㛑াᰃᦤࠡⶹ䘧ᑊ⬅݊ᅗ偅ࡼ฿‫ࠄܙ‬ℸ偅ࡼ⿟ᑣⱘේᷜЁDŽ↨བ೼ )9 䞠ⱘ偅
ࡼৃҹᦣ䗄঺໪ⱘ )9VDŽҢᅮНˈህᏆ㒣ⶹ䘧 )9 ᰃᓩᇐ৥䞣ⱘⳂᷛDŽⶹ䘧㞾Ꮕⱘᆊ೼ાྟ㒜ᰃ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᕜ䞡㽕ⱘˈ೼೎ӊЁᡒߎ )9V˄䗮ᐌᰃ⬅偅ࡼ៪㗙 3(,0 ᴹẔ⌟˅੠ᓎゟᇍ෎ᴀ᪡԰᠔䳔㽕ⱘ䖤


㸠⦃๗䛑ᰃᕜ䞡㽕ⱘDŽ

೎ӊ᭛ӊ )LOH ᄬ‫ټ‬೼೎ӊो䞠ᑊੑৡњⱘֵᙃⱘ䲚ড়DŽ䖭䞠ⱘ᭛ӊৡ೼ IUDPHZRUN 䞠


ᰃ *8,'V *8,' ᰃܼ⧗ଃϔᷛ䆚ヺˈᅗ㛑ֱ䆕᭛ӊৡⱘଃϔᗻ DŽ᭛ӊৡ˄*8,'V˅೼ϔϾ೎ӊो
˄)9˅䞠ᖙ乏ᰃଃϔⱘˈԚϡৠⱘ )9V 䞠ৃ㛑ࣙ৿Ⳍৠ᭛ӊৡⱘ᭛ӊDŽ಴ℸˈ䖭ህ䳔㽕៥Ӏখ
㗗ϔϾ᭛ӊᯊ㽕ҹ )9 ੠᭛ӊৡ䜡ᇍDŽ 䖭乍㾘ᅮϢ໻໮᭄᪡԰㋏㒳䞠ⱘ᭛ӊ㋏㒳㾘߭ᰃᕜⳌԐⱘDŽ
੠᪡԰㋏㒳ϔḋˈҹⳌৠৢ㓔ৡੑৡⱘ᭛ӊӮᦤկⳌৠⱘࡳ㛑˄՟བ7;7+˅ ˈԚᰃ೼ᕜ໮ᚙ
ᔶϟˈIUDPHZRUN Ё㽕∖᳈ࡴϹḐüВ՟ᴹ䇈ˈ';( 䇗ᑺ఼াӮ⌒䘷⡍ᅮ㉏ൟⱘ᭛ӊDŽ᭛ӊ೼ )9V
䞠া᳝ϔ㑻Ⳃᔩˈ䖭䞠ᰃϡӮ᳝ᄤⳂᔩᄬ೼ⱘDŽԚᰃˈ᭛ӊৃ㛑ࣙ৿ )9V ೼݊Ё䙷䍋ࠄ㉏Ԑⱘ
԰⫼DŽ䖭䗦ᔦᴎࠊгᦤկњϔϾ᳈ࡴㅔ⋕ⱘᮍ⊩ᴹѻ⫳ৃ㛑⬅໻䞣᭛ӊ㒘៤ⱘऩ‫ⱘܗ‬ᇕ㺙῵ഫDŽ
ᇍѢ᭛ӊⱘ䗮⫼᪡԰᳝˖Ẕ⌟˄೎ӊो˅)9 ҹ⹂ᅮ᭛ӊⱘ㉏ൟ੠ᠧᓔ᭛ӊˈ䇏প᭛ӊˈ݇䯁᭛
ӊㄝㅔऩⱘ᪡԰DŽ

ഫ˄VHFWLRQ˅˖ϔϾ᭛ӊⱘᄤऎඳDŽᅗᰃ᳝㉏ൟⱘԚ≵᳝ੑৡⱘDŽ䖭䞠᳝ϸ⾡㉏ൟⱘഫ˖ᆍ
఼ऎඳᖿ˄гি‫خ‬ᇕ㺙ऎඳᖿ˅੠৊ᔶऎඳഫ˅ DŽᆍ఼ࣙ৿঺໪ⱘऎඳഫ㗠৊㒧⚍ϡࣙ৿DŽ

ᆍ఼ऎඳഫᬃᣕ‫ڣ‬य़㓽੠ᅝܼㄝ⡍⅞⡍ᗻDŽ‫݌‬ൟⱘ᪡԰ࣙ৿ᠿᦣϔϾ᭛ӊⱘ⡍⅞㉏ൟⱘऎඳഫ
੠䇏প䖭ѯऎඳഫ

ϟ䴶ⱘ೒ᦣ䗄њ )9 ᳈㊒⹂ⱘሖ⃵DŽৠḋ៥Ӏгৃҹᡞᅗⳟ԰ϔϾ㡖⚍ᷥˈབ೒ ˄$˅᠔


⼎DŽ᳈໮ⱘ⫼᠋ᡞᅗᛇ‫ڣ‬Ў㒘ӊ೼ᆍ఼䞠䴶ⱘሖ⃵㒧ᵘԐТᰃ᳈Ⳉ㾖ⱘ៥Ӏ೼ৢ䴶ⱘゴ㡖Ёᇚ
Џ㽕ҹ䖭⾡ሖ⃵㒧ᵘᴹᦣ䗄ˈབ೒ ˄%˅DŽᴀゴ࠽ϟⱘ‫ݙ‬ᆍህᰃ䅼䆎ᅗӀⳌѦП䯈ⱘ԰⫼੠ᗢ
ḋএՓ⫼ˈ䆓䯂ˈᑊᅲ⦄DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

)9V ⱘሖ⃵㒧ᵘ



z 䆒䅵㑺ᴳ˖

೎ӊⱘᄬ‫ټ‬੠䆓䯂ᴎࠊᔎ⚜ফ೎ӊⱘՓ⫼੠೎ӊ᳝ৃ㛑㹿‫ټ‬ᄬⱘϔѯၦԧⱘᕅડDŽਃ
ࡼ৥䞣

ਃࡼ৥䞣ᣛ৥೎ӊ䆒໛ⱘϔϾ೎ᅮഄഔDŽ᭛ӊ㋏㒳ᖙ乏㛑ֱ䆕᳝ϔϾ᭛ӊ៪㗙݊ᅗ㒧ᵘ᭄᥂
೼ϔ೎ᅮഄഔҹ⹂ֱ㋏㒳乎߽ⱘᅠ៤ਃࡼ᳈໡ᴖⱘ໘⧚఼ϡӮՓ⫼Ӵ㒳ὖᗉⱘਃࡼ৥䞣Ԛ
ᰃҡ✊Ӯ⹂ֱ㟇ᇥ᳝ϔϾ៪㗙᳝ৃ㛑޴Ͼ೎ᅮऎඳ೼ਃࡼ೎ӊ䆒໛ ‫ ') ڣ‬Ё

᳝䍷ⱘᰃ೼䆒䅵੠ৢᴹⱘ㒣偠Ё䇗ᶹথ⦄ਃࡼ৥䞣ᰃଃϔ䳔㽕ⶹ䘧ⱘഄഔᔧ߱䆒䅵ⱘ
ᯊ‫ⱘ׭‬Ꮉ԰Ⳃᷛ‫ܕ‬䆌ӏᛣ᭄䞣ⱘ೎ᅮഄഔ᭛ӊ㹿䆕ᯢᰃϡᖙ㽕੠๲ࡴњ໡ᴖᑺ೼⡍⅞ⱘᚙ‫މ‬
ϟ䳔㽕ऩ⣀໘⧚

ᇍ唤

㱑✊ᕜᇥ㽕∖᭛ӊ೼ोЁⱘ⹂ߛԡ㕂ԚᰃᇍѢ᭄᥂೼᭛ӊЁⱘ⡍ᅮ䖍⬠ഄഔᮍ䴶⹂ᰃ᳝䴲
ᐌ໮ⱘ㽕∖↨བ᳝ѯ䅵ㅫᴎᶊᵘᖙ乏ҢϔϾ  ᄫ㡖䖍⬠ഄഔᓔྟ䖤㸠䖭ḋг㛑Փ᪡԰᳈ࡴ
᳝ᬜDŽ

ㅔऩⱘ䆓䯂

᭛ӊᖙ乏೼ 3(, ਼ᳳⱘᯊ‫׭‬ᡒࠄᑊ䇏পˈ೼䖭Ͼ਼ᳳা᳝᳝䰤ⱘ 5$0 ੠݊ᅗৃ⫼ⱘ䌘⑤ৃҹ


Փ⫼DŽ䖭ᛣᗱህᰃ䇈‫ݙ‬䚼᭛ӊⱘᄬ‫ټ‬Ḑᓣᖙ乏ㅔऩˈҹՓ 3(, 㛑ϡ⫼䗮䖛໡ᴖⱘ䖤ㅫ៪ᵘ䗴໡
ᴖⱘ᭄᥂㒧ᵘ㗠ᠿᦣࠄ᭛ӊDŽ

㔩㾕ⱘ‫ܹݭ‬

‫ܹݭ‬೎ӊ䆒໛ϡ໾‫ڣ‬ҪӀ೼᪡԰㋏㒳Ӵ㒳‫ˈܹݭ‬ᕔᕔᰃ᳈ࡴᄸゟⱘDŽ೼ (), Ёˈ໻໮᭄೼ᓔ


ᴎ੠䖤㸠ᯊ᠔䳔㽕‫ܹݭ‬᭄᥂Џ㽕ᰃব䞣DŽџᅲϞˈ‫ৢڣ‬䴶ᦣ䗄ⱘ䙷ḋˈ䖭ህ᳝‫⬅⧚ⱘߚܙ‬㗗㰥
ᄬ‫ټ‬ব䞣㗠ϡՓ⫼Ӵ㒳ὖᗉⱘ᭛ӊ㋏㒳DŽ

ҸҎ༈⮯ⱘ䮾ᄬ

䖭ѯᄬ‫ټ‬њ೎ӊⱘ䆒໛᳝ҪӀ⡍᳝ⱘ໡ᴖᗻ䆒㕂䍋߱ˈਃࡼ೎ӊᰃᄬ‫ټ‬೼া䇏ᄬ‫ټ‬㢃⠛
˄520˅䞠ⱘ䖭⾡ᄬ‫఼ټ‬ᰃϡৃ‫ˈⱘݭ‬ᑊϨ䗮ᐌᰃ≵᳝ߚऎⱘὖᗉDŽ

Ҟ໽ˈ໻໮ⱘ೎ӊ䛑Ꮖ㒣ᄬ‫ټ‬೼䮾ᄬ䆒໛䞠DŽ䖭⾡䆒໛ᰃৃҹ䱣ᴎ䇏পⱘˈԚᇍ‫ܹݭ‬᪡԰ৃ
㛑া㛑ҹϔϾऎഫЎऩԡᴹ‫ܹݭ‬DŽ䖭ḋⱘ䰤ࠊԐТ≵᳝ᇍ⹀Ⲭ偅ࡼ఼ⱘ㾘ᅮ᳈咏⚺ˈ⹀Ⲭা㛑
ҹ᠛ऎЎ᳔ᇣऩԡ‫ܹݭ‬DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ԛᰃϡᑌⱘᰃˈ↨䍋⹀ⲬЁ᠛ऎⱘ໻ᇣᴹ䇈ˈഫⱘ໻ᇣⳌᇍѢℸ㉏䆒໛ᴹ䇈䛑Ⳍᔧⱘ໻DŽ
↨བϔѯা᳝ .% ⱘᄬ‫ټ‬䚼ߚাߚЎ  ഫDŽ
˄ᣝ✻䖭ḋⱘ䘏䕥ˈ៥Ӏᛇ‫ڣ‬ϔϟㅵ⧚ϔϾ 0%
ⱘ䕃Ⲭা᳝  Ͼ᠛ऎ㗠ϡᰃ ˅DŽ‫݌‬ൟⱘᰃ 0% 㹿ߚЎ  ഫˈⳌᇍѢ䮾ᄬⱘ໻ᇣˈՓ⫼䖭
М໻ሎᇌⱘഫӮᇐ㟈ϡ㛑᳝ᬜ߽⫼䮾ᄬⱘ䯂乬DŽ⡍߿ᰃˈӴ㒳ⱘ᪡԰㋏㒳Փ⫼ᭈ᭄Ͼ᠛ऎᴹᄬ
‫ټ‬᭛ӊⱘᅲ䏉ᮍ⊩೼䖭䞠Ꮖ㒣বᕫϡߛᅲ䰙DŽ佪‫ˈܜ‬᭛ӊⱘ᭄䞣ফࠄഫⱘ᭄䞣ⱘ䰤ࠊˈ᳈䞡㽕
ⱘᰃᇍഫⱘϡᅠᭈՓ⫼㗠ᔶ៤ⱘ‫ݙ‬䚼⹢⠛ᇐ㟈䮾ᄬ߽⫼ᬜ⥛ԢϟDŽབ೒  ᠔⼎˖

‫ݙ‬䚼⹢⠛

⬅Ѣ䮾ᄬ↣ԡⱘ催៤ᴀ಴ℸՓ⫼䮾ᄬⱘᬜ⥛䯂乬ⱘय़࡯ৃ㛑㽕催Ѣ乘ᳳᆍ䞣↨䕗ᇣⱘ䮾ᄬ
㢃⠛ᰃⳂࠡৃ⫼ⱘᄬ‫఼ټ‬Ё៤ᴀ↨䕗催ⱘϔ⾡಴ℸ៥Ӏᑨ䆹哧ࢅՓ⫼ᮄⱘᡔᴃᴹ᳈᳝ᬜⱘՓ
⫼䮾ᄬᇍѢ᪡԰㋏㒳ⱘ᭛ӊ㋏㒳੠ IUDPHZRUN ⱘ᭛ӊ㋏㒳ˈг䆌᳔໻ⱘϡৠᰃ UDPHZRUN ⱘ᭛
ӊ㋏㒳೼᭛ӊ੠ഫП䯈㔎ᇥӏԩⱘᇍ唤DŽ

೼ (), ӫ໮ⱘᠻ㸠⦃๗Ёˈ偅ࡼ੠⿟ᑣ᭛ӊ᳈ৃ㛑໮ⱘᰃҢ䴲Ӵ㒳ⱘᄬ‫ټ‬䆒໛䇏পߎᴹⱘ
↨བᴹ㞾Ѣ㔥㒰⦃๗៪⹀ⲬϞⱘ䱤㮣ߚऎ䖭ѯ᭛ӊϡᰃ⬅៥Ӏ䖭䞠᠔䇈ⱘ೎ӊ᭛ӊण䆂ᴹㅵ
⧚ⱘ䖭гϡᰃ៥Ӏℸゴ᠔㽕䅼䆎ⱘ‫ݙ‬ᆍ

z %DQN6ZLWFKLQJ

䮾ᄬϡᘏᰃҹ㒓ᗻⱘᔶᓣߎ⦄೼‫ݙ‬ᄬЁˈᅗ䗮ᐌᰃ೼᳡ࡵ఼੠݊ᅗ㋏㒳ЁՓ⫼໻䞣ⱘ䮾ᄬ㢃
⠛Ёⱘ↨䕗ᇥⱘϔ䚼ߚᴹϢ㋏㒳‫ݙ‬ᄬП䯈䖯㸠ഫѸᤶབ೒  ᠔⼎䖭䞠Փ⫼ϔϾ ,2 ッষ ˄㾷
ⷕ䖛ⱘ˅ᴹ䗝ᢽ䮾ᄬЁⱘϔ义᯴ᇘࠄ㋏㒳‫ݙ‬ᄬぎ䯈ⱘϔϾにষDŽ䖭㽕ᛇ೼ӏԩഄᮍᠻ㸠ᰃϡ໾
ৃ㛑᠔ҹ 3(, ᢑ䈵ሖϡՓ⫼䖭⾡ᴎࠊDŽ ˄,WLVQRWHDVLO\SRVVLEOHWRH[HFXWHRXWRIDQ\
EXWWKHGHIDXOWEDQNLQEDQNVZLWFKHGSDUWVVR3(,DEVWUDFWLRQVGRQRWVXSSRUWWKLV˅
೼ˠ˴ˡ䞠ˈ䆒໛ᰃ೼㚠ৢ㹿ᢑ䈵ⱘ᯴ᇘࠄϔϾ⚍DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

z ᆍ䫭㛑࡯

བᵰᏆ㒣⹂ᅮ೎ӊⱘϔ䚼ߚᄬ೼䫭䇃ˈ㋏㒳ᇚ᮴⊩ਃࡼˈⳈࠄ䖭ᄬ೼䫭䇃ⱘ䮾ᄬ㢃⠛পϟᴹ
ᑊϨᤶϞᏆ㒣‫⿟ܹݭ‬ᑣ᭄᥂ⱘᮄⱘ䮾ᄬ㢃⠛DŽ䖭⾡ᴎ㛑ᰃ⬉㛥Ёӏԩ㒘ӊ䛑᮴⊩↨ᢳⱘDŽ

䫭䇃ᰃ㒣ᐌথ⫳ⱘџˈԚᰃˈ೼᳈ᮄ᭄᥂ⱘᯊ‫׭‬DŽᔧ )9 䳔㽕᳈ᮄˈ䖭䮾ᄬ㢃⠛˄៪㗙݊ᅗ


ৃᄬ‫ټ‬ၦԧ˅ᖙ乏‫ܜ‬᪺䰸ॳ‫ⱘܹݭܜ‬᭄᥂✊ৢ‫ܹݭݡ‬ᮄⱘ᭄᥂DŽབᵰ೼᪺䰸ⱘᯊ‫׭‬さ✊ᥝ⬉ˈ
㋏㒳ᇚ‫ݡ‬г᮴⊩ਃࡼDŽ䗮ᐌᚙ‫މ‬ϟ϶༅ )9 Ёⱘӏԩ᭄᥂䛑ᇚᇐ㟈㋏㒳᮴⊩ᓔᴎDŽ಴ℸা‫݋‬໛
᭛ӊ㑻ⱘᆍ䫭㛑࡯ᰃϡ໳ⱘो㑻ⱘᆍ䫭㛑࡯ᇚᰃᖙ䳔ⱘDŽ

ᔧ៥Ӏ᳝䖭ो㑻ᆍ䫭ⱘ㛑࡯ˈ៥Ӏ㟇ᇥ㛑䅽㋏㒳⬅໪䚼ⱘ䌘⑤Ң㟈ੑ䫭䇃Ёᘶ໡ˈ䗮ᐌᰃ೼
᳈ᮄ䮾ᄬⱘᯊ‫϶׭‬༅⬉⑤DŽ

䖭ᰃᆍ䫭᳈ᮄⱘㅫ⊩乎ᑣDŽ)9V ᳝ϸϾⳌৠ‫ݙ‬ᆍⱘࡃᴀˈᑊϨ‫ݡ‬䖭ϸϾࡃᴀП䯈ⳌѦ‫׭‬㸹DŽᅗ
ⱘॳ⧚ህᰃ‫ܜ‬᳈ᮄ≵᳝Փ⫼ⱘ䙷ϔञ䮾ᄬˈ✊ৢ‫ݡ‬᳈ᮄ঺໪ϔञDŽབ೒ 

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ⳍᇍㅔऩⱘ㾷‫އ‬ᮍḜᰃ⹂ᅮ᠔Փ⫼ⱘ㢃⠛㒘ˈ↨བLQWHOⱘ,&+ˈᅗᬃᣕϔϾ⡍ᗻህᰃ
723B6:$3DŽ㒣䗝ᢽˈഄഔⱘ㄀ԡഄഔ㒓೼㋏㒳‫ݙ‬ᄬⱘ催.%ᰃড৥ⱘDŽ8SRQVHOHFWLRQELW
RIWKHDGGUHVVOLQHWRWKHWRS.%RIPHPRU\LVLQYHUWHG7KLVKDVWKH
HIIHFWRIPDNLQJWKHWRS.%WKHQH[WORZHU.%DQGGHFRGLQJWKHQH[WWRWRS
.%DVWKHWRS.%DVVKRZQLQ)LJXUH

 

z 7R)LOHRU1RWWR)LOH

݊Ё᳔ϡ‫݌‬ൟⱘᬍবᰃӴ㒳ⱘ᪡԰㋏㒳ⱘ᭛ӊㅵ⧚ὖᗉᰃㅵ⧚᠔᳝ၦԧⱘぎ䯈㗠᮴䳔೼ो
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䞠䴶ㅵ⧚ʽ䖭ৠḋᰃ᳝⫼ⱘˈ՟བˈৠḋⱘ)'᭛ӊ㋏㒳ᬃᣕ(),ব䞣Ԛᰃᄬ‫ټ‬೼೎ӊोЁⱘব䞣
ϡϔᅮᬃᣕDŽ

䖭ᑊϡᰃ)9᭛ӊ㋏㒳ⱘᔅ⚍DŽ䖭ᰃᬙᛣ䖭ḋ䆒䅵ⱘDŽ៥Ӏ᮴⊩⫼ϔϾᴎࠊᴹ⒵䎇᠔᳝ⱘ䳔
∖ˈᅗᰃЎ໻໮᭄ৃ㛑ⱘ䳔∖㗠䆒䅵ⱘDŽব䞣ⱘሲᗻ䗮ᐌϢ)'䞠ⱘ໻໮᭄᭄᥂ᰃϡৠⱘ˖䖭䞠
ⱘ᭄᥂ᰃ䴲ᯧ༅ᗻⱘˈ᭄᥂‫ݭ‬᪡԰↨䕗乥㐕ˈ㗠Ϩ↣⃵‫ⱘܹݭ‬᭄᥂ⱘ᭄䞣䛑↨䕗ᇣ˄䗮ᐌা᳝
᭄ⱒⱘᄫ㡖˅
DŽ

Փ⫼䖭⾡᭛ӊ㋏㒳ᴹᬃᣕব䞣ᑊ䴲ϡ᮴ৃ㛑ˈ޴⃵៤ࡳⱘᅲ䏉䛑䆕ᯢ䖭ᰃৃ㸠ⱘDŽ ϡ
䖛䖭ᑊϡᰃᖙ䳔ⱘDŽ䖭ᰃ䅽㋏㒳䆒䅵ਬᴹ䗝ᢽℷ⹂ⱘ䗨ᕘҹ⒵䎇㋏㒳ⱘ䳔∖DŽ

ᅮН᭛ӊ㋏㒳Փ⫼䖭ϔऎඳᰃЎњḍ೎ӊोˈгህᰃ)9੠䅽݊ᅗⱘ೎ӊो೼3(,਼ᳳⱘᯊ
‫ৃ׭‬ҹ䆓䯂ࠄDŽ䖭ᰃ಴Ў3(,䇗ᑺ఼ᰃⳈ᥹䆓䯂᭛ӊⱘˈ಴ℸ䳔㽕ϔϾ㒳ϔⱘᄬ‫ټ‬ᏗሔDŽ

z ᭛ӊ㉏ൟ

೼)UDPHZRUNЁՓ⫼᭛ӊ㉏ൟϢ೼Ӵ㒳ⱘ᪡԰㋏㒳ЁՓ⫼᭛ӊ㉏ൟ䛑ᰃߎѢৠḋⱘॳ಴˖䛑
ᰃЎњऎ߿৘⾡৘ḋⱘᴖх᮴ᑣⱘ᭛ӊDŽ

ᇥ᭄᭛ӊᰃ)UDPHZRUN᠔⡍ֱ᳝⬭ⱘ㉏ൟDŽ↨བ3(,þ‫ݙ‬Ḍÿ
ˈ';(ࡴ䕑఼ˈ੠';(þ‫ݙ‬ḌÿDŽ
䖭䞠ᰃ⫼᭛ӊ㉏ൟᴹᣛߎ᭛ӊⱘৃᠻ㸠ᗻˈ3(,0V';(偅ࡼˈ੠(),ᑨ⫼⿟ᑣDŽ

བϞ᭛Ё᠔䗄ˈ೼)UDPHZRUNЁोᰃϡ‫ܕ‬䆌ᄤⳂᔩᄬ೼ⱘDŽⳌডⱘᰃˈ䖭‫ܕ‬䆌᭛ӊࣙ৿ोˈ
䖭Փᕫϔѯߚሖ⃵ⱘ᭛ӊ㋏㒳ϡᯢⱑ䖭⾡⡍ᗻDŽ䇋খ䯙ᴀゴĀ&DSVXOHVāᇣ㡖ⱘ՟ᄤDŽ

᭛ӊϡ⹂ᅮᅮНЎӏԩ㒧ᵘˈ᠔ҹৃ㛑᳝ϸ⾡㉏ൟ˖IUHHIRUP੠UDZDŽ)UHHIRUP᭛ӊᰃҹ
VHFWLRQЎ෎ᴀऩԡᄬ‫ˈⱘټ‬㗠UDZैᰃ䖲㓁ⱘѠ䖯ࠊ᭛ӊⱘ᭄᥂DŽՓ⫼䖭ϔ⾡៪ϸ⾡Ḑᓣᰃৃ
䅽⫼᠋ᅮНⱘDŽ

䖭೎ӊोण䆂*HW1H[W)LOH‫ܕ‬䆌䗮䖛ᠿᦣोᴹ⹂ᅮᶤѯ⡍ᅮ㉏ൟ᭛ӊ˄៪㗙ӏᛣ㉏ൟ˅DŽ

z 6HFWLRQ㉏ൟ

໻໮᭄IUDPHZRUN䞠ⱘ᭛ӊ䛑⬅VHFWLRQV㒘៤DŽ໻䞣VHFWLRQ㉏ൟᅮНⱘϡৠⱘ‫ܗ‬㋴ৃ㛑
Ꮖ㒣ᄬ‫ټ‬೼њ᭛ӊ䞠㉏ԐѢ*HW1H[W)LOH೎ӊोण䆂гᦤկњ*HW6HFWLRQVᴹᠿᦣVHFWLRQDŽ

6HFWLRQߚЎϸ㉏ˈᇕ㺙VHFWLRQ੠৊VHFWLRQDŽᇕ㺙VHFWLRQࣙ৿݊ᅗVHFWLRQˈ㗠৊VHFWLRQ
≵᳝DŽ

೼䆒䅵ⱘᯊ‫ˈ׭‬VHFWLRQⱘ䆒䅵ᰃ䴲ᐌㅔऩⱘDŽা䳔㽕ᅗⱘ㉏ൟ੠ᅗ೼ᄬ‫఼ټ‬Ёⱘ䭓ᑺˈ᳝
ⱘVHFWLRQ䖬᳝ᠽሩ༈ᷛDŽ
˄⡍߿ᰃՓ⫼*8,'V˅

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

᱂䗮ⱘᇕ㺙ഫⱘ VHFWLRQ ㉏ൟ

य़㓽ⱘो 9ROXPHV ੠᭛ӊ䛑ϡ㛑 㞾ᓎ䆂এᥝ Ⳉ᥹ᄬᬒ य़㓽 ೼ ))6 ЁˈԚৃҹᄬ‫ټ‬೼


य़㓽ഫ䞠䴶DŽᏆ㒣य़㓽ⱘ YOXPHV ೼ϔϾय़㓽ഫ ⱘ VHFWLRQ ЁDŽय़㓽ഫ ⱘ VHFWLRQ Ё ⱘ༈䚼
ᦣ䗄њᗢḋএᇏᡒᏆ᳝˄ϔϾ㹿ᅮН˅ⱘ㾷य़᭄᥂᥹ষⱘण䆂DŽᡞ⫼Ѣ ';( ⱘोᬒࠄϔ䍋ⱘϔ
⾡䗮⫼‫⊩خ‬ህᰃ⫼य़㓽ഫᇚᅗᇕ㺙䍋ᴹ˄ϔ⾡䗮⫼˄᱂䗮˅ⱘᮍ⊩ህᰃᡞ⫼Ѣ ';( ⱘोϢय़㓽
ⱘ VHFWLRQ ᬒࠄϔ䍋˅ˈ✊ৢ‫ټ‬ᄬ೼ϔϾो˄9ROXPH˅᭛ӊ䞠䴶DŽ঺໪ϔ⾡ഫ VHFWLRQ ᰃি
‫*خ‬8,'HGഫ VHFWLRQ ˈᅗ䗮ᐌӮ䗮䖛ᶤ⾡ण䆂Ϣ঺໪ⱘ VHFWLRQ 㘨ড়DŽ䖭Ͼ VHFWLRQⱘ༈䚼
ࣙ৿ϔϾ䇋∖ᯢ⹂ⱘ *8,'DŽᏺ᳝ᅮН᥹ষⱘण䆂˄ህ↨བϔϾ *8,'HGVHFWLRQᢑপⱘण䆂˅
੠ҹ䇋∖ᯢ⹂ⱘ *8,' ԰Ўৡᄫⱘ VHFWLRQˈᖙ乏㽕೼Փ⫼䖭Ͼ VHFWLRQ ПࠡህᅮНདDŽᔧ䖭Ͼ
Ⳍᑨⱘ *8,' ⱘ VHFWLRQ 㹿Փ⫼ᯊˈ䖭Ͼ᥹ষⱘण䆂ህӮ㹿䇗⫼DŽВϾ՟ᄤ˄೼ᅲ῵ᓣϟᠻ㸠˅ˈ
*8,'HGⱘ㉏ൟৃ㛑Ӯ䗮䖛‫ݙ‬䚼᭄ᄫㅒৡⱘᮍᓣএ⹂䅸 VHFWLRQVDŽ';(GLVSDWFKHUᇚӮ‫އ‬ᅮ೼
GLVSDWFK 䯳߫Ёⱘ੠䖭Ͼ *8,' Ⳍᑨⱘण䆂এᠻ㸠DŽ

य़㓽ⱘो੠᭛ӊ䛑ϡ㛑Ⳉ᥹ᄬᬒ೼ ))6 ЁˈԚৃҹᄬ‫ټ‬೼य़㓽ഫ䞠䴶DŽᏆ㒣य़㓽ⱘ YOXPHV


೼ϔϾय़㓽ഫЁDŽय़㓽ഫⱘ༈䚼ᦣ䗄њᗢḋএᇏᡒᏆ᳝ⱘ㾷य़᭄᥂᥹ষⱘण䆂DŽᡞ⫼Ѣ ';( ⱘ
ोᬒࠄϔ䍋ⱘϔ⾡䗮⫼‫⊩خ‬ህᰃ⫼य़㓽ഫᇚᅗᇕ㺙䍋ᴹˈ✊ৢ‫ټ‬ᄬ೼ϔϾो᭛ӊ䞠䴶DŽ

঺໪ϔ⾡ഫি‫*خ‬8,'HGഫˈᅗ䗮ᐌӮ䗮䖛ᶤ⾡ण䆂Ϣ঺໪ⱘ VHFWLRQ 㘨ড়DŽ䖭Ͼ VHFWLRQ


ⱘ༈䚼ࣙ৿ϔϾ⬅ᑨ⫼⹂ᅮⱘ *8,'DŽ೼䘛ࠄ䖭ϾഫПࠡˈᖙ乏㽕᳝ҹ䖭Ͼ *8,' ੑৡⱘण䆂˄՟
བ *8,'HG ഫᢑপण䆂˅ᄬ೼䖭ḋⱘण䆂‫݋‬᳝⹂ᅮⱘ᥹ষDŽᔧ䘛ࠄⳌᑨ *8,' ⱘഫⱘᯊ‫ˈ׭‬䖭Ͼ
ण䆂ህӮ㹿䇗⫼DŽВϾ՟ᄤ˄ᅲ䰙ϞᏆ㒣ᅲ⦄њ˅ˈ*8,'HGⱘ㉏ൟৃ㛑⫼Ѣ䗮䖛‫ݙ‬䚼᭄ᄫㅒৡ
ⱘᮍᓣᴹᇍഫ䖯㸠⹂䅸DŽ';(GLVSDWFKHU Ӯḍ᥂䖭Ͼ *8,' ᴹᶹᡒⳌ݇ⱘৃᠻ㸠⿟ᑣˈᇚ݊ᬒࠄ
䇗ᑺ䯳߫ᔧЁDŽ

᱂䗮ⱘ৊ᄤഫ㉏ൟ

᳔ৢ㒳䅵ˈᏆ㒣ᅮНњ䍙䖛  ⾡ OHDIVHFWLRQ ㉏ൟDŽᅗӀৃߚЎ޴㉏˖

Ƶϔ⾡৊ⱘ㉏ൟᰃЎњ↣ϔϾৃᬃᣕⱘᠻ㸠Ḑᓣ˖3(᯴‫ڣ‬ǃϢԡ㕂᮴݇ⱘҷⷕ˄3,&˅
᯴‫ˈڣ‬ҹঞㅔ⋕ⱘᠻ㸠˄7(˅DŽ3,&ҷⷕᰃϔ⾡ৃ䞡ᮄ䚼㕆ҷⷕˈ㛑೼ӏԩഄഔᠻ㸠˄ফᇍ唤
ⱘ䰤ࠊ˅DŽ䖬᳝ϔϾϧ⫼ⱘ VHFWLRQ㉏ൟᰃЎ‫ݐ‬ᆍ῵ഫ˄&60˅ⱘৃᠻ㸠⿟ᑣֱ⬭ⱘDŽ

Ƶৃᠻ㸠᭛ӊ㉏ൟгৃ㛑᳝ ';( ձ䌪ᗻ㸼䖒ҹঞ 3(, ձ䌪ᗻ㸼䖒ⱘഫDŽ

Ƶ㱑✊ϡᰃᖙ䳔ⱘˈЎњ᳈ࡴ⫼᠋টདᮍᓣⱘㅵ⧚ⱘ᭛ӊˈᅮНњϔ⾡⠜ᴀ੠᭛ӊৡഫDŽ

Ƶ೎ӊो᯴‫ڣ‬ᰃϔ⾡㛑໳ᡞोᄬ‫ټ‬೼᭛ӊЁⱘഫ㉏ൟ

Ƶ㞾⬅ᔶᗕⱘᄤ㉏ൟ*8,'HG੠㻌ⱘഫ੠᭛ӊЁⱘᛣНⳌৠDŽ

᭛ӊⱘ᪡԰

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䰸᭛ӊ໪੠ VHFWLRQᅮԡࡳ㛑Ꮖ㒣㹿䆎䗄П໪ˈ)LUPZDUHYROXPH ण䆂䖬ᦤկњᏠᳯ䗮䖛᭛


ӊ᥹ষᴹᕫࠄⱘ᳡ࡵ˖㦋ᕫሲᗻ˄䇏পϔϾोⱘᔧࠡ⢊ᗕ˅ˈ䆒㕂ሲᗻˈ䇏প᭛ӊˈҹঞ‫ݭ‬᭛
ӊDŽ↣ϔϾण䆂ⱘᅲ՟ᇍᑨϢϔϾ೎ӊोDŽᷛ‫ޚ‬ण䆂᳡ࡵৃҹ⫼Ѣᠿᦣ೎ӊोDŽ

ߚ⌒఼བԩ䆩⫼ोǃ᭛ӊ੠ഫ˛

';(ߚ⌒఼ⱘЏ㽕Ꮉ԰ᰃЎњᇏᡒ੠ߚ⌒偅ࡼDŽߚ⌒఼Փ⫼೎ӊ᭛ӊ෎⸔ᶊᵘᴹᅠ៤䖭ѯ
ࡼ԰DŽ䗮䖛䖭ḋ‫ˈخ‬ᅗᦤկњ݇ѢབԩՓ⫼ )9Vǃ᭛ӊ੠ഫⱘϔ⾡᳈໡ᴖⱘ՟ᄤDŽ㋏㒳ⶹ䘧ⱘ↣
ϔϾ )9 䛑ᰃ䗮䖛ϔϾण䆂ᴹ㸼䖒ⱘDŽ෎Ѣ䖭Ͼџᅲˈߚ⌒఼‫⬅׳‬ㄝᕙϔ⾡ᮄ⠜ᴀⱘण䆂˄䗮䖛
(),ⱘ 5HTXHVW3URWRFRO1RWLI\ ᳡ࡵ˅ᴹᇏᡒᮄोDŽ3(, 䰊↉Ёথ⦄ⱘोˈ䗮䖛 +2% Ӵ䗦㒭ߚ⌒
఼ⱘˈߚ⌒఼Ӯ೼߱ྟ࣪㞾䑿ⱘᯊ‫׭‬䖯㸠໘⧚DŽᔧߚ⌒఼ᕫࠄϔϾᮄोߎ⦄ⱘ䗮ⶹᯊˈᅗՓ⫼
)ULPZDUHYROXPHⱘण䆂ᴹᠿᦣ ';(偅ࡼ㉏ൟⱘ᭛ӊDŽᔧᅗᡒࠄњ䖭ѯ᭛ӊˈᅗህӮ᧰㋶ձ䌪
ᗻ݇㋏ഫDŽҪՓ⫼䖭ѯഫⱘֵᙃЎ䖭Ͼ偅ࡼ䆒ᅮϔϾߚ⌒乎ᑣDŽᔧߚ⌒఼‫އ‬ᅮߚ⌒ϔϾ偅ࡼᠻ
㸠ˈᅗҢձ䌪㸼䖒ᓣⳌ݇ⱘ䙷Ͼ᭛ӊЁ䇏প 3(&2))᯴‫ڣ‬ഫDŽ✊ৢߚ⌒䖭Ͼ偅ࡼᠻ㸠DŽ

‫ݙ‬䚼ⱘḐᓣ

㱑✊ )UDPHZRUN ⱘⳂⱘᰃᬃᣕᇚӏᛣ᭄䞣ⱘ᭛ӊ㋏㒳ˈᅗ೼ᓔᴎⱘᯊ‫׭‬ᖙ乏ձ䌪ѢϔϾⱘ
᭛ӊ㋏㒳ˈᠡৃ㛑ᡒࠄਞ䆝ᅗབԩ䆓䯂݊Ҫ᭛ӊ㋏㒳ⱘ῵ഫDŽ䖭ህᰃ᠔䇧ⱘ )UDPHZRUN ᭛ӊ㋏
㒳Ḑᓣˈгህᰃ ))6

෎ᴀḐᓣ

೎ӊो㹿ᅮНЎࣙ৿ϔѯ᭛ӊⱘϔѯ㒓ᗻ᭄᥂ഫDŽ᭛ӊ᳝ϔϾ༈ˈ᭄᥂ԧˈ੠ϔϾĀሒᏈāDŽ
೎ӊोҹ༈䚼೼᳔Ԣഄഔᓔྟˈ䖭Ͼ༈䚼ࣙ৿њϔϾ *8,'ǃो໻ᇣҹঞ݊ҪⳌ᭄݇᥂ⱘሲᗻDŽ
⬅Ѣोⱘ༈䚼ᓔྟѢ᳔Ԣⱘഄഔˈ᠔ҹ㛑໳ㅔऩ੠ᯢ⹂ഄᡒࠄᅗⱘԡ㕂DŽ

᭛ӊ೼ोЁҢो༈䚼㒧ᴳⱘԡ㕂ᓔྟ䖲㓁ഄᄬ‫ټ‬DŽ᭛ӊ༈ࣙ৿ৡᄫ˄*8,' ǃ໻ᇣǃ㉏ൟˈ
ሲᗻǃᅠᭈᗻ᷵偠੠⢊ᗕDŽ䖭Ͼ໻ᇣᣛⱘᰃ᭛ӊⱘ໻ᇣDŽ

᭛ӊ㋏㒳ᕫҹ䗮䖛ᅠᭈᗻ᷵偠ᴹ⹂䅸᭛ӊᰃ৺ߎ䫭DŽሲᗻ߭ࣙ৿䎳䖭Ͼ᭛ӊⳌ݇ⱘ৘⾡ᷛ
ᖫDŽ᳔䞡㽕ⱘᷛᖫᰃ᭛ӊⱘ᭄᥂䚼ߚⱘᇍ唤˄ϡᰃ᭛ӊ༈˅DŽ䖭ᅲ䰙Ϟᰒ⼎њ䰸њ༈ҹ໪䳔㽕
䏇䖛ⱘᄫ㡖᭄ˈ䖭Փᕫ᭄᥂ऎҹ䖍⬠ᓔྟᓔྟDŽᶤѯⳈ᥹᯴ᇘࠄ⹀ӊⱘ᭛ӊ䳔㽕䖭ḋⱘᮍᓣDŽ
Ёᇍ唤ᮍᓣ⎉ⲪњҢ  ᄫ㡖੠ . ᄫ㡖ⱘ໻䚼ߚ  ⱘᐖ⃵DŽ

⢊ᗕֵᙃᰃᇚ㹿⫼԰᳈ᮄ᪡԰ⱘϔ䚼ߚDŽ᳈ᮄ᪡԰ᴀ䋼Ϟᴹ䆆ህᰃߴ䰸੠‫ݭ‬᪡԰DŽ⢊ᗕֵ
ᙃⱘⳂⱘᰃֱ䆕䖭Ͼ䖛⿟ⱘॳᄤᗻDŽгህᰃˈ೼᳈ᮄЁⱘӏԩ⢊ᗕϟˈ㗕ⱘ᭛ӊ੠ᮄⱘ᭛ӊ᳝
Ϩা᳝ϔϾᰃ᳝ᬜⱘDŽℸᅲ⦄‫؛‬ᅮ೼ϡ᪺䰸ᭈϾऎഫⱘᚙ‫މ‬ϟˈၦԧ㛑໳䕏ᵒഄҢϔϾؐব៤
঺໪ⱘؐ˄བҢ  ࠄ ˅ˈᇍ⦄೼ⱘ‫ܗ‬ӊᴹ䇈ˈ䖭ᰃᇍⱘDŽ)' ᪺䰸ⱘ⢊ᗕ䗮ᐌ㹿䅸Ўᰃ )' ⱘᵕ
࣪DŽϔϾ )' ⱘᵕֵ࣪ᙃ㹿ᄬ‫ټ‬೼ᅗⱘ༈䚼DŽ

)9 ⱘㅵ⧚

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

᭛ӊ೼ोЁҢᑩ䚼˄᳔Ԣഄഔ໘˅ᓔྟˈ✊ৢϔϾϢϔϾ䖲᥹˄‫ܕ‬䆌ᇍ唤㗠ѻ⫳ぎ䱭˅ˈ
Ⳉࠄ乊䚼ⱘ᭛ӊDŽᮄⱘ᭛ӊӮ‫ࠄݭ‬Пࠡ߮‫ⱘܹݭ‬᭛ӊԡ㕂ПϞDŽߴ䰸᭛ӊˈϡӮゟࠏᓩ䍋Ϟ䴶
ⱘ᭛ӊԡ㕂থ⫳ҢϞࠄϟⱘবࡼDŽ᭛ӊӮᬍব༈䚼ⱘߴ䰸ᷛᖫԡüüҢ᪺䰸⢊ᗕবЎ䴲᪺䰸⢊
ᗕ˄䆥⊼˖‫ܹݭ‬᭛ӊᯊϡӮ‫ݭ‬᪺䰸ᷛᖫԡˈे䆹⢊ᗕԡ೼ⱘ߱ྟ⢊ᗕᰃ᪺䰸⢊ᗕˈ䗮ᐌ )ODVK
ⱘᶤϔԡ᪺䰸ᯊ䆹ԡಲࠄ ˈা᳝‫  ܹݭ‬ᯊᠡবЎ ˅DŽ

ᔧぎ䯈ϡ䎇㗠ϡ㛑ડᑨ‫ⱘݭ‬䇋∖ˈড়ᑊⱘ᪡԰֓Ӯѻ⫳DŽ䖭᳝⚍㉏ԐѢᮽᳳⱘ᭛ӊ㋏㒳
VYLQWDJH ˈ᳝ⴔㅔऩˈৃ乘ᳳⱘ໻ᇣ䰤ࠊˈԢऎഫो⥛ⱘ⡍⚍DŽ≵᳝ϔ⾡ऩϔⱘϧ䮼
ᮍᓣএড়ᑊ )9V೼䗝ᢽϔ⾡ᴎࠊⱘᯊ‫׭‬䆒䅵㗙ᖙ乏ᴗ㸵ৃ⫼䌘⑤ǃᆍ䫭㛑࡯㽕∖੠݊ᅗ಴㋴DŽ
ϔϾⳌᔧㅔऩⱘ῵ᓣህᰃᣋ䋱≵᳝ߴ䰸ⱘ᭛ӊࠄ‫ݙ‬ᄬⱘ㓧‫఼ކ‬ЁᓎゟϔϾᮄⱘ )9 ⱘ᯴‫ڣ‬DŽ᪺
䰸ॳ᳝ⱘ )9✊ৢ‫ܹݭ‬ᮄⱘ )9 ᯴‫ڣ‬䖭ϡᰃϔ⾡ᆍ䫭㾷‫އ‬ᮍḜˈԚᇍᕜ໮ᑨ⫼ᰃৃҹ᥹ফⱘDŽ঺
໪ϔ⾡ᴎࠊᰃֱᄬϸϾ೎ӊोˈҹĀЦЧāⱘᮍᓣᴹՓ⫼䖭ϸϾ໛ӑ䖭ᰃϔ⾡ᆍ䫭ⱘᮍᓣ
‫؛‬䆒೼ℸ⾡ᚙ‫މ‬ϟ偅ࡼⶹ䘧ાϾोᰃᮄⱘ˅ˈԚᰃ៤ᴀ໾催њDŽᓔথ㗙Ӏৃҹᛇߎᕜ໮⾡݊ᅗ
ⱘᮍḜᴹDŽ))6 ⢊ᗕⱘ᭄᥂ৃҹ⫼ᴹᅲ⦄ᅝܼⱘ᳈ᮄ៪㗙ࠋ‫ⱘݭ‬ᴎࠊDŽ

㋏㒳᭛ӊПϟ

ᬃᣕ᪡԰㋏㒳ⱘ᭛ӊ㋏㒳ⱘ偅ࡼ⿟ᑣ㛑໳ᇚᣝ✻ഫ䆒໛᯴ᇘ៤Ўⱘ᭛ӊⱘᮍᓣㅵ⧚DŽ䖭Ͼ
Ḛᶊ )UDPHZRUN гᰃϔḋⱘDŽ

偅ࡼⱘේᷜ

ϔϾ೎ӊोᰃ԰Ў೎ӊोण䆂˄)LUHZDUHYROXPHSURWRFRO˅ᴹᰒ⼎ⱘDŽӏԩ᭛ӊ㋏㒳䛑
ৃҹᰒ⼎䖭Ͼण䆂ˈҢ㗠߯ᓎϔϾᮄⱘ᭛ӊोDŽ

)UDPHZRUN))6ᅮНњϔ༫᥹ষˈᅗ‫ܕ‬䆌ᓎゟϔϾ偅ࡼේᷜˈབ೒ DŽՓᕫᰒ⼎᭛ӊोේ
ᷜⱘ偅ࡼ⿟ᑣϡ䳔㽕↣ϔϾ䛑䞡ᮄᅲ⦄DŽ

䖭Ͼᶊᵘ≵᳝ҢᅮНᴎࠊএথ⦄ϔϾᮄⱘ )'DŽⳌডˈ⹀ӊⳌ݇ⱘ ';( 偅ࡼ⿟ᑣ㓪‫ⱘݭ‬ᯊ‫׭‬


䳔㽕೼㓪‫ⱘݭ‬ᯊ‫׭‬ህⶹ䘧೎ӊ䆒໛ˈ៪㗙᳝ᶤ⾡ᴎࠊৃҹথ⦄ᅗDŽϔᮺ䆒໛㹿Ẕ⌟ߎˈ偅ࡼህ
ᖙ乏ᦤկϔϾ )LUPZDUH%ORFN3URWRFRO ⱘ᥹ষDŽ))6偅ࡼӮⲥ㾚䖭Ͼण䆂ⱘᓎゟDŽ䆹ण䆂ⱘ
߯ᓎӮ㾺থ ))6偅ࡼᓎゟϔϾ೎ӊोण䆂˄)LUHPZDUHYROXPH3URWRFRO˅DŽ䖭Ͼण䆂Ӭᚴ㾺থ
ߚ⌒఼˄'LVSDFWFKHUV˅˄3(, ੠ ';(˅ᇏᡒⳌᑨⱘ῵ഫএᠻ㸠DŽ೼ 3(, ੠ ';( Ёথ⦄ᮄ䆒໛䛑
ৃҹ䗮ⶹḚᶊ )UDPHZRUN DŽ3(,ⱘᮍᓣህㅔऩϔѯDŽ䆒໛ᰃ‫ݙ‬ᄬ᯴ᇘⱘˈᑊϨᰃা䇏ⱘDŽᇍ䖭
ḋⱘ䆒໛ˈ᥹ষা䳔㽕ᦤկ䖭Ͼ䆒໛ⱘ෎ഔഄഔDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೎ӊोⱘഫ᥹ষ

೼ᴀゴЁ)UDPHZRUN᥹ষᕜ㉏ԐѢ᪡԰㋏㒳ⱘ᥹ষˈ⡍߿ᰃ )9%᥹ষህ᳈᥹䖥Ѣ᪡԰㋏㒳
Ϟⱘߚऎˈাϡ䖛䖭䞠ᰃഫⱘὖᗉDŽ

)9% ᥹ষᅮНњ  Ё᥹ষ˖

Ƶሲᗻ˖*HW$WWULEXWHV੠ 6HW$WWULEXWHV ߑ᭄Ӯᇍ )9 ⱘࡃᴀᠻ㸠ⳌԐⱘࡼ԰DŽ᠔䇜ࠄ


ⱘሲᗻࣙᣀ䇏‫ֱݭ‬ᡸǃ䫕ᅮ੠ᇍ唤DŽ*HWEORFNVL]HӮ㦋ᕫोЁऎഫⱘ໻ᇣDŽབᵰᄬ೼ˈ
*HW3K\VLFDO$GGUHVV‫ܕ‬䆌偅ࡼএ㦋পोⱘ⠽⧚ഄഔDŽ

Ƶ,2᪡԰˖䆒໛䗮䖛䇏੠‫ݭ‬᪡԰䖭ḋⱘ෎ᴀࡳ㛑ᴹᅠ៤ҪӀⱘᎹ԰DŽ

Ƶ᪺䰸˖ড়ᑊ᪡԰ⱘϔϾ䚼ߚህᰃՓ⫼(UDVH%ORFNV᪺䰸ऎഫDŽ

ব䞣

(), ⱘ㾘㣗ᅮНњᇍব䞣ⱘᬃᣕˈ䖭ѯব䞣ⱘᄬপ੠ࡳ㛑ᕜ㉏ԐѢ 81,; ੠⦄೼ⱘ໻໮᭄᪡


԰㋏㒳Ёⱘ⦃๗ব䞣DŽ⦃๗ব䞣ᰃ 6+(// 㑻߿ⱘ᭄᥂᭄᥂ˈ⿟ᑣЏ㽕⫼ᅗᴹ䆒㕂㋏㒳੠ᑨ⫼⿟
ᑣⱘ咬䅸ؐDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

(), ⱘব䞣ҹ *8,' ੠81,&2'( ⱘᮍᓣੑৡˈᅗ䗮ᐌ⫼ᴹᄬ‫ټ‬ӏᛣ᭄䞣᭄᥂DŽ(),㾘㣗ᑊ≵


᳝ᅮНব䞣ᆍ䞣ⱘ໻ᇣDŽব䞣˄⊼ᛣ䖭Ͼ䎳 & 䖭ḋⱘ⿟ᑣ䆒䅵䇁㿔ⱘব䞣ϡৠ˅Ϣ೎ӊो˄)9˅
ⱘϡৠП໘೼Ѣ೎ӊो˄)9˅ᕜᇥ‫ˈݭ‬㗠ব䞣ै㽕㒣ᐌ㹿ড໡‫ܹݭ‬DŽ˄೼ᶤ⾡ᛣНϞᴹ䆆ˈ೼
⫼Ѣਃࡼ䅵᭄ⱘ䅵఼᭄ህ䗮ᐌ㹿ᅮНЎϔϾব䞣˅DŽ

བϞ᠔䗄ˈব䞣ⱘᅲ⦄ৃҹ䞛পϸ⾡෎ᴀᔶᓣDŽᄬ‫ټ‬೼ )9 ੠ϡ‫ټ‬ᄬ೼ )9 䞠DŽेՓব䞣ᄬ


‫ټ‬೼ )9V ⱘ‫ݙ‬䚼ˈ೼㋏㒳ㅵ⧚䖭Ͼ )9 ⱘᮍᓣৃ㛑ӮϢ݊Ҫⱘ )9V ᅠܼϡৠDŽᅗৃ㛑ϡ৿᳝㗠ӏ
ԩ᭛ӊˈ㗠Ϩ৥ )UDPHZRUN ໄ⿄ᅗᏆ㒣⒵њˈՓ⫼ )9 ⱘᴎࠊҙҙᰃЎњᅮԡ੠ㅵ⧚DŽ

ᄬ‫ټ‬ব䞣ⱘ )9 㛑໳ҹऎ߿Ϣ݊ᅗഫ %ORFN ϡৠⱘᮍᓣ䖯㸠໛ӑˈ಴Ў (), 㾘㣗Ё㽕∖ⱘ


ব䞣‫݋‬᳝ᆍ䫭㛑࡯ˈ㗠ᇍѢᑨ⫼⿟ᑣᅗᑨ䆹ᰃ䗣ᯢⱘDŽব䞣ⱘᅲ⦄ᮍᓣᖙ乏㛑໳ᬃᣕ޴Т᮴䰤
᭄䞣ⱘব䞣DŽ↨䕗ㅔऩⱘᮍᓣᰃՓ⫼ϔϾഫ⫼Ѣব䞣ⱘᄬ‫ټ‬㗠঺໪ϔϾ EORFN ⫼Ѣ໛ӑˈ䖭ߚ
Ўϸ⾡ᚙ‫މ‬DŽ㄀ϔ⾡ᚙ‫މ‬ᰃˈ Ͼഫ㹿Ѹ᳓ⱘᷛ䆄ЎĀ⌏ࡼā੠Ā໛ӑāEORFNDŽ঺໪ϔ⾡ᚙ‫މ‬
ᰃˈ೼᳈ᮄ᭄᥂ⱘᯊ‫ˈ׭‬া᳝ϔϾഫ㹿ᅮНЎĀ⌏ࡼāⱘˈ঺໪ϔϾ㹿ᅮНЎĀ໛ӑāⱘDŽབ
ᵰথ⦄ϔϾ⌏ࡼⱘഫℷ໘Ѣछ㑻ⱘ䖛⿟Ё˄䆥⊼˖䇈ᯢ䆹ഫछ㑻༅䋹њ˅ˈ䙷МህӮ໡ࠊ໛ӑ
ഫЁⱘ‫ݙ‬ᆍࠄ⌏ࡼ EORFN ЁDŽ

&DSVXOH

&DSVXOHᰃϔ⾡ᴎࠊˈ‫ܕ‬䆌᪡԰㋏㒳Ўϟ⃵ਃࡼᦤկ᭄᥂DŽᓔথ FDSVXOHV ⱘࡼᴎᰃЎњ߯


ᓎϔ⾡ᴎࠊ⫼ᴹࠋᮄ೎ӊˈԚᰃᶊᵘᴀ䑿䖬ϡ㛑⒵䎇䖭Ͼ䳔∖DŽџᅲϞˈ8(), ⱘ㾘㣗Ё䆒
ᛇՓ⫼ &DSXOVHVৃҹᡞҢ᪡԰㋏㒳Ӵ䗦ⱘ᭄᥂೼䞡ਃᳳ䯈䕀বЎ〇ᅮⱘ⠜ᴀˈ⫼ҹ㋏㒳ዽ⑗ⱘ
᡹ਞ੠ߚᵤDŽ㗠᪡԰㋏㒳䗮ᐌ䅸Ў᭄᥂೼䞡ਃ䰊↉ᰃϡ〇ᅮⱘDŽ

&DSVXOHV ⱘ㒧ᵘ

&DSVXOHV ⬅ϔϾ៪໮Ͼ༈੠೎ӊो㒘៤ˈা᳝೎ӊोӮখϢ䞡ᮄᓩᇐⱘ䖛⿟DŽ༈˄ᷛ䆄ԡ˅
ᰃ⫼Ѣ߯ᓎ䗮⫼ⱘ &DSVXOHV ໘⧚⿟ᑣDŽ಴ℸˈᅗࣙ৿᠔೼ FDSVXOH˄㛑໳㹿ӏᛣ᭄䞣ⱘ䇁㿔ᅮ
ԡ˅ⱘܹষ˄՟བ݇Ѣ‫ݙ‬ᆍⱘⷁ៪䭓ⱘ 81,&2'( ᦣ䗄˅੠ᴎࠊ‫ܕ‬䆌 FDSVXOH 㹿ߚࡆ៤໮Ͼഫৢ
㛑໳䞡㒘DŽ

䞡㽕ⱘϔ⚍ˈ೼Փ⫼໪᥹䆒໛ᯊˈ&DSVXOHV ࣙᣀϔϾᇍ䆒໛ᦣ䗄˄䆒໛ⱘᦣ䗄ϡࣙᣀ䏃ᕘ
ֵᙃ˅ⱘᦣ䗄DŽ䖭ᰃᕜ᳝ᖙ㽕ⱘˈৃҹ䅽ᓔথҎਬϡձ䴴ⶹ䘧೼䕑᳝䆹偅ࡼ⿟ᑣ RSWLRQ520
वᦦῑⱘԡ㕂䖯㸠᳈ᮄDŽ䆒໛ᦣ䗄ヺᷛ䆚њ䆒໛ˈ᳈ᮄ⿟ᑣৃҹ݇㘨ࠄϔϾ៪㗙໮Ͼ㋏㒳Ёℷ
㽕᳈ᮄⱘ䆒໛DŽ

छ㑻⿟ᑣ䗮䖛೼ FDSVXOHILUPZDUHYOXPH˄&)9 ҹᏆⶹḐᓣᄬ‫ⱘټ‬᭛ӊᴹ䋳䋷䆒໛ⱘ᳈ᮄDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䗮䖛䞡ਃӴ䗦

ϔᮺ࠹ᥝҪⱘ༈䚼ˈ&)9ᇚ㹿ᄬ‫ټ‬೼ϔϾϡৃѸᤶⱘ‫ݙ‬ᄬऎඳ˄Ўњֱ䆕೼䞡ਃⱘᯊ‫׭‬ᄬ
೼೼ 5$0 䞠˅ˈབ೒ ˄E 

ϡৃѸᤶⱘ‫ݙ‬ᄬऎඳ೼໻໮᭄᪡԰㋏㒳Ёᰃ⫼Ѣ⹀ӊⱘ '0$‫ݙ‬ᄬ↨བ㔥वˈ86% ᥻ࠊ఼ˈ


ҹঞ⹀Ⲭ䗖䜡఼DŽབᵰ㋏㒳䎇໳ৃ䴴ˈ೼䞡ਃⱘᯊ‫ৃ׭‬ҹϡ᪺䰸䖭Ͼ‫ݙ‬ᄬⱘऎඳⱘDŽ⬅Ѣৃ㛑
≵᳝䎇໳ⱘϡৃҹѸᤶⱘ䖲㓁‫ݙ‬ᄬぎ䯈⫼ᴹߚ䜡ˈFDSVXOHV ᅮНњϔ⾡ᴎࠊ⫼ᴹᄬ‫ټ‬䙷ѯ≵⫼
ぎ䯈ߚ䜡ϡ䖲㓁ⱘഫⱘ߫㸼DŽг᳝ৠḋⱘᴎࠊᴹϔ⃵Ӵ䗦ϔϾ៪㗙᳈໮ⱘ &DSVXOH ࠄ乘ਃࡼⱘ
ぎ䯈DŽ

)UDPHZRUNᅮНњϔϾ (),UHVHW ㉏ൟ⫼ѢӴ䗦 FDSVXOH᭄᥂㒧ᵘⱘ෎ഔ⠽⧚ഄഔˈ8(),


 ᅮНњϔ㋏߫ⱘ UXQWLPHVHUYLFHV ᴹㅵ⧚ FDSVXOHVˈ䖭ѯᮍ⊩ৠᯊᎹ԰জϡѦⳌᑆᡄDŽ

ᔧ UHVHW䇋∖ࠄᴹᯊˈᭈϾ㋏㒳ⱘ᥻ࠊҢ᪡԰㋏㒳ಲӴ㒭 (),ILUPZDUHDŽ᠔ҹˈ᪡԰㋏㒳
㽕䖤㸠ⱘ᪡԰ㄝৠϢ 6 ࠄ 6$&3, 䕀ᤶ᠔‫ⱘخ‬᪡԰˄䕃ਃࡼϡֱ⬭‫ݙ‬ᄬ᭄᥂˅DŽ⦄೼ ILUPZDUH
ᢹ᳝њᭈϾ㋏㒳DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᅗ㽕䗮䖛ϔϾ UHVHWֱᣕ FDSVXOH‫ݙ‬ᄬDŽԚᰃˈ


೼ϔϾ䴲ᐌ催ッ催ᬜⱘ㋏㒳Ёˈϡ䳔㽕IXOO
UHVHWDŽᅲ⦄ϔ㠀䳔㽕᪡԰㋏㒳ⱘড়԰ˈϡሲѢᴀк䅼䆎ⱘ㣗ೈDŽ

⫼Ѣѻ⫳ UHVHW ⱘᮍ⊩ϡᰃ㒧ᵘᗻⱘˈ೼ᬃᣕ $&3,6 ⢊ᗕⱘ㋏㒳Ё˄Āֱᄬ೼‫ݙ‬ᄬЁā˅ˈ


䖭ᰃϾᰒ㗠ᯧ㾕ⱘᮍ⊩ˈ⡍߿ⱘབᵰ᳝ϔϾ乘䆒૸䝦џӊⱘᴎࠊˈ䙷М UHVHW ᅲ䋼Ϟᰃⶀ䯈ᅠ
៤ⱘˈᅗᔧ✊ϡᰃଃϔⱘϔϾDŽ

⫼ѢӴ䗦 FDSVXOH᭄᥂㒧ᵘഄഔⱘᮍ⊩гϡᰃ DUFKLWHFWXUDO ⱘDŽ಴Ў )UDPHZRUNϔ㠀‫݋‬


᳝ᇍᅲᯊᯊ䩳&026 ⱘ䳔㽕ˈ䖭䞠ⱘ՟ᄤᰃ‫؛‬䆒ഄഔᄬ‫ټ‬೼䙷DŽ՟བˈϔϾᇣѢ [)) ⱘؐⱘᛣ
ᗱᰃᔧࠡ≵᳝ FDSVXOHˈᑊϨᅗ᳓ҷњࣙ৿⢊ᗕ᭄᥂ⱘؐDŽӏԩ݊Ҫⱘؐ㹿䅸ЎᰃϔϾഄഔDŽ঺
໪ˈ䖬᳝䆌໮݊ҪⱘᴎࠊDŽ

঺໪ⱘϔ⾡ᮍᓣⱘ䞡ਃ

‫؛‬䆒 6 ᴎࠊ㹿⫼ᴹ UHVHW ੠ FPRV Փ⫼ᴹ‫ټ‬ᄬ FDSVXOH ഄഔˈ䙷М UHERRW ᇚ㒻㓁ᠻ㸠Ⳉࠄ


‫ݙ‬ᄬЁⱘ᭄᥂㹿ᘶ໡ˈህད‫ڣ‬ℷᐌⱘ 6 ϔḋDŽབᵰഄഔؐᇣѢ [))ˈUHVHW 㹿ᔧ԰ᰃℷᐌⱘ 6DŽ

‫؛‬䆒ᡒࠄϔϾഄഔˈ㒧ᵘഄഔᰃ᳝ᬜⱘDŽབᵰᰃ᮴ᬜⱘˈ߭᡹ਞϔϾ⢊ᗕᑊϨϢ 6 ㄝᬜ
UHVHW ᓔྟњDŽ

ᅲ⦄ⱘ᳔໡ᴖ䚼ߚᰃ 3(, 䖛⿟DŽᅗᡞߚᬷⱘ໮Ͼ FDSVXOH 䞡㒘៤ᭈϾⱘϔഫDŽ佪‫ܜ‬㽕ᇏᡒ


ϔഫ䎇໳໻㗠≵᳝㹿ऴ᳝ⱘ‫ݙ‬ᄬˈFDSVXOH 㹿໡ࠊࠄ䖭ѯ㞾⬅‫ݙ‬ᄬЁDŽ ✊ৢ‫ݙ‬ᄬֱ⬭䖭ѯ FDSVXOH
ᑊϨ䗮䖛 +2% ᡹ਞ㒭 ';(DŽ

&DSVXOHILUPZDUHYROXPH ҙᄬ‫ټ‬೼‫ݙ‬ᄬЁˈ䆓䯂ᅗ䳔㽕ϔϾ )9%ORFN 偅ࡼ䖭Ͼ偅ࡼৃ


ҹ㒭 ))6 ᦤկ᥹ষᴹ߯ᓎ )9SURWRFRODŽᅗৠḋ䳔㽕DŽ

7KH&DSVXOHLQ';(

СϔⳟˈFDSVXOHV ‫ڣ‬ᰃϔ⾡᪡԰㋏㒳৥ SUHERRWVSDFH⊼ᇘ⮙↦ⱘᮍ⊩DŽབᵰϡᇣᖗˈ


џᅲህⳳⱘӮ䖭ḋˈILUPZDUHYROXPHሖ㑻㒧ᵘ੠)UDPHZRUN ⱘᅝܼሖ㑻ⱘϔѯ⡍ᗻৃ⫼Ѣ㾷
‫އ‬䖭Ͼ䯂乬ˈབ೒ ˄F˅᠔⼎DŽ

䋳䋷ㅵ⧚ FDSVXOHⱘ ';('ULYHUᡞ YROXPHᷛ䆄Ўϡৃ䴴ⱘˈ䖭ህᛣੇⴔ';(GLVSDWFKHU


ᇚϡӮҢᅗᠻ㸠DŽ೼ϔϾӬ⾔ⱘ䆒䅵ЁˈFDSVXOH ЁⱘϔϾ៪໮Ͼ᭛ӊ䛑ᰃϔϾ ILUPZDUHYROXPH
᭛ӊDŽ䖭ϾILUPZDUHZROXPH᭛ӊ㹿ϔϾ *8,'HGVHFWRQ ࣙ㺙䍋ᴹDŽ'ULYHU݀ᏗⳌᑨⱘ *8,'HG
VHFWLRQ ⱘᦤপण䆂ˈ✊ৢ偠䆕 YROXPH ⱘ‫ݙ‬ᆍDŽབᵰ᳝ᬜˈᅗᡞ᳈ᇣⱘ YROXPH ⱘሲᗻ䆒㕂Ўৃ
䴴ⱘˈ䖭ḋህৃҹ㒻㓁ᠻ㸠ϟএDŽ

ᔧ೼ᠻ㸠ⱘ䖛⿟ЁˈҪӀৃҹᡒࠄᴀ䑿㾷य़ⱘ䙷Ͼ⠊ोDŽ⠊ोᰃ &)9 ᴀ䑿ˈᑊϨࣙᣀϔѯ


᳈ᮄ⿟ᑣ‫ⱘܹݭ‬᭄᥂᭛ӊDŽ

೼া᭄᳝᥂ⱘ FDSVXOHV Ёᰃϡ䳔㽕偠䆕ⱘˈ՟བˈᔧ᪡԰㋏㒳㽕䖯㸠ϟϔ⃵ UHERRW ᯊDŽ


಴Ўা᭄᳝᥂ⱘ FDSVXOHV≵᳝ᠻ㸠ҷⷕDŽҪӀা㛑㤝㤝‫خ‬៤ FKDLQDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

᳝䍷ⱘᰃˈ೼ IUDPHZRUN ਃ⫼ FDSVXOH া䳔㽕ⳌᔧᇥⱘҷⷕDŽ䖭Ͼᅲ⦄ࣙᣀ԰䳔㽕ࣙᣀϔ


ᇣ↉ⱘ䞡ਃ⿟ᑣঞ೼ 6 ⢊ᗕϟⱘ⡍⅞໘⧚ǃ&DSVXOH 䖲᥹ҷⷕˈЎ &DSVXOH ᵘ䗴 )9% ण䆂ⱘ偅
ࡼDŽ⹂䅸ⱘҷⷕᅠ៤䖭Ͼ䇋∖DŽ᠔᳝ⱘ䖭ѯᎹ԰䛑⬅ ILUPZDUHYROXPH ⱘ᳡ࡵᴹᅠ៤ˈህ‫ڣ‬ᇍ
ᕙ‫ݙ‬䚼ⱘ YROXPH ϔḋDŽ

㒣偠㸼ᯢЎ  ԡⱘLQWHO3HQWLXP᠔㓪䆥ⱘᰃ໻㑺 . ໻ᇣ˄᳾य़㓽䖛˅DŽ䖭ᰃ಴Ўᅲ


Ϟ᳈ᮄⱘҷⷕৃҹ䖯ܹࠄ &DSVXOH ⱘ‫ݙ‬䚼㗠ϡᰃֱᄬ೼ )/$6+ 䞠䴶DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀бゴ
';( ෎⸔˖෎⸔Ḛᶊǃ
䇗ᑺ఼੠䆒໛偅ࡼ
៥ϡᆇᗩ䅵ㅫᴎˈ៥ᆇᗩⱘᰃབᵰ≵᳝њ䅵ㅫᴎDŽ
üü㡒㧼‫ܟ‬.䰓㽓㥿໿

ᴀゴᦣ䗄њ䆒໛偅ࡼᠻ㸠⦃๗(DXE, Driver Execution Environment)ⱘ㒧ᵘˈҹঞ೼ᑇৄ


߱ྟ࣪䖛⿟Ёᅗᰃབԩ䖤㸠ⱘDŽ ℸ໪ˈᴀゴ䖬䆺㒚ᦣ䗄њᑩሖ㒘ӊⱘᎹ԰ᴎࠊˈҹঞ᭄᥂೼㋏
㒳ਃࡼ䖛⿟Ёⱘϡৠ䰊↉ᰃ㹿བԩӴ䗦ⱘDŽᑩሖ㒘ӊⱘᎹ԰ᴎࠊⱘᦣ䗄䖬䆺㒚ᦤկњਃࡼᣛҸ
ⱘ‫ݙ‬䚼㒧ᵘˈ಴ЎᅗϢӴ㒳BIOSЁⱘPOST table᳝ᕜ໻ⱘϡৠDŽ
DXE䰊↉ᰃձ᥂EFI 1.1 ᷛ‫ޚ‬ЁⱘᅮНᅲ⦄ⱘDŽ಴ℸˈDXEⱘ෎⸔ᶊᵘ੠DXEⱘ䆒໛偅ࡼ೼
EFI᯴‫ڣ‬ሲᗻᮍ䴶᳝ᕜ໮݅ৠП໘DŽ໻໮᭄ⱘ㋏㒳߱ྟ࣪䛑೼DXE䰊↉ᠻ㸠ⱘDŽPEI䰊↉߭ᰃ䋳䋷
߱ྟ࣪⠽⧚‫ݙ‬ᄬҹկDXE䰊↉ҷⷕⱘࡴ䕑੠ᠻ㸠DŽ೼PEI䰊↉㒧ᴳᯊˈ㋏㒳⢊ᗕֵᙃᰃ䗮䖛HOBs
㹿Ӵ䗦ࠄDXE䰊↉ⱘˈHOBs(Hand-Off Blocks)ᰃϔϾᄬ‫㋏ټ‬㒳ֵᙃⱘ᭄᥂㒧ᵘˈᅗ೼‫ݙ‬ᄬЁ
ⱘԡ㕂ϡᰃ೎ᅮⱘDŽDXE䰊↉ࣙᣀϔϟ޴Ͼ䚼ߚ˖
ƵDXE෎⸔Ḛᶊ
ƵDXE䇗ᑺ఼
ƵDXE䆒໛偅ࡼ
DXE෎⸔Ḛᶊ߯ᓎњϔ㋏߫ⱘਃࡼ᳡ࡵǃ䖤㸠ᯊ᳡ࡵ੠DXE᳡ࡵDŽDXE䇗ᑺ఼䋳䋷থ⦄ᑊᣝ
✻ℷ⹂ⱘ乎ᑣᠻ㸠DXEⱘ䆒໛偅ࡼDŽDXE䆒໛偅ࡼࣙᣀ߱ྟ࣪໘⧚఼ǃ㢃⠛㒘ǃҹঞᑇৄ㒘ӊˈ
⫮㟇ࣙᣀկ᥻ࠊৄ੠ਃࡼ᳡ࡵՓ⫼ⱘᢑ䈵ߎᴹⱘ䕃ӊDŽ᠔᳝䖭ѯ䚼ߚ݅ৠण԰ᅠ៤ᑇৄⱘ߱ྟ
࣪ᑊᦤկOSਃࡼ᠔䳔ⱘ৘⾡᳡ࡵDŽDXE੠BDS(Boot Device Selection)䰊↉ϔ䍋ᓎゟϔϾৃկ
᪡԰㋏㒳ਃࡼⱘᑇৄDŽDXE䰊↉ϔⳈᣕ㓁ࠄOS៤ࡳᓔྟਃࡼüüгህᰃ䇈ˈⳈࠄBDS䰊↉ᓔྟDŽ
া᳝೼DXE෎⸔Ḛᶊ៪DXE偅ࡼ䚼ߚЁ߯ᓎⱘ䖤㸠ᯊ᳡ࡵᠡϡӮ㹿‫ذ‬ℶˈᅗӀ᳔ৢ㹿ֱᄬ೼OS
䖤㸠ᯊ⦃๗ЁDŽ
೒9.1ᰒ⼎њϔϾFrameworkⱘ೎ӊᑇৄ೼‫ދ‬ਃࡼ䖛⿟᠔㒣ग़ⱘ৘Ͼ䰊↉DŽᴀゴࣙᣀҹϟ‫ݙ‬
ᆍ˖
ƵPEI䰊↉ࠄDXE䰊↉ⱘ䖛⏵
ƵDXE䰊↉
ƵDXE䰊↉੠BDS䰊↉ⱘण԰

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 9 1 Framework Firmware Phases

';( ෎⸔Ḛᶊ

DXE ෎⸔Ḛᶊ‫݋‬᳝ৃ⿏ỡⱘ⡍⚍ˈᅗϡձ䌪Ѣ⡍ᅮⱘ໘⧚఼ǃ㢃⠛㒘៪㗙ऩϾᑇৄDŽᅗ‫݋‬
᳝ҹϟ⡍ᕕ˖
ƵDXE ⱘ෎⸔Ḛᶊⱘ߱ྟ࣪ҙҙձ䌪Ѣ HOB 䫒㸼ˈ䖭⾡ㅔऩⱘձ䌪݇㋏ᛣੇⴔᅗϡӮ䇗⫼
ӏԩҹࠡⱘ䰊↉Ё߯ᓎⱘ᳡ࡵˈ಴ℸϔᮺ HOB 䫒㸼㹿Ӵ䗦㒭 DXEˈПࠡⱘ᠔᳝䰊↉Ёⱘ᭄᥂੠
᳡ࡵ䛑Ӯ㹿䞞ᬒDŽ
ƵDXE 䰊↉ϡՓ⫼⹀㓪ⷕⱘഄഔぎ䯈DŽ಴ℸ DXE ⱘ෎⸔Ḛᶊৃҹ೼⠽⧚‫ݙ‬ᄬⱘӏԩԡ㕂㹿
ࡴ䕑ˈ㗠Ϩ᮴䆎೼‫ݙ‬ᄬⱘӏԩഄᮍˈ᮴䆎೎ӊो˄firmware volume˅ԡѢ໘⧚఼ⱘӏԩഄഔ
ぎ䯈ˈDXE ⱘҷⷕ䛑㛑㹿ℷ⹂ᠻ㸠DŽ
ƵDXE ⱘ෎⸔Ḛᶊϡࣙᣀӏԩ⡍ᅮ໘⧚఼ǃ⡍ᅮ㢃⠛㒘ǃ⡍ᅮᑇৄⱘֵᙃDŽ಴ЎˈDXE ⱘ
෎⸔ḚᶊᰃҢ㋏㒳⹀ӊᢑ䈵ߎᴹˈ䗮䖛ϔ㋏߫ protocol ᥹ষᶊᵘᅲ⦄ⱘDŽ䖭ѯ protocol ᥹ষ
⬅ϔ㋏߫ DXE 䆒໛偅ࡼ߯ᓎߎᴹⱘˈ䖭ѯ偅ࡼ᥹ষӮ㹿 DXE 䇗ᑺ఼䇗⫼DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 9 2 Early Initialization Illustrating a Handoff between PEI and DXE

DXEⱘ෎⸔Ḛᶊ߯ᓎEFI㋏㒳㸼ҹঞϔ㋏߫ⱘEFIਃࡼ᳡ࡵ੠EFI䖤㸠ᯊ᳡ࡵDŽDXE෎⸔Ḛᶊг
ࣙᣀњDXE䇗ᑺ఼ˈ䇗ᑺ఼ⱘЏ㽕԰⫼ᰃথ⦄ᑊᠻ㸠ᄬ‫ټ‬೼೎ӊो(firmware volume)ЁⱘDXE
䆒໛偅ࡼDŽDXE䆒໛偅ࡼⱘᠻ㸠乎ᑣপ‫އ‬Ѣϔ㒘ৃ䜡㕂ⱘձ䌪݇㋏ᦣ䗄᭛ӊ˄খ㗗DXE䇗ᑺ఼
ϔ㡖˅ҹঞ偅ࡼЁⱘձ䌪ẔᶹDŽ೎ӊो᭛ӊḐᓣ‫ܕ‬䆌ձ䌪㸼䖒ᓣ䱣ৠৃᠻ㸠ⱘDXE偅ࡼ᯴‫ڣ‬ϔ
䍋㹿ᠧࣙDŽDXE偅ࡼ⊓⫼PE/COFF᯴‫ڣ‬Ḑᓣˈ಴ℸˈDXE䇗ᑺ఼гᖙ乏ࣙᣀPE/COFFḐᓣ㾷䞞
఼⫼ᴹࡴ䕑ᑊᠻ㸠DXE偅ࡼDŽ
DXEḚᶊ㒧ᵘгᖙ乏ㅵ⧚ϔϾহᶘ᭄᥂ᑧDŽহᶘ᭄᥂ᑧᰃϔϾ៪໮Ͼহᶘⱘ߫㸼ˈৠᯊˈ
হᶘᰃϔϾ៪໮Ͼprotocol GUIDsˈ䖭Ͼprotocol GUIDs䛑ᰃ⣀ϔ᮴ѠⱘDŽϔϾহᶘᰃϔ㋏߫
᳡ࡵⱘ䕃ӊᢑ䈵DŽϔѯহᶘᴹ㞾I/O䆒໛ˈ݊Ҫⱘᢑ䈵㞾ϔ㋏߫ⱘ䗮⫼ⱘ㋏㒳᳡ࡵDŽϔϾ‫݌‬ൟⱘ
হᶘࣙᣀϔ㋏߫APIs੠ϔѯ᭄᥂↉DŽ↣Ͼprotocol䛑⫼ϔϾGUIDᴹᷛ䆚DŽDXEḚᶊ㒧ᵘᦤկњ
ϔѯ᳡ࡵ⫼ᴹ৥হᶘ᭄᥂ᑧЁ⊼‫ݠ‬protocolDŽ಴ЎDXE䇗ᑺ఼Ӯᠻ㸠DXE䆒໛偅ࡼˈϔѯࣙᣀ
ᑇৄ⡍ᗻֵᙃⱘprotocolৃҹ㹿⏏ࡴ䖯হᶘ᭄᥂ᑧˈᑊ᳔㒜ৠDXE Architectural Protocolsϔ
䍋㹿DXE䇗ᑺ఼䇗⫼DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Hand-Off Block(HOB) 䫒㸼

HOB 䫒㸼Ёࣙᣀњ৘⾡ֵᙃˈ䖭ѯֵᙃ㹿 DXE Ḛᶊ㒧ᵘ⫼Ѣ߯ᓎ෎Ѣᄬ‫ⱘ఼ټ‬᳡ࡵDŽHOB


䫒㸼Ёࣙᣀਃࡼ῵ᓣֵᙃˈ໘⧚఼ᣛҸ䲚ˈҹঞ೼ PEI 䰊↉থ⦄ⱘ㋏㒳‫ݙ‬ᄬDŽৠᯊᅗгࣙᣀњ
೼ PEI 䰊↉߱ྟ࣪ⱘ㋏㒳ֵᙃᦣ䗄ˈҹঞ PEI 䰊↉থ⦄ⱘ೎ӊ䆒໛ֵᙃDŽ೎ӊ䆒໛ֵᙃࣙᣀњ㋏
㒳‫ݙ‬ᄬ೼೎ӊ䆒໛੠೎ӊोЁⱘԡ㕂DŽ೎ӊोࣙᣀ DXE 䆒໛偅ࡼ੠ DXE 䇗ᑺ఼ˈ䇗ᑺ఼䋳䋷
ࡴ䕑ᑊᠻ㸠 DXE 䆒໛偅ࡼˈ䖭ѯ䆒໛偅ࡼ䛑㹿ᄬ‫ټ‬೼೎ӊोЁDŽ᳔ৢˈHOB 䫒㸼䖬ࣙᣀњ PEI
䰊↉ᡒࠄⱘ IO 䌘⑤੠‫ݙ‬ᄬ᯴ᇘ IO 䌘⑤DŽ
೒9.3ᰃϔϾHOB䫒㸼ⱘ՟ᄤDŽHOB䫒㸼ⱘ༈㡖⚍ᘏᰃϔϾPHIT HOB(Phase Handoff
Information Table)ˈPHIT HOBᄬ‫ⴔټ‬ਃࡼ῵ᓣֵᙃDŽ࠽ϟⱘHOB㡖⚍ⱘ乎ᑣϡᰃ೎ᅮⱘDŽҢ
⼎՟ৃҹⳟߎˈ৘⾡ϡৠ㉏߿ⱘ㋏㒳䌘⑤䛑೼ৠϔϾHOB䫒㸼Ёᦣ䗄ߎᴹDŽᇍѢDXEḚᶊ㒧ᵘ
ᴹ䇈ˈHOB䫒㸼Ё᳔䞡㽕ⱘ䚼ߚᰃᦣ䗄њ㋏㒳‫ݙ‬ᄬ੠೎ӊोⱘHOB㡖⚍DŽϔϾHOB䫒㸼ᘏᰃҹ
ϔϾ⡍ᅮⱘHOB㡖⚍㒧ᴳ(end-of-list HOB)DŽ䖬᳝ϔ⾡HOB㡖⚍㉏ൟ≵᳝೼⼎՟Ё㒭ߎˈᏺ᳝
GUIDⱘᠽሩ㡖⚍ˈ䖭㉏㡖⚍⫼ѢҢPEIM৥DXE䰊↉Ӵ䗕⾕᭄᳝᥂DŽ⡍ᅮⱘDXE䆒໛偅ࡼৃҹ䗮
䖛GUIDⱘᠽሩHOBᴹ䕼䆚ᑊ㾷ᵤߎ㡖⚍Ёᄬ‫ⱘټ‬᭄᥂DŽᭈϾHOB䫒㸼ৃҹ㹿ᄬ‫ټ‬೼‫ݙ‬ᄬЁⱘӏ
ᛣഄഔDŽ䖭⾡ϡᣛᅮഄഔⱘ⡍ᗻ‫ܕ‬䆌DXEḚᶊ㒧ᵰᇚHOB䫒㸼䕀‫ټ‬೼ӏᛣᣛᅮⱘԡ㕂DŽ

೒ 9 3 HOB List

';(ᶊᵘ3URWRFROV

DXEⱘḚᶊ㒧ᵘᰃҢᑇৄ⹀ӊᢑ䈵ߎᴹˈᑊ⬅ϔ㋏߫DXEᶊᵘprotocol㒘៤ⱘDŽDXEḚᶊ
㒧ᵘᇚ䖭ѯprotocolߚ៤EFIਃࡼ᳡ࡵ੠EFI䖤㸠ᯊ᳡ࡵDŽҢ೎ӊोЁࡴ䕑ⱘDXE䆒໛偅ࡼ߯ᓎњ
DXEᶊᵘprotocolDŽҢ䖭Ͼ䆒䅵Ё៥ӀৃҹⳟߎˈDXEḚᶊ㒧ᵘ೼ϔᓔྟᖙ乏ࣙ৿䎇໳ⱘ᳡ࡵ
⫼Ѣࡴ䕑੠ਃࡼDXE䆒໛DŽ
DXEḚᶊ㒧ᵘⱘHOB䫒㸼ᖙ乏ࣙ৿㋏㒳‫ݙ‬ᄬⱘᦣ䗄ֵᙃ੠㟇ᇥϔϾ೎ӊोDŽHOB䫒㸼Ёⱘ
㋏㒳‫ݙ‬ᄬᦣ䗄ֵᙃ㹿⫼԰߱ྟ࣪EFI᳡ࡵDŽᭈϾ㋏㒳ᖙ乏䖤㸠೼ऩ໘⧚఼ϟˈᑊϨ≵᳝Ёᮁ᳡ࡵ
ⱘᑇഺ⠽⧚‫ݙ‬ᄬ῵ᓣ(flat physical mode)DŽ䗮䖛HOB㹿Ӵ䗦㒭DXE䇗ᑺ఼ⱘ೎ӊोᖙ乏ࣙᣀϔ
Ͼা䇏ⱘFFS偅ࡼˈ䖭Ͼা䇏FFS偅ࡼ⫼ᴹ㾷ᵤᑊ᧰㋶ᣛᅮ೎ӊोЁⱘձ䌪ᦣ䗄᭛ӊ੠DXE䆒໛
偅ࡼDŽᔧϔϾ偅ࡼ㹿ᡒࠄˈᑊϨձ䌪݇㋏㹿⒵䎇ᯊˈDXE䇗ᑺ఼ህӮՓ⫼PE/COFF㾷ᵤ఼ࡴ䕑
ᑊ䖤㸠䖭ϾDXE偅ࡼDŽDXEᶊᵘprotocolӮ㹿ᮽᳳⱘDXE偅ࡼ߯ᓎߎᴹˈҹ֓೼⿡ᰮⱘDXE෎⸔
㒧ᵘ㛑߯ᓎߎܼ䚼ⱘEFIਃࡼ᳡ࡵ੠EFI䖤㸠ᯊ᳡ࡵDŽ೒9.4ᰒ⼎њϔϾ㹿Ӵ䗦㒭DXE䰊↉ⱘHOB
䫒㸼DŽDXE෎⸔ᶊᵘՓ⫼DXEᶊᵘprotocol߯ᓎњEFI㋏㒳㸼ˈEFIਃࡼ᳡ࡵ㸼੠EFI䖤㸠ᯊ᳡ࡵ㸼DŽ
೒9.4ࣙᣀњDXE䰊↉᠔᳝ⱘЏ㽕㒘ӊDŽᎺ䖍ⱘEFIਃࡼ᳡ࡵ㸼੠DXE᳡ࡵ㸼㹿ߚ䜡೼EFIਃࡼ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

᳡ࡵ‫ݙ‬ᄬЁDŽ䖭⾡ߚ䜡ᮍᓣ㸼ᯢˈEFIਃࡼ᳡ࡵ㸼੠DXE᳡ࡵ㸼೼᪡԰㋏㒳ਃࡼৢӮ㹿䞞ᬒᥝDŽ
ে䖍ⱘEFI㋏㒳㸼੠EFI䖤㸠ᯊ᳡ࡵ㸼ᰃߚ䜡೼EFI䖤㸠ᯊ᳡ࡵ‫ݙ‬ᄬЁⱘˈᅗӀӮ೼᪡԰㋏㒳䖤㸠䰊
↉偏⬭೼‫ݙ‬ᄬЁDŽ

೒ 9 4 DXE Architectural Protocols

೒9.4ЁᎺ䚼ⱘDXEᶊᵘprotocolᰃ⫼ᴹ߯ᓎEFIਃࡼ᳡ࡵⱘDŽDXE෎⸔㒧ᵘˈDXE䇗ᑺ఼ˈ
ҹঞᎺ䖍ⱘprotocolӮ೼᪡԰㋏㒳䖤㸠ᯊ㹿䞞ᬒᥝDŽে䖍ⱘDXEᶊᵘprotocolᰃ⫼ᴹ߯ᓎEFI
䖤㸠ᯊ᳡ࡵⱘDŽ䖭ѯprotocolӮ೼᪡԰㋏㒳䖤㸠䰊↉ҡ✊偏⬭೼‫ݙ‬ᄬЁDŽЁ䯈ⱘ䙷Ͼ䖤㸠ᯊᶊ
ᵘprotocol↨䕗⡍⅞DŽ䖭ϾprotocolӮ೼POSTࠄ᪡԰㋏㒳䖤㸠䰊↉ˈ⫼Ѣᇚ䖤㸠ᯊ᳡ࡵⱘഄഔ
Ң⠽⧚ഄഔ䕀ᤶࠄ㰮ᢳഄഔぎ䯈DŽᔧഄഔ䕀ᤶᅠ៤ৢˈ䖭ѯ䖤㸠ᯊ᳡ࡵᇍѢPOST䖛⿟ЁⱘBIOS
ᴹ䇈ᇚᰃϡৃ䆓䯂ⱘDŽ
ҹϟᰃϔѯDXEᶊᵘprotocolⱘㅔ㽕ҟ㒡˖
Ƶᅝܼᶊᵘprotocol˖⫼ѢDXE෎⸔ᶊᵘ偠䆕೎ӊोЁⱘ᭛ӊᰃ৺ᰃৃ⫼ⱘDŽ
Ƶ CPUᶊᵘprotocol˖ᦤկ⫼Ѣㅵ⧚㓧ᄬˈЁᮁˈ໘⧚఼乥⥛ᘶ໡ˈ੠෎Ѣ໘⧚఼ⱘᯊ䩳
ᶹ䆶᳡ࡵDŽ
Ƶ㡖ᢡ఼ᶊᵘprotocol˖ᦤկ䅽໘⧚఼᱖‫ذ‬ᑊㄝᕙϔ↉ᯊ䯈ⱘ᳡ࡵDŽ
Ƶ ᯊ䩳ᶊᵘprotocol˖ᦤկ೼DXE෎⸔㒧ᵘЁՓ⫼ⱘheartbeat timerЁᮁ᳡ࡵDŽ
Ƶ BDSᶊᵘprotocol˖ᦤկϔϾ೼DXE䰊↉㒧ᴳᯊⱘܹষഄഔˈᅗӮ೼᠔᳝DXE䆒໛偅ࡼ
ᅠ៤ࡴ䕑ৢ㹿䇗⫼DŽᅗ䋳䋷㋏㒳䖤㸠ҢDXE䰊↉ࠄBDS䰊↉ᯊˈᓎゟ᥻ࠊৄᑊՓਃࡼ᳡ࡵᓔྟ䖤
㸠DŽ
Ƶ Watchdog Timerᶊᵘprotocol˖ᦤկ⫼Ѣਃࡼ੠Ёℶᑇৄⲥ㾚ᯊ䩳ⱘ᳡ࡵDŽ
Ƶ䖤㸠ᯊᶊᵘprotocol˖ᦤկ䖤㸠ᯊ᳡ࡵ੠Ң⠽⧚ഄഔ䕀ᤶࠄ㰮ᢳഄഔⱘ᳡ࡵⱘ䖤㸠ᯊ偅

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ࡼDŽ
Ƶব䞣ᶊᵘprotocol˖ᦤկ⦃๗ব䞣䇏প੠Јᯊব䞣ⱘᄬ‫ټ‬᳡ࡵDŽ
Ƶ‫ݭ‬ব䞣ᶊᵘprotocol˖ᦤկ∌Йֱᄬব䞣ⱘᄬ‫ټ‬᳡ࡵDŽ
Ƶऩϔ䅵᭄ᶊᵘprotocol˖ᦤկ⫼ѢDXE෎⸔㒧ᵘⱘϔϾ64ԡ䅵఼᭄DŽ
Ƶ 䞡㕂ᶊᵘprotocol˖ᦤկ⫼Ѣ䞡㕂੠݇䯁㋏㒳ⱘ᳡ࡵDŽ
Ƶ⢊ᗕⷕᶊᵘprotocol˖ᦤկ໘⧚DXE෎⸔㒧ᵘ੠DXE䆒໛偅ࡼ䖨ಲⷕⱘ᳡ࡵˈ䖨ಲⱘ⢊
ᗕⷕৃҹ㹿ᄬ‫ټ‬೼᮹ᖫЁ៪㗙থ䗕㒭݊Ҫ䆒໛DŽ
Ƶᅲᯊᯊ䩳ᶊᵘprotocol˖ᦤկ䆒㕂ᔧࠡᯊ䯈੠᮹ᳳⱘ᳡ࡵˈৠᯊгࣙᣀৃ䗝ᢽⱘ⫼Ѣ૸
䝦ࡳ㛑ⱘ䅵ᯊ఼

(), ㋏㒳㸼

DXE෎⸔㒧ᵘ߯ᓎњEFI㋏㒳㸼ˈ㋏㒳㸼ᰃ⬅᠔᳝DXE䆒໛偅ࡼ੠BDS䰊↉䇗⫼ⱘৃᠻ㸠᯴
‫݅ڣ‬ৠ䇗⫼ⱘDŽᅗࣙᣀ㹿DXE෎⸔㒧ᵘ੠᠔᳝DXE䆒໛偅ࡼ䇗⫼ⱘ᠔᳝㒘ӊ੠᳡ࡵDŽ೒9.5ᄬ‫ټ‬
೼EFI㋏㒳㸼ⱘ৘⾡ৃ⫼㒘ӊDŽ

೒ 9 5 EFI System Table and Related Components

DXE෎⸔㒧ᵘ߯ᓎњEFIਃࡼ᳡ࡵˈEFI䖤㸠ᯊ᳡ࡵˈҹঞ෎ѢDXEᶊᵘprotocolⱘ৘⾡᳡ࡵDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

EFI㋏㒳㸼ᦤկᑇৄϞ᠔᳝ৃ⫼䆒໛䆓䯂ᮍ⊩ˈҹঞϔ㋏߫ⱘEFI䜡㕂㸼DŽEFI䜡㕂㸼ᰃϔϾৃᠽሩ
ⱘ㸼䲚ˈ䖭ѯ㸼ᦣ䗄њᑇৄϞⱘ䜡㕂ֵᙃˈࣙᣀDXE᳡ࡵˈHOB䫒㸼ˈACPIˈSMBIOS੠SAL
㋏㒳㸼DŽ䖭Ͼ㸼䲚䖬ৃҹ೼᳾ᴹᠽሩ৘⾡ᮄⱘ㉏ൟⱘ㸼DŽϢℸৠᯊˈӏԩৃᠻ㸠᯴‫ৃڣ‬ҹ䗮䖛
EFIਃࡼ᳡ࡵ㸼ЁⱘProtocol Handle Services䆓䯂হᶘ᭄᥂ᑧ੠᠔᳝Ꮖ⊼‫ݠ‬೼DXE偅ࡼ㸼Ёⱘ
protocol᥹ষDŽ
ᔧ᪡԰㋏㒳䖯ܹ䖤㸠ᯊ⢊ᗕҹৢˈ䖭ѯহᶘ᭄᥂ᑧˈ⦄᳝ⱘ᥻ࠊᮍ⊩ˈEFIਃࡼ᳡ࡵ੠DXE
偅ࡼᦤկⱘ৘⾡᳡ࡵ䛑Ӯ㹿ЁℶDŽ䞞ᬒⱘ‫ݙ‬ᄬぎ䯈Ӯ⬭㒭᪡԰㋏㒳Փ⫼ˈEFI㋏㒳㸼ˈEFI䖤㸠ᯊ
᳡ࡵ㸼ˈҹঞ㋏㒳䆒㕂㸼Ӯᄬ೼ᑊҡ✊㹿⫼Ѣ᪡԰㋏㒳ⱘ䖤㸠ᯊ⦃๗ЁDŽᔧ✊Դгৃҹ䗝ᢽᇚ
᠔᳝ⱘEFI䖤㸠ᯊ᳡ࡵҢ⠽⧚ഄഔ䕀ᤶ៤᪡԰㋏㒳ㅵ⧚ϟⱘ㰮ᢳഄഔDŽഄഔ䕀ᤶা㛑䖤㸠ϔ⃵DŽ

(), ਃࡼ᳡ࡵ㸼

ҹϟᰃEFIਃࡼ᳡ࡵ㸼ⱘ৘⾡᳡ࡵⱘㅔ㽕ҟ㒡˖
Ƶ ӏࡵӬ‫ܜ‬㑻᳡ࡵ˖ᦤկⱘ᳡ࡵ⫼Ѣᦤ催៪䰡ԢᔧࠡⱘӏࡵӬ‫ܜ‬㑻߿DŽ䖭⾡Ӭ‫ܜ‬㑻ᴎࠊৃ
ҹ⫼Ѣᅲ⦄ㅔऩⱘ䫕ҹঞՓ䅵ᯊ఼Ёᮁϔᇣ↉ᯊ䯈DŽ䖭Ͼ᳡ࡵձ䌪ѢCPUᶊᵘprotocolDŽ
Ƶ ‫ݙ‬ᄬ᳡ࡵ˖ᦤկߚ䜡੠䞞ᬒ4Kⱘ义䴶ˈҹঞߚ䜡੠䞞ᬒҹᄫ㡖Ў᳔ᇣऩԡⱘ‫ݙ‬ᄬ∴ㅵ⧚
᳡ࡵDŽᅗ䖬ᦤկњ㦋পᔧࠡᑇৄⱘ⠽⧚‫ݙ‬ᄬߚ䜡᯴ᇘ㸼DŽ
Ƶ џӊ੠䅵ᯊ఼᳡ࡵ˖ᦤկ⫼Ѣ߯ᓎџӊˈ㾺থџӊˈᶹ䆶џӊ⢊ᗕˈㄝᕙџӊ੠݇䯁џ
ӊⱘ᳡ࡵDŽ݊Ёϔ㉏џӊᰃ䅵ᯊ఼џӊˈ䅵ᯊ఼џӊᬃᣕ৘⾡乥⥛ⱘ਼ᳳᗻ䅵ᯊ఼ˈ੠ϔᇣ↉
ㄝᕙᯊ䯈ⱘџӊDŽ䖭ѯ᳡ࡵձ䌪ѢCPUᶊᵘprotocolˈ䅵ᯊ఼ᶊᵘprotocolˈ㡖ᢡ఼ᶊᵘ
protocol੠ᯊ䩳ⲥ㾚ᶊᵘprotocolDŽ
Ƶ Protocolহᶘ᳡ࡵ˖ᦤկњ৥হᶘ᭄᥂ᑧЁ⏏ࡴ੠ߴ䰸হᶘⱘ᳡ࡵDŽᅗৠᯊгᦤկњ৥
হᶘЁ⏏ࡴ੠ߴ䰸protocolⱘ᳡ࡵDŽℸ໪䖬ࣙᣀ⫼Ѣ݊Ҫ㒘ӊ೼হᶘ᭄᥂ᑧЁᶹᡒˈᠧᓔ੠݇
䯁হᶘⱘ᳡ࡵDŽ
Ƶ᯴‫ڣ‬᳡ࡵ˖ᦤկࡴ䕑ˈਃࡼˈ䗔ߎ੠ौ䕑PE/COFFḐᓣ᯴‫ⱘڣ‬᳡ࡵDŽ䖭ѯ᳡ࡵձ䌪Ѣᅝ
ܼᶊᵘprotocolDŽ
Ƶ 偅ࡼᬃᣕ᳡ࡵ˖Ўᑇৄ䆒໛ᦤկਃ⫼੠‫⫼ذ‬偅ࡼⱘ᳡ࡵDŽBDS䰊↉䖭ѯ᳡ࡵ㹿⫼Ѣਃ⫼
᠔᳝䆒໛៪㗙ҙਃ⫼᳔ᇣ᭄䞣ⱘ䆒໛ˈҹ֓ᅠ៤᥻ࠊ੠ਃࡼࠄ᪡԰㋏㒳DŽ䖭⾡᳔ᇣ࣪ਃ⫼ㄪ⬹
㹿⫼Ѣᖿ䗳ਃࡼᴎࠊЁDŽ

(), 䖤㸠ᯊ᳡ࡵ㸼

ҹϟᰃEFI䖤㸠ᯊ᳡ࡵ㸼ⱘ৘⾡᳡ࡵⱘㅔऩҟ㒡˖
Ƶ⦃๗ব䞣᳡ࡵ˖Ў∌Йᄬ‫⦃ⱘټ‬๗ব䞣ᦤկᶹᡒˈ⏏ࡴˈߴ䰸ⱘ᳡ࡵDŽ䖭ѯ᳡ࡵձ䌪Ѣ
ব䞣ᶊᵘprotocol੠‫ݭ‬ব䞣ᶊᵘprotocolDŽ
Ƶ ᯊ䯈᮹ᳳ᳡ࡵ˖ᦤկ䇏‫ݭ‬ᔧࠡᯊ䯈੠᮹ᳳⱘ᳡ࡵDŽৠᯊгᦤկ䇏প੠䆒㕂ৃ䗝ⱘ૸䝦䅵
ᯊ఼ⱘ᳡ࡵDŽ䖭ѯ᳡ࡵձ䌪Ѣᯊ䯈᮹ᳳᶊᵘprotocolDŽ
Ƶ䞡㕂᳡ࡵ˖ᦤկ⫼Ѣ䞡㕂੠݇䯁㋏㒳ⱘ᳡ࡵDŽ䖭ѯ᳡ࡵձ䌪Ѣ䞡㕂ᶊᵘprotocolDŽ
Ƶ⢊ᗕⷕ᳡ࡵ˖ᦤկ໘⧚⢊ᗕⷕⱘ᳡ࡵˈৃҹথ䗕⢊ᗕⷕࠄ᮹ᖫ៪㗙ϔϾ䕧ߎ䆒໛DŽ䖭ѯ
᳡ࡵձ䌪Ѣ⢊ᗕⷕᶊᵘprotocolDŽ
Ƶ 㰮ᢳ‫ݙ‬ᄬ᳡ࡵ˖ᦤկDXEⱘ䖤㸠ᯊ᳡ࡵҢ⠽⧚ഄഔ䕀ᤶࠄ㰮ᢳഄഔⱘ᯴ᇘ᳡ࡵDŽ䖭Ͼ᳡
ࡵা㛑೼⠽⧚ഄഔぎ䯈Ё㹿䇗⫼ϔ⃵DŽϔᮺ䕀ᤶᅠ៤ˈ㹿䕀ᤶഄഔⱘ᳡ࡵᇚϡ㛑‫ݡ‬㹿䇗⫼њDŽ
䖭ѯ᳡ࡵձ䌪Ѣ䖤㸠ᯊᶊᵘprotocolDŽ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

';( ᳡ࡵ㸼

ҹϟᰃDXE᳡ࡵ㸼ⱘ৘⾡᳡ࡵⱘㅔऩҟ㒡˖
Ƶ GCDㅵ⧚᳡ࡵ(Global Coherency Domain Services)˖ᦤկ⫼Ѣㅵ⧚ᑇৄϞI/O䌘
⑤ˈMMIO䌘⑤ˈҹঞ㋏㒳‫ݙ‬ᄬ䌘⑤ⱘ᳡ࡵDŽ䖭ѯ᳡ࡵ㹿⫼Ѣ৥໘⧚఼ⱘGCDЁࡼᗕ๲ࡴ੠ߴ
䰸䌘⑤DŽ
Ƶ DXE䇗ᑺ఼᳡ࡵ˖ᦤկㅵ⧚㹿䇗ᑺ఼ࡴ䕑੠䖤㸠ⱘDXE䆒໛偅ࡼⱘ᳡ࡵDŽ

ܼሔ݅ѿ᳡ࡵ

ܼሔ݅ѿ(GCD)᳡ࡵ㹿⫼ᴹㅵ⧚໘⧚఼ਃࡼ䖛⿟Ёⱘৃ⫼‫ݙ‬ᄬ੠I/O䌘⑤DŽ䖭ѯ䌘⑤䗮䖛ϸ
Ͼ೒ᴹㅵ⧚˖
ƵGCD‫ݙ‬ᄬぎ䯈ߚ䜡೒
ƵGCD I/Oぎ䯈ߚ䜡೒
GCD‫ݙ‬ᄬぎ䯈ߚ䜡೒੠I/Oぎ䯈ߚ䜡೒೼‫ݙ‬ᄬ੠I/O䌘⑤㹿๲ࡴǃ‫ޣ‬ᇥǃߚ䜡ǃ䞞ᬒᯊӮ㹿
ࡼᗕ᳈ᮄDŽৠᯊGCD᳡ࡵгᦤկњᘶ໡䖭ϸϾ䌘⑤ߚ䜡೒ⱘᮍ⊩DŽ
GCD᳡ࡵৃߚЎϸϾ䚼ߚDŽϔϾ⫼ᴹㅵ⧚໘⧚఼ਃࡼ䖛⿟Ёⱘৃ⫼‫ݙ‬ᄬ䌘⑤ˈ঺ϔϾ⫼ᴹ
ㅵ⧚ৃ⫼I/O䌘⑤DŽ⬅Ѣᑊϡᰃ᠔᳝ⱘ໘⧚఼䛑ᬃᣕՓ⫼I/O䌘⑤ˈ᠔ҹ⫼Ѣㅵ⧚I/O䌘⑤ⱘ᳡ࡵ
ᑊϡᰃᖙ乏ⱘDŽ᮴䆎བԩˈ⬅Ѣ㋏㒳‫ݙ‬ᄬ䌘⑤੠MMIOᇍѢDXE⦃๗ᰃᖙ㽕ⱘˈ᠔ҹ⫼Ѣㅵ⧚
‫ݙ‬ᄬ䌘⑤ⱘ᳡ࡵᰃᖙ乏ⱘDŽ

*&' ‫ݙ‬ᄬ䌘⑤

GCD᳡ࡵ⫼Ѣㅵ⧚‫ݙ‬ᄬⱘᮍ⊩Џ㽕᳝ҹϟ޴⾡˖
ƵAddMemorySpace()
ƵAllocateMemorySpace()
ƵFreeMemorySpace()
ƵRemoveMemorySpace()
ƵSetMemorySpaceAttributes()
GCD᳡ࡵЁ⫼Ѣᘶ໡GCD‫ݙ‬ᄬぎ䯈ߚ䜡೒᳝ҹϟϸ⾡˖
ƵGetMemorySpaceDescriptor()
ƵGetMemorySpaceMap()
GCD‫ݙ‬ᄬぎ䯈ߚ䜡೒ⱘ߱ྟ࣪᠔ᖙ乏ⱘֵᙃᰃᴹ㞾DXE෎⸔ḚᶊЁⱘHOB䫒㸼DŽ䫒㸼Ё᳝
ϔ㉏HOB㡖⚍⫼ᴹᦣ䗄‫ݙ‬ᄬഄഔᘏ㒓ⱘˈഄഔᘏ㒓ৃҹ㹿⫼ᴹ䆓䯂‫ݙ‬ᄬ䌘⑤DŽ䖭ѯֵᙃᰃ⫼ᴹ
߱ྟ࣪GCD‫ݙ‬ᄬぎ䯈ߚ䜡೒ⱘ⢊ᗕDŽӏԩ䍙ߎഄഔᘏ㒓ⱘ‫ݙ‬ᄬᇍѢGCD‫ݙ‬ᄬ䌘⑤ㅵ⧚᳡ࡵᴹ
䇈䛑ᰃϡৃ⫼ⱘDŽGCD‫ݙ‬ᄬぎ䯈ߚ䜡೒Փ⫼ϔϾ64ԡഄഔㅵ⧚ৃ⫼‫ݙ‬ᄬDŽGCD‫ݙ‬ᄬ䌘⑤ㅵ⧚
ⱘ᠔᳝‫ݙ‬ᄬऎඳ䛑ᰃҹ↨⡍Ў᳔ᇣऩԡ䆓䯂DŽ䖬᳝ϔ㉏HOB㡖⚍⫼Ѣᦣ䗄㋏㒳‫ݙ‬ᄬⱘԡ㕂ˈ‫ݙ‬
ᄬ᯴ᇘI/O䌘⑤ⱘԡ㕂ˈ೎ӊ䆒໛ⱘԡ㕂ˈ೎ӊो(firmware volumes)ⱘԡ㕂ˈ乘⬭ぎ䯈ⱘԡ㕂ˈ
ҹঞߚ䜡㒭DXEḚᶊ㒧ᵘՓ⫼ⱘ㋏㒳‫ݙ‬ᄬⱘԡ㕂DŽDXEḚᶊ㒧ᵘӮ㾷ᵤHOB䫒㸼䞠䴶ⱘ䖭ѯֵ
ᙃˈᑊϨֱ䆕䖭ѯ⫼ѢDXEḚᶊ㒧ᵘⱘഄഔ↉ᰃৃ⫼ⱘDŽ᠔ҹˈGCD‫ݙ‬ᄬぎ䯈ߚ䜡೒ᖙ乏ᣝ✻
HOB䫒㸼Ёⱘᦣ䗄ᅠ៤ഄഔぎ䯈ⱘ᯴ᇘDŽGCD‫ݙ‬ᄬぎ䯈ߚ䜡೒ЎDXEḚᶊ㒧ᵘЁⱘ‫ݙ‬ᄬㅵ⧚ߑ
᭄ᦤկᖙ㽕ⱘֵᙃˈ‫ݙ‬ᄬㅵ⧚ߑ᭄՟བAllocatePages(), FreePages(), AllocatePool(),
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

FreeePool(), GetMemoryMap()DŽ
GCD‫ݙ‬ᄬぎ䯈ߚ䜡೒Ёⱘ‫ݙ‬ᄬऎඳ᳝ಯ⾡⢊ᗕ˖
ƵNonexistent memory˄ϡৃ⫼‫ݙ‬ᄬ˅
ƵSystem memory˄㋏㒳‫ݙ‬ᄬ˅
ƵMemory-mapped ˄I/O‫ݙ‬ᄬ᯴ᇘI/O˅
ƵReserved memory˄ֱ⬭‫ݙ‬ᄬ˅
‫ݙ‬ᄬഫৃҹ⬅DXE⦃๗ϟⱘDXE偅ࡼߚ䜡੠䞞ᬒDŽ঺໪ˈDXE䆒໛偅ࡼ䖬ৃҹᣛᅮ‫ݙ‬ᄬഫⱘ
㓧ᄬሲᗻDŽ೒9.6ᰒ⼎њ‫ݙ‬ᄬഫ೼GCD‫ݙ‬ᄬぎ䯈ߚ䜡೒Ёⱘ⢊ᗕ䕀ᤶDŽ⬅GCD᳡ࡵㅵ⧚ⱘ‫ݙ‬ᄬ
ৃҹҢϔ⾡⢊ᗕ䕀ᤶ៤঺ϔ⾡⢊ᗕDŽGCD᳡ࡵᖙ乏㛑໳⿏ࡼⳌৠ⢊ᗕⱘ‫ݙ‬ᄬഫᑊᇚ݊ড়ᑊ៤ϔ
Ͼᮄⱘ‫ݙ‬ᄬഫˈ䖭ḋৃҹ‫ޣ‬ᇥGCD‫ݙ‬ᄬぎ䯈ߚ䜡೒ⱘ‫ݙ‬ᄬഫ᭄䞣DŽ

೒ 9 6 GCD Memory State Transitions

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

*&',2 䌘⑤

GCD᳡ࡵ⫼Ѣㅵ⧚I/O䌘⑤ⱘᮍ⊩Џ㽕᳝ҹϟ޴⾡˖
ƵAddIoSpace()
ƵAllocateIoSpace()
ƵFreeIoSpace()
ƵRemoveIoSpace()
GCD᳡ࡵЁ⫼Ѣᘶ໡GCD I/Oぎ䯈ߚ䜡೒ⱘᮍ⊩᳝ҹϟϸ⾡˖
ƵGetIoSpaceDescriptor()
ƵGetIoSpaceMap()
GCD I/Oぎ䯈ߚ䜡೒ⱘ߱ྟ࣪᠔ᖙ乏ⱘֵᙃᰃᴹ㞾DXE෎⸔ḚᶊЁⱘHOB䫒㸼DŽ᳝ϔ㉏
HOB㡖⚍ᦣ䗄њ⫼Ѣ䆓䯂I/O䌘⑤ⱘഄഔ㒓᭄䞣DŽӏԩ䍙ߎ䖭Ͼഄഔ㒓ⱘI/OഄഔᇍѢGCD᳡ࡵ
ᴹ䇈䛑ᰃϡৃ⫼ⱘDŽGCD I/Oぎ䯈ߚ䜡೒Փ⫼ϔϾ64ԡഄഔᦣ䗄I/OഄഔֵᙃˈGCD I/Oぎ䯈
ߚ䜡೒ЁⱘI/Oഫ᳔ᇣऩԡᰃᄫ㡖DŽ

೒ 9 7 GCD I/O State Transitions

GCD I/Oぎ䯈ߚ䜡೒ⱘI/Oഫ᳝ϝ⾡⢊ᗕˈࣙᣀϡৃ⫼I/OˈI/Oˈҹঞֱ⬭I/ODŽI/O䌘⑤
ৃҹ⬅DXE⦃๗ϟⱘ䆒໛偅ࡼߚ䜡੠䞞ᬒDŽ೒9.7ᰒ⼎њI/Oഫⱘ⢊ᗕ䕀ᤶDŽ⬅GCD᳡ࡵㅵ⧚ⱘ
I/OৃҹҢϔ⾡⢊ᗕ䕀ᤶ៤঺ϔ⾡⢊ᗕDŽGCD᳡ࡵᖙ乏㛑໳⿏ࡼⳌৠ⢊ᗕⱘI/Oഫᑊᇚ݊ড়ᑊ៤
ϔϾᮄⱘI/Oഫˈ䖭ḋৃҹ‫ޣ‬ᇥGCD I/Oぎ䯈ߚ䜡೒ⱘI/Oഫ᭄䞣DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

';( 䇗ᑺ఼

೼DXE෎⸔Ḛᶊᅠ៤߱ྟ࣪ҹৢˈ᥻ࠊᴗ㹿䕀Ѹ㒭DXE䇗ᑺ఼DŽDXE䇗ᑺ఼䋳䋷ࡴ䕑੠䇗⫼
೎ӊोЁⱘDXE偅ࡼDŽDXE䇗ᑺ఼ḍ᥂HOB䫒㸼Ёⱘᦣ䗄ֵᙃ೼೎ӊोЁᶹᡒ偅ࡼDŽ䱣ⴔ⿟ᑣ
ᠻ㸠ˈ݊Ҫⱘ೎ӊोӮ㹿Ⳍ㒻ᡒࠄDŽᔧᮄⱘ೎ӊो㹿ᡒࠄҹৢˈDXE䇗ᑺ఼гӮ᧰㋶ᮄⱘ೎ӊ
ोЁⱘ᠔᳝偅ࡼDŽ
ᔧϔϾᮄⱘ೎ӊो㹿ᡒࠄҹৢˈ៥ӀӮḍ᥂ϔϾӬ‫ܜ‬㑻ᦣ䗄᭛ӊᴹᶹᡒ偅ࡼDŽ䖭ϾӬ‫ܜ‬㑻
ᦣ䗄᭛ӊՓ⫼ϔϾ೎ᅮⱘ᭛ӊৡᑊϨࣙᣀњᑨ䆹㹿Ӭ‫ࡴܜ‬䕑ᑊᠻ㸠DXE偅ࡼⱘࡴ䕑乎ᑣDŽ↣Ͼ
೎ӊो᳔໮া㛑᳝ϔϾӬ‫ܜ‬㑻ᦣ䗄᭛ӊˈԚᰃг‫ܕ‬䆌≵᳝ӏԩӬ‫ܜ‬㑻ᦣ䗄᭛ӊDŽ೼䕗催Ӭ‫ܜ‬㑻
ⱘDXE偅ࡼ㹿ࡴ䕑ҹৢˈⳌ݇ⱘձ䌪㸼䖒ᓣӮ㹿᳈ᮄᑊᡒߎϟϔϾ㹿ࡴ䕑ⱘDXE偅ࡼDŽӬ‫ܜ‬㑻
ᦣ䗄᭛ӊӮᦤկϔϾ೎ᅮᠻ㸠乎ᑣⱘDXE偅ࡼ߫㸼ˈ䖭ѯ߫㸼Ёⱘ偅ࡼⱘࡴ䕑ϡՓ⫼ձ䌪㸼䖒
ᓣDŽձ䌪㸼䖒ᓣᦤկ㒭࠽ϟⱘӬ‫ܜ‬㑻䕗ԢⱘDXE偅ࡼՓ⫼DŽ೼↣ϾDXE偅ࡼᠻ㸠ࠡˈ䛑ᖙ乏㒣
䖛ᅝܼᶊᵘprotocolⱘ偠䆕DŽ䖭⾡偠䆕ᰃЎњ⽕ℶࡴ䕑݊Ҫϡᯢᴹ⑤ⱘDXE偅ࡼ⿟ᑣDŽ
೼Ӭ‫ܜ‬㑻ᦣ䗄᭛ӊЁⱘ偅ࡼ੠᠔᳝⒵䎇ձ䌪㸼䖒ᓣⱘDXE偅ࡼ䛑㹿ࡴ䕑ҹৢˈ᥻ࠊᴗҢ
DXE䇗ᑺ఼㹿⿏Ѹ㒭BDSᶊᵘProtocolDŽBDSᶊᵘProtocol䋳䋷߯ᓎ᥻ࠊৄ䆒໛ᑊᇱ䆩ਃࡼ᪡԰
㋏㒳DŽ೼᥻ࠊৄ䆒໛੠⫼Ѣਃࡼ᪡԰㋏㒳ⱘ偅ࡼ䛑㹿߯ᓎᅠ៤ҹৢˈৃ㛑Ӯ᳝ᮄⱘ೎ӊो㹿থ
⦄DŽབᵰBDSᶊᵘProtocolϡ㛑ਃࡼ᥻ࠊৄˈ៪㗙ϡ㛑পᕫਃࡼ᪡԰㋏㒳ⱘᴗ䰤ˈDXE䇗ᑺ఼Ӯ
㹿䞡ᮄ䇗⫼DŽ䞡ᮄਃࡼⱘDXE䇗ᑺ఼Ӯࡴ䕑ᑊᠻ㸠᳔䖥ϔ⃵ᮄথ⦄ⱘ೎ӊोЁⱘ䆒໛偅ࡼDŽ೼
DXE‫ࡴ⃵ݡ‬䕑ᅠ᠔᳝ৃ⫼偅ࡼҹৢˈ᥻ࠊᴗӮ䞡ᮄ㹿⿏Ѹ㒭BDSᶊᵘProtocolˈҹ֓㒻㓁ਃࡼ᪡
԰㋏㒳DŽ೒9.8ᦣ䗄њDXE䇗ᑺ఼ǃDXE偅ࡼ੠BDSⱘᠻ㸠乎ᑣDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 9 8 The Handshake between the Dispatcher and Other Components.

Ӭ‫ܜ‬㑻᭛ӊ

Ӭ‫ܜ‬㑻᭛ӊᰃ೎ӊोЁৃ㛑ࣙ৿ⱘϔϾ⡍߿ⱘ᭛ӊDŽ↣Ͼ೎ӊोЁ᳔໮ৃҹࣙᣀϔϾӬ‫ܜ‬
㑻᭛ӊDŽӬ‫ܜ‬㑻᭛ӊՓ⫼ᏆⶹⱘGUID᭛ӊৡˈ᠔ҹDXE䇗ᑺ఼ᘏᰃ㛑䗮䖛䖭ϾGUIDᴹᡒࠄӬ
‫ܜ‬㑻᭛ӊDŽ↣ᔧᮄⱘ೎ӊो㹿থ⦄ҹৢˈDXE䇗ᑺ఼Ӯ佪䗝ᇱ䆩ᶹᡒ䖭ϾӬ‫ܜ‬㑻᭛ӊDŽӬ‫ܜ‬㑻
᭛ӊЁࣙᣀњӬ‫ܜ‬㑻䕗催ⱘϔϾDXE偅ࡼ߫㸼ˈ䖭ѯ偅ࡼᖙ乏೼݊Ҫ䕗ԢӬ‫ܜ‬㑻偅ࡼ㹿ࡴ䕑ࠡ
㹿ᠻ㸠DŽӬ‫ܜ‬㑻᭛ӊЁⱘ偅ࡼ߫㸼ᰃᣝ✻ᠻ㸠乎ᑣᥦ߫ⱘDŽབᵰ䖭ѯ偅ࡼࣙ৿᳝ձ䌪㸼䖒ᓣˈ
䙷М䖭ѯձ䌪㸼䖒ᓣӮ㹿ᗑ⬹ᥝDŽ
Ӭ‫ܜ‬㑻᭛ӊⱘⳂⱘᰃЎњᦤկϔϾ೎ᅮᠻ㸠乎ᑣⱘDXE偅ࡼ߫㸼DŽ݊ᅗḍ᥂ձ䌪㸼䖒ᓣᠻ
㸠ⱘDXE偅ࡼӬ‫ܜ‬㑻䕗Ԣˈгህᰃ䇈ˈ䖭ѯ偅ࡼ೼㋏㒳ਃࡼ䖛⿟Ёⱘࡴ䕑乎ᑣϡᰃ೎ᅮⱘDŽᔧ
✊ˈ᳝ᯊ‫׭‬䖭ѯ偅ࡼг䳔㽕ϔϾ೎ᅮⱘᠻ㸠乎ᑣDŽ՟བ⫼Ѣᦤկdebug DXE偅ࡼⱘ᳡ࡵ᳝ᯊ‫׭‬
ህᖙ乏㹿ࡴܹӬ‫ܜ‬㑻᭛ӊЁDŽ৺߭བᵰՓ⫼ձ䌪㸼䖒ᓣⱘ䆱ˈ䖭ѯ᳡ࡵৃ㛑Ӯ೼ᕜᰮᠡ㹿ࡴ䕑DŽ
བᵰ㛑೼᳈ᮽⱘᯊ‫ࡴ׭‬䕑debug᳡ࡵˈ៥Ӏህৃҹdebug᳈໮ⱘDXE෎⸔ᶊᵘ੠DXE偅ࡼDŽ঺
໪ϔϾ՟ᄤᰃՓ⫼Ӭ‫ܜ‬㑻᭛ӊᴹᗑ⬹ձ䌪㸼䖒ᓣDŽ᳝ѯጠܹᓣᑇৄৃ㛑া䳔㽕ᇥ䞣ⱘDXE偅ࡼ
ᣝ✻೎ᅮ乎ᑣࡴ䕑DŽӬ‫ܜ‬㑻᭛ӊህৃҹᦤկϔϾϹḐᣝ✻೎ᅮ乎ᑣᴹࡴ䕑ⱘᮍ⊩ˈ㗠ϡՓ⫼ձ
䌪㸼䖒ᓣⱘ乎ᑣࡴ䕑DŽᔧ✊ձ䌪㸼䖒ᓣᦣ䗄њПࠡᖙ乏ࡴ䕑ⱘ೎ӊ偅ࡼˈ䖭⾡ᮍ⊩ৃҹֱᡸ೎
ӊぎ䯈ϡ㹿⸈ണDŽӬ‫ܜ‬㑻᭛ӊⱘ᳔Џ㽕ⳂⱘᰃЎњՓ೎ӊᑇৄⱘ䆒䅵᳈ࡴ♉⌏DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ձ䌪ᗻ䇁⊩

DXE偅ࡼᰃҹ᭛ӊⱘᮍᓣᄬ‫ټ‬೼೎ӊोЁˈᅗऴ⫼ϔϾ៪໮ϾऎඳDŽ݊ЁϔϾऎඳᖙ乏ᰃ
PE/COFF᯴‫ڣ‬DŽབᵰ䖭ϾDXE偅ࡼࣙᣀϔϾձ䌪㸼䖒ᓣˈ䙷М䖭Ͼձ䌪㸼䖒ᓣӮ㹿ᄬ‫ټ‬೼ϔϾ
⡍ᅮऎඳDŽDXE偅ࡼৃ㛑䖬ࣙᣀ乱໪ⱘऎඳ⫼Ѣय़㓽੠ࡴ໇DŽᑊϨˈDXE䇗ᑺ఼ḍ᥂DXE偅ࡼⱘ
㉏ൟᴹ䕼䆚ϡৠⱘ偅ࡼDŽDXE䇗ᑺ఼ৃҹ䗮䖛ᶹᡒDXE偅ࡼ䰘ሲऎඳᴹᶹ䆶ձ䌪㸼䖒ᓣDŽ䰘ሲ
ऎඳࣙᣀ⬅ϔ⾡᭄᥂⌕㉏ൟⱘ᪡԰᭄੠᪡԰ⷕ㒘៤ⱘձ䌪㸼䖒ᓣDŽ

㸼 9 1 Supported Opcodes in the Dependency Expression Instruction Set

Ўњ㡖ⳕぎ䯈ˈᄬ‫ټ‬೼䰘ሲऎඳЁⱘձ䌪㸼䖒ᓣᖙ乏㹿䆒䅵ⱘㅔⷁDŽ঺໪ˈᅗӀ䖬ᑨ䆹㛑
㹿ᕜᖿ㾷ᵤˈҹ֓䰡Ԣᠻ㸠ᯊ䯈DŽЎњ䖒ࠄ䖭ϸϾⳂⱘˈ៥Ӏᖙ乏䆒䅵ϔ⾡ㅔⷁˈ෎Ѣᷜ㒧ᵘ
ⱘձ䌪㸼䖒ᓣ㓪ⷕDŽDXE䇗ᑺ఼ᖙ乏ᅲ⦄ϔ⾡⫼Ѣ㾷ᵤձ䌪㸼䖒ᓣⱘ㾷䞞⿟ᑣDŽ㸼9.1㒭ߎњձ
䌪㸼䖒ᓣᬃᣕⱘϔѯ᪡԰ⷕDŽ
⬅Ѣ೼ৠϔᯊࠏৃ㛑᳝໮Ͼձ䌪㸼䖒ᓣؐ䛑Ўtrueˈ᠔ҹेՓ೼ᅠܼⳌৠⱘᑇৄ੠೎ӊЁˈ
೼ਃࡼᯊˈDXE偅ࡼⱘᠻ㸠乎ᑣ䛑ৃ㛑ᰃϡৠⱘDŽ䖭⾡ϡ⹂ᅮᗻህᰃЎҔМ䇈Փ⫼ձ䌪㸼䖒ᓣ
ᠻ㸠ⱘDXE偅ࡼⱘ乎ᑣᰃϡ೎ᅮⱘDŽ

';( 偅ࡼ

DXE偅ࡼৃҹߚЎϸ㉏˖
ƵDXE䰊↉ᮽᳳᠻ㸠ⱘDXE偅ࡼDŽ
Ƶᣝ✻EFI 1.1偅ࡼ῵ൟ߯ᓎⱘDXE偅ࡼDŽ
㄀ϔ㉏೼DXEᮽᳳࡴ䕑ⱘ偅ࡼⱘᠻ㸠乎ᑣপ‫އ‬ѢӬ‫ܜ‬㑻᭛ӊ੠ձ䌪㸼䖒ᓣDŽ‫݌‬ൟⱘᮽᳳᠻ
㸠ⱘDXE偅ࡼࣙᣀ໘⧚఼ǃ㢃⠛㒘੠ᑇৄ߱ྟ࣪ҷⷕDŽ䖭ѯᮽᳳࡴ䕑ⱘDXE偅ࡼ䖬Ӯ߯ᓎDXE
ᶊᵘProtocolˈ䖭Ͼprotocol㹿DXE෎⸔Ḛᶊ⫼ᴹ߯ᓎEFIਃࡼ᳡ࡵ੠EFI䖤㸠ᯊ᳡ࡵDŽЎњ‫ޣ‬ᇥ
ਃࡼ᠔⫼ᯊ䯈ˈৃҹᇚሑৃ㛑໮䆒໛߱ྟ࣪ᬒܹ㄀Ѡ㉏ᣝ✻EFI 1.1偅ࡼ῵ൟ߯ᓎⱘDXE偅ࡼDŽ
ᔧ㄀Ѡ㉏DXE偅ࡼ㹿DXE䇗ᑺ఼䖤㸠ᯊˈ偅ࡼϡӮ‫خ‬ӏԩ⹀ӊⱘ߱ྟ࣪DŽDXE䇗ᑺ఼Ӯᇚ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Driver Binding Protocol᥹ষ⊼‫ࠄݠ‬handle᭄᥂ᑧЁDŽ೼BDS䰊↉ˈDriver Binding Protocol


Ӯ㹿⫼Ѣ߯ᓎ᥻ࠊৄ੠䆓䯂ਃࡼ䆒໛DŽ㄀Ѡ㉏偅ࡼৃҹᦤկ᥻ࠊৄ䆒໛੠ਃࡼ䆒໛ⱘ䕃ӊᬃᣕDŽ
DXE偅ࡼ䳔㽕䇗⫼EFIਃࡼ᳡ࡵ੠EFI䖤㸠ᯊ᳡ࡵᴹᠻ㸠ҪӀⱘࡳ㛑DŽᑨ䆹⊼ᛣࠄˈℸᯊDXE
ᶊᵘProtocolৃ㛑≵᳝ᅠ៤⊼‫ݠ‬DŽDXE偅ࡼᖙ乏Փ⫼ձ䌪㸼䖒ᓣᴹ⹂ֱᔧࠡ偅ࡼ᠔ձ䌪ⱘ݊Ҫ
᳡ࡵ䛑Ꮖ㒣ᰃৃ⫼ⱘDŽ
೼DXE䰊↉ˈ㄀Ѡ㉏DXE偅ࡼӮ㹿⊼‫ࠄݠ‬handle᭄᥂ᑧЁˈ✊ৢ䖭ѯ偅ࡼⱘDriver Binding
ProtocolӮ೼BDS䰊↉㹿ᠻ㸠ˈℸᯊ᠔᳝ⱘDXE෎⸔ᶊᵘprotocol䛑Ꮖ㒣㹿ࡴ䕑њDŽབᵰDXE
䇗ᑺ఼Ꮖ㒣ᠻ㸠ᅠ᠔᳝ⱘDXE偅ࡼˈԚᰃDXE Architectural Protocolsᑊ≵᳝ᅠܼࡴ䕑ˈBIOS
ᖙ乏থߎϔϾϹ䞡䫭䇃ᑊhaltԣ㋏㒳DŽ

%'6 䰊↉

BDS Architectural Protocol ᰃ೼DXE䰊↉㹿ᡒࠄˈᑊϨ೼BDS䰊↉㹿ᠻ㸠ⱘˈprotocol


೼ᠻ㸠ࠡᖙ乏⒵䎇ϸϾᴵӊ˖
Ƶ᠔᳝DXE Architectural Protocols䛑Ꮖ㒣⊼‫ࠄݠ‬handle᭄᥂ᑧЁDŽ䖭Ͼᴵӊ㽕∖DXE
Foundation Ꮖ㒣߯ᓎߎᅠᭈⱘEFIਃࡼ᳡ࡵ੠EFI䖤㸠ᯊ᳡ࡵDŽ
ƵDXE䇗ᑺ఼Ꮖ㒣ᇚ᠔᳝⒵䎇ࡴ䕑ᴵӊⱘ偅ࡼ䛑ࡴ䕑ᅠ៤њDŽ䖭Ͼᴵӊ㽕∖ˈ᠔᳝೼Ӭ‫ܜ‬
㑻ᦣ䗄᭛ӊЁⱘ偅ࡼ੠᠔᳝⒵䎇ձ䌪㸼䖒ᓣЎⳳⱘ偅ࡼ䛑㹿ࡴ䕑੠ᠻ㸠ᅠ៤њDŽ
BDS Architectural Protocolᶹᡒᑊࡴ䕑೼䆌໮ᑨ⫼ˈ䖭ѯᑨ⫼⿟ᑣৃҹ೼ਃࡼࠡ⦃๗Ёᠻ
㸠DŽ䖭ѯᑨ⫼⿟ᑣৃҹ߯ᓎϔϾӴ㒳ⱘOS boot loaderˈ៪㗙ϔϾᠽሩ᳡ࡵҹ֓⫼ᴹࡴ䕑᳔ৢ
䳔㽕ਃࡼⱘOSDŽ䖭ѯᠽሩਃࡼࠡ᳡ࡵৃҹࣙᣀsetup䜡㕂ǃᠽሩ䆞ᮁ᳡ࡵǃflashछ㑻ᬃᣕǃOEM
᳡ࡵˈ៪㗙OSਃࡼҷⷕDŽ
‫ڣ‬IBVǃOEMǃISVㄝկᑨଚৃҹ䗝ᢽՓ⫼᥼㤤ⱘᮍᓣˈ೼referenceҷⷕ෎⸔Ϟᅲ⦄ҪӀ
㞾Ꮕⱘᑇৄ˗៪㗙ᰃ೼⦄᳝ҷⷕⱘ෎⸔Ϟׂᬍᅠ៤BDS Architectural ProtocolЁⱘ৘⾡ᑨ⫼DŽ
BDS䰊↉Ӯᠻ㸠ϔ㋏߫ӏࡵDŽ೼ϡৠⱘᑇৄϞˈ⫼᠋⬠䴶੠ડᑨᮍᓣৃ㛑ᅠܼϡৠ˗Ԛᰃ
BDS䰊↉ⱘਃࡼ㾘߭ै䴲ᐌⳌԐ DŽ䖭ѯӏࡵࣙᣀ˖
Ƶ ෎ѢConInǃConOut੠StdErr䖭ѯ⦃๗ব䞣߱ྟ࣪᥻ࠊৄ䆒໛DŽ
Ƶ ᇱ䆩ࡴ䕑⦃๗ব䞣Ё߫೼Driver####੠DriverOrderЁⱘ᠔᳝䆒໛
Ƶ 䆩೒ҢBoot####੠BootOrder⦃๗ব䞣Ё߫ߎⱘ䆒໛ᓔྟਃࡼ㋏㒳DŽ
བᵰBDS䰊↉䖲᥹᥻ࠊৄ䆒໛༅䋹ˈࡴ䕑偅ࡼ៪㗙ਃࡼ༅䋹ˈDXE䇗ᑺ఼Ӯ㹿䞡ᮄ䇗⫼DŽ䖭
⃵䇗⫼ৃ㛑ᰃᖙ乏ⱘˈ಴Ў೼Ϟ⃵ᅠ៤䇗⫼ৢˈৃ㛑᳝ᮄⱘ೎ӊो㹿ᡒࠄDŽ䖭ѯᮄᡒࠄⱘ೎ӊ
ोг䆌ࣙᣀ᳝⫼ᴹㅵ⧚᥻ࠊৄ䆒໛੠ਃࡼ䆒໛ⱘDXE偅ࡼDŽ೼᠔᳝ᮄথ⦄ⱘ೎ӊोЁⱘ偅ࡼ䛑
㹿ࡴ䕑ҹৢˈ᥻ࠊᴗӮ㹿䞡ᮄѸ㒭BDS䰊↉DŽབᵰBDS䰊↉䖬ᰃϡ㛑䖲᥹᥻ࠊ䆒໛៪㗙ᰃਃࡼ䆒
໛ˈ䙷МBDSӮਃࡼ༅䋹DŽBDSਃࡼ༅䋹ৢӮ㞾ࡼᇱ䆩ҢϟϔϾ᥻ࠊৄ䆒໛ਃࡼDŽ

᥻ࠊৄ䆒໛

᥻ࠊৄ䆒໛ᰃՓ⫼ㅔऩ᭛ᴀ䕧ܹ䕧ߎण䆂ⱘ䆒໛DŽ೼෎ѢFrameworⱘᑇৄϞˈӏԩ㛑ᬃ
ᣕㅔऩ᭛ᴀ䕧ܹ/䕧ߎण䆂ⱘ䆒໛䛑㛑㹿԰ЎϔϾ᥻ࠊৄ䆒໛Փ⫼DŽϟ߫޴⾡㉏ൟⱘ䆒໛䛑ৃҹ
԰Ў᥻ࠊৄ䆒໛Փ⫼˖
ƵVGA䗖䜡఼˖ᣝ✻ㅔऩ᭛ᴀ䕧ߎण䆂೼䗖䜡఼Ϟ෎Ѣ᭛ᴀᰒ⼎䕧ߎDŽ
Ƶ䗮⫼೒ᔶ䗖䜡఼(UGA)˖䖭ѯ䗖䜡఼᳝ϔϾᬃᣕഫ䕀ᤶ᪡԰(BLT)ⱘⱘ೒䈵໘⧚᥹ষDŽ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

UGAৃҹ䗮䖛BLT᪡԰৥frame bufferЁথ䗕Unicode೒䈵ᴹᅲ⦄ㅔऩ᭛ᴀ䕧ߎण䆂DŽ
Ƶ Іষ㒜ッ˖Іষ㒜ッ䆒໛ৃҹৠᯊᅲ⦄ㅔऩ᭛ᴀ䕧ܹ䕧ߎण䆂DŽІষЁᮁ䴲ᐌ♉⌏ˈᅗ
ᬃᣕ৘⾡ण䆂՟བPC-ANSIˈVT-100ˈVT-100+ˈ䖬᳝VTUTF8DŽ
Ƶ Telnet˖telnetৃҹৠᯊᅲ⦄ㅔऩ᭛ᴀ䕧ܹ䕧ߎण䆂DŽ੠Іষϔḋˈtelnetᬃᣕⱘण䆂
ࣙᣀPC-ANSIˈVT-100ˈVT-100+ˈVTUTF8DŽ
Ƶ 䖰⿟೒䈵ᰒ⼎(HTTP)˖䖰⿟೒䈵ᰒ⼎гৃҹᅲ⦄ऩ᭛ᴀ䕧ܹ䕧ߎण䆂DŽ↨བՓ⫼HTTPण
䆂ᅲ⦄ˈ಴ℸৃҹ෎ѢFrameworkⱘᑇৄˈՓ⫼ᷛ‫ޚ‬Internet⌣㾜఼ㅵ⧚

ਃࡼ䆒໛

Frameworkᬃᣕⱘਃࡼ䆒໛ࣙᣀ˖
ƵՓ⫼FATḐᓣ᭛ӊ㋏㒳ˈϨᬃᣕBlock I/O Protocol 䆒໛
ƵᬃᣕFile System Protocolⱘ䆒໛
ƵᬃᣕLoad File Protocolⱘ䆒໛
⺕Ⲭ䆒໛ϔ㠀ᬃᣕBlock I/O Protocolˈ㔥㒰䆒໛ϔ㠀ᬃᣕLoad File ProtocolDŽ
Frameworkгৃҹ䗝ᢽՓ⫼Ӵ㒳ⱘ‫ݐ‬ᆍ䆒໛DŽ䖭ѯ䆒໛Ӯᦤկ⫼ѢਃࡼࠄӴ㒳ⱘOSⱘ᳡
ࡵˈBDS䰊↉ᑨ䆹ᖙ乏ᬃᣕਃࡼࠄӴ㒳OSDŽ

Ёℶਃࡼ᳡ࡵ

೼OSࡴ䕑੠៤ࡳਃࡼᅠ៤ৢˈBDS䰊↉ህ㒧ᴳњDŽOSࡴ䕑఼៪㗙OS kernelৃҹ䗮䖛䇗⫼
ExitBootServices()᳡ࡵᴹЁℶBDS䰊↉DŽ䇗⫼㒧ᴳৢˈ᠔᳝ⱘਃࡼ᳡ࡵ䛑Ӯ䞞ᬒ݊Փ⫼䖛ⱘ䌘
⑤DŽ䇗⫼䖨ಲৢˈ㋏㒳䖯ܹRuntime(RT)䰊↉DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀कゴ


ϔѯᐌ㾕ⱘ (), ࡳ㛑


ϡ㽕䅽ᇚᴹⱘџೄᡄԴˈ಴Ўབᵰ䙷ᰃᖙ✊㽕থ⫳ⱘ䆱ˈ
ԴᇚᏺⴔԴ⦄೼ᇍᕙᔧࠡџ⠽ⱘৠḋ⧚ᗻ䍄৥ᅗӀDŽ
—Marcus Aurelius Antoninus
៥ (), ᦤկњ໻䞣ⱘࡳ㛑ߑ᭄⫼Ѣ偅ࡼ੠ᑨ⫼⿟ᑣϢᑩሖⱘ (), 䚼ӊ䖯㸠䗮ֵDŽ䆌໮Пࠡ
䆒䅵ⱘ᥹ষ䛑᳝ᕜ໮ሔ䰤ᗻⱘˈ಴Ў៥Ӏϡ㛑乘㾕ᡔᴃᬍবⱘ䍟࢓DŽ䅽៥ӀВϔϾ䖭ḋⱘ՟ᄤˈ
ᔧᯊ೼䆒䅵⹀Ⲭ᥹ষᯊˈ᱂䘡䅸ЎϔϾ⹀Ⲭৃ⫼ぎ䯈∌䖰ϡӮ໻Ѣ *%DŽ䖭ᕔᕔᰃᕜ䲒乘⌟ᡔᴃ
ৃ㛑ӮᦤկҔМḋⱘব࣪DŽ䆌໮㨫ৡ䆎ᮁ᳒䇈䖛ϾҎⱘ䅵ㅫᴎ∌䖰ϡӮ⦄ᅲⱘߎ⦄ˈ៪㗙ֱ䆕
NE ⱘ‫ݙ‬ᄬᏆ㒣䎇໳䇏㗙Փ⫼њDŽ⬅Ѣ䖛এ䋿ⱘ᥼ᮁ㔎У乘㾕ᗻˈҎӀৃ㛑ᇱ䆩এᄺд⦄೼ⳟ
䍋ᴹᰃᕜϡ䫭ⱘĀ䫭䇃āⶹ䆚੠䆒䅵᥹ষˈ✊ৢࡾ࡯ҢҞ໽䖭ѯᐌ㾕ⱘᅲ䏉Ёᇱ䆩乘㾕ᇚᴹᗢ
ḋՓ⫼⦄೼䆒䅵ⱘ䖭ѯ᥹ষDŽᴀゴᦣ䗄њϔϾᄬ೼ (), ҹঞḚᶊЁⱘᐌ㾕ⱘ᥹ষ䗝ᢽ˖
Ƶ䖭ᰃϔ㒘ण䆂Ң (), 偅ࡼ⿟ᑣ੠ᑨ⫼Ёᢑ䈵ⱘ⹀ӊᑇৄDŽ䖭ѯण䆂ϔ㠀ᚙ‫މ‬ϟাᰃՓ⫼
೼ ';( ⱘ䰊↉ˈᑊϨ೼ϔϾḚᶊⱘ෎⸔Ϟⱘᠻ㸠DŽ೼ⳂࠡⱘᔶᓣЁ䖭ѯण䆂াᰃ೼ḚᶊЁ㹿ҟ
㒡ˈᑊ≵᳝೼ᔧࠡ (), 㾘㣗Ё㹿ᅮНDŽ
Ƶ3&,ण䆂䖭ѯण䆂ᰃϢᑩሖ 3&, ᘏ㒓৘ᮍ䴶ⱘⳌѦ԰⫼ˈ߫Вᘏ㒓ҹঞ䌘⑤ߚ䜡DŽ
䖭ѯ᥹ষ೼ (), Ёҟ㒡ˈᑊϨᇚ೼ (), ੠Ḛᶊⱘᅲ⦄Ёᄬ೼DŽ
Ƶ,2 ῵ഫ˖䖭Ͼण䆂⫼Ѣᢑ䈵ⱘ໻ᆍ䞣ᄬ‫ټ‬䆒໛ˈ‫ܕ‬䆌ҷⷕ䖤㸠೼ (), ਃࡼ᳡ࡵ⦃๗Ё
䆓䯂䖭Ͼण䆂ˈᑊϨϡ⫼䆒໛㉏ൟ੠ㅵ⧚䆒໛᥻ࠊ఼ⱘ⡍⅞ⶹ䆚DŽ䖭ѯ᥹ষ೼ (), Ёҟ㒡ˈᑊ
Ϩᇚ೼ (), ੠Ḛᶊⱘᅲ⦄Ёᄬ೼DŽ
Ƶ⺕Ⲭ ,2䖭Ͼण䆂⫼Ѣᢑ䈵ⱘഫ䆓䯂 ,2 ῵ഫण䆂ˈᰃ᳈ࡴ᱂䗮ⱘ䭓ᑺ‫⿏أ‬䞣ण䆂DŽ
೎ӊ䋳䋷⏏ࡴℸण䆂ࠄӏԩ ,2 ῵ഫ᥹ষˈ䖭ѯ῵ഫᄬ೼≵᳝⺕Ⲭ ,2 ण䆂ⱘ㋏㒳ЁDŽ᭛ӊ
㋏㒳੠݊Ҫ⺕Ⲭ䆓䯂ҷⷕ߽⫼⺕Ⲭ ,2 ण䆂DŽ䖭ѯ᥹ষ೼ (), Ёҟ㒡ˈᑊϨᇚ೼ (), ੠Ḛᶊ
ⱘᅲ⦄Ёᄬ೼DŽ
Ƶㅔऩⱘ᭛ӊ㋏㒳˖䖭Ͼण䆂‫ܕ‬䆌ҷⷕ䖤㸠೼ (), ਃࡼⱘ᳡ࡵ⦃๗ˈҹ㦋ᕫ෎Ѣ᭛ӊ䆓䯂
䆒໛DŽㅔऩ᭛ӊ㋏㒳ण䆂ˈ⫼ѢᠧᓔϔϾ䆒໛ोᑊϨ䖨ಲϔϾ (),B),/( ⱘহᶘˈ⫼Ѣᦤկ೼䆒
໛ोϞ䆓䯂᭛ӊⱘ᥹ষDŽ䖭ѯ᥹ষ೼ (), Ёҟ㒡ˈᑊϨᇚ೼ (), ੠Ḛᶊⱘᅲ⦄Ёᄬ೼DŽ

ण䆂㒧ᵘВ՟

໻䞣ⱘ㒧ᵘण䆂ᄬ೼ѢᑇৄЁDŽ䖭ѯण䆂ࡳ㛑ህ‫ڣ‬೼৘⾡ᮍᓣ䇗⫼Ёⱘ݊Ҫण䆂DŽଃϔϡ
ৠⱘᰃˈ䖭ѯण䆂ᰃ⬅ᑇৄⱘḌᖗ᳡ࡵ䇗⫼ˈ✊ৢ݊ԭⱘ偅ࡼ੠ᑨ⫼⿟ᑣձ⃵䇗⫼䖭ѯḌᖗ᳡
ࡵҹ৘⾡ᮍᓣ೼ᑇৄϞ▔⌏䖤㸠DŽϔ㠀ᴹ䇈ˈ㒧ᵘण䆂ⱘଃϔ⫼᠋ᰃḌᖗ᳡ࡵⱘᴀ䑿DŽ㒧ᵘण
䆂೼乘ਃࡼ⦃๗ᯊˈ೼㋏㒳ЁଃϔⱘϢ⹀ӊ䖯㸠≳䗮ⱘᢑ䈵⹀ӊDŽ݊Ҫϔߛ೼᳡ࡵᇍӏԩ⹀ӊ
ⱘ䇋∖䛑Ӯ䗮䖛ϢḌᖗ᳡ࡵ≳䗮DŽ೒  䇈ᯢњ䖭⾡催ሖ⃵ⱘ䕃ӊ≳䗮DŽ



ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 10 1 Platform Software Flow Diagram



Ўњ᳈⏙Ἦഄ㸼ᯢˈ೼䖭ѯ㒧ᵘण䆂ⱘ䆒䅵੠䖤԰ᮍᓣˈ޴Ͼ݇䬂ⱘ՟ᄤˈᇚ㹿䇈ᯢ೼䖯
ϔℹⱘ㒚㡖ЁDŽ䇋⊼ᛣˈϟ䴶ⱘ՟ᄤϡᰃϔ༫ᅠᭈⱘ㒧ᵘण䆂ˈԚᰃৃҹ⫼ᴹ䇈ᯢϔѯ‫݌‬ൟⱘ
ࡳ㛑DŽᇍѢܼ༫䇈ᯢˈ䇋খ㗗Ⳍᑨⱘ ';( 㾘ḐDŽ

&38 ⱘᵘ䗴ण䆂

&38 ⱘᵘ䗴ण䆂೼ˠ˴ˡ෎⸔Ϟ⫼Ѣᢑ䈵ⱘ⡍⅞໘⧚఼ࡳ㛑DŽ䖭ࣙᣀ㓧ᄬ䖤⫼ˈਃ⫼੠⽕⫼
Ёᮁˈ䇗⫼Ёᮁ৥䞣੠ᓖᐌ৥䞣ˈ䇏‫ݙ‬䚼໘⧚఼ᅮᯊ఼ˈ໡ԡ໘⧚఼ˈᑊ⹂ᅮ໘⧚఼ⱘ乥⥛DŽ
䖭ϔण䆂ᖙ乏⬅ਃࡼ᳡ࡵ៪㗙䖤㸠ᯊⱘ ';( 偅ࡼ⿟ᑣѻ⫳ˈᑊϨৃ㛑া㛑೼ ';( ෎⸔Ϟˈ੠ѻ
⫳ⱘℸ㒧ᵘण䆂ⱘ ';( 偅ࡼ⿟ᑣϞ䖤㸠DŽ䗮䖛‫ܕ‬䆌⬅ϔϾᓩᇐ᳡ࡵ偅ࡼ⿟ᑣѻ⫳ण䆂ˈᕜᰒ✊ˈ
䖭⾡ᢑ䈵ण䆂ϡӮᣕ㓁ᄬ೼ˈᔧᑇৄⱘਃࡼ᳡ࡵ㹿ᓩᇐࠄϔϾਃࡼⳂᷛˈ՟བ᪡԰㋏㒳㗠㒜ℶ
ᯊDŽ
*&' ‫ݙ‬ᄬぎ䯈᯴ᇘᰃ೼ ';( ෎⸔Ϟ෎Ѣ +2% ߫㸼ⱘ‫ݙ‬ᆍ㹿߱ྟ࣪ⱘDŽ+2% ߫㸼ࣙ৿ϡৠⱘ‫ݙ‬
ᄬऎඳⱘࡳ㛑ˈԚᰃᅗϡࣙ৿ᅗӀᔧࠡⱘሲᗻDŽ';( 偅ࡼ⿟ᑣ䋳䋷㓈ᡸ໘⧚఼㛑໳ৃ䆓䯂ࠄᕫᔧ
ࠡ‫ݙ‬ᄬऎඳⱘሲᗻDŽ
䖭ᛣੇⴔѻ⫳ &38 ᵘ䗴ण䆂ⱘ ';( 偅ࡼ⿟ᑣᖙ乏䆄ᔩϟᇍ໘⧚఼㛑໳䆓䯂ࠄⱘ‫ݙ‬ᄬ᠔᳝ऎ
ඳⱘ߱ྟ⢊ᗕⱘሲᗻⱘ *&' ‫ݙ‬ᄬぎ䯈᯴ᇘDŽ';( ᳡ࡵߑ᭄ 6HW0HPRU\6SDFH$WWULEXWHV ‫ܕ‬䆌ׂ
ᬍ‫ݙ‬ᄬ㣗ೈⱘሲᗻDŽ';( ᳡ࡵߑ᭄ 6HW0HPRU\6SDFH$WWULEXWHV 䗮䖛 &38 ᵘ䗴ण䆂ⱘ᳡ࡵߑ᭄
6HW0HPRU\$WWULEXWHV ᴹᠻ㸠DŽ
Ўњ߱ྟ࣪೼ *&' ⱘ‫ݙ‬ᄬぎ䯈᯴ᇘⱘሲᗻ⢊ᗕˈ';( 偅ࡼ⿟ᑣѻ⫳ⱘ &38 ᵘ䗴ण䆂ᖙ乏䇗⫼
';( ᳡ࡵ⿟ᑣ 6HW0HPRU\6SDFH$WWULEXWHV˄˅Ӵ䗦ᔧࠡⱘሲᗻЎ໘⧚఼㛑໳ৃ㾕ⱘ᠔᳝ϡৠⱘ
‫ݙ‬ᄬऎඳDŽ䖭ড䖛ᴹᇚӮಲ䇗 &38 ⱘᵘ䗴ण䆂ⱘ 6HW0HPRU\$WWULEXWHV˄˅᳡ࡵ⿟ᑣˈᑊϨ㞾Ң
೼ ';( ෎⸔ϞӮা㽕∖ᇍ‫ݙ‬ᄬऎඳⱘሲᗻ㹿䆒㕂Ўᔧࠡⱘ䆒㕂ˈ᠔᳝ⱘ䖭ѯ䇗⫼ᖙ乏䖨ಲ
(),B68&&(66DŽ೼ *&' ‫ݙ‬ᄬぎ䯈᯴ᇘЁᔎ䖿ᇚᔧࠡⱘሲᗻ㹿䆒㕂Ўᔧࠡⱘ䆒ᅮDŽ೼䖭ѯ߱ྟ࣪ᅠ
៤ҹৢˈϟϔℹ䇗⫼ ';( ᳡ࡵ⿟ᑣ *HW0HPRU\6SDFH0DS˄˅ᇚℷ⹂ഄᰒ⼎᠔᳝ⱘ‫ݙ‬ᄬऎඳⳂࠡⱘ
ሲᗻDŽℸ໪ˈҞৢӏԩ䇗⫼ ';( ᳡ࡵ⿟ᑣ 6HW0HPRU\6SDFH$WWULEXWHV˄˅ᇚӮձ⃵䇗⫼ &38 ⱘ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᵘ䗴ण䆂ˈ᠔ҹᇚӮⳟࠄབᵰ䖭ѯሲᗻ㹿ׂᬍˈ*&' ‫ݙ‬ᄬぎ䯈᯴ᇘᇚӮⳌᑨⱘ㹿᳈ᮄDŽ
&38 ⱘᵘ䗴ण䆂Փ⫼ϟ䴶ⱘण䆂ᅮН˖
Protocol Interface Structure
typedef struct _EFI_CPU_ARCH_PROTOCOL {
EFI_CPU_FLUSH_DATA_CACHE FlushDataCache;
EFI_CPU_ENABLE_INTERRUPT EnableInterrupt;
EFI_CPU_DISABLE_INTERRUPT DisableInterrupt;
EFI_CPU_GET_INTERRUPT_STATE GetInterruptState;
EFI_CPU_INIT Init;
EFI_CPU_REGISTER_INTERRUPT_HANDLER
RegisterInterruptHandler;
EFI_CPU_GET_TIMER_VALUE GetTimerValue;
EFI_CPU_SET_MEMORY_ATTRIBUTES SetMemoryAttributes;
UINT32 NumberOfTimers;
UINT32 DmaBufferAlignment;
} EFI_CPU_ARCH_PROTOCOL;
ƵFlushDataCacheࠋᮄ㣗ೈ‫ⱘݙ‬໘⧚఼ⱘ᭄᥂㓧ᄬDŽབᵰ໘⧚఼ϡࣙ৿᭄᥂㓧ᄬˈ៪㗙
᭄᥂㓧ᄬᰃᅠܼϔ㟈ⱘˈ䙷М䖭Ͼࡳ㛑Ӯ䖨ಲ(),B68&&(66DŽབᵰ໘⧚఼ϡᬃᣕࠋᮄ೼᭄᥂㓧ᄬ
Ёഄഔ㣗ೈˈ䙷М᭄᥂㓧ᄬЁⱘܼ䚼ᖙ乏㹿ࠋᮄDŽ䖭ࡳ㛑㹿䇗⫼೼ḍḹ,2ᢑ䈵ⱘ'0$᪡԰ࠋ
ᮄ᭄᥂㓧ᄬDŽ
ƵEnableInterruptü໘⧚఼ਃ⫼Ёᮁ໘⧚DŽ㾕(QDEOH,QWHUUXSW ࡳ㛑ᦣ䗄DŽ䖭Ͼࡳ㛑㹿
%RRW6HUYLFH5DLVH73/ ੠5HVWRUH73/ ߑ᭄䇗⫼DŽ
ƵDisableInterruptü䗮䖛໘⧚఼⽕⫼Ёᮁ໘⧚DŽ㾕'LVDEOH,QWHUUXSW ࡳ㛑ᦣ䗄DŽ䖭Ͼࡳ
㛑㹿%RRW6HUYLFH5DLVH73/ ੠5HVWRUH73/ 䇗⫼DŽ
ƵGetInterruptStateüᕫࠄ䆹໘⧚఼ⱘᔧࠡⱘЁᮁ⢊ᗕDŽ
ƵInitü໘⧚఼ѻ⫳ϔϾ,1,7ЁᮁDŽℸࡳ㛑㹿⫼Ѣḍ᥂ᣛᅮⱘਃࡼ䏃ᕘ䞡㕂㒧ᵘण䆂DŽབ
ᵰ໘⧚఼ϡ㛑ҹ㓪⿟ᮍᓣ⫳៤ϔϾ≵᳝໪䚼⹀ӊᐂࡽⱘ,1,7ˈ䙷Мℸࡳ㛑䖨ಲ
(),B816833257('DŽ
ƵRegisterInterruptHandlerü೼໘⧚఼ⱘЁᮁ৥䞣㸼ЁᶹᡒϔϾⳌᑨⱘЁᮁ᳡ࡵ䖯⿟DŽℸ
ࡳ㛑‫݌‬ൟⱘ㹿䇗⫼೼䅵ᯊ఼㒧ᵘण䆂೼㋏㒳Ё䇗⫼䅵ᯊ఼ЁᮁᯊDŽᅗг㛑໳೼ᶹᡒ䇗⫼ᓖᐌ৥
䞣㸼ᯊ㹿䇗⫼DŽ
ƵGetTimerValueü䖨ಲϔϾ໘⧚఼‫ݙ‬䚼ⱘ䅵ᯊ఼ⱘؐDŽ
ƵSetMemoryAttributes 
ƵNumberOfTimersü㒭ϔϾ໘⧚఼Ёৃ⫼ⱘ䅵఼᭄ⱘ᭄䞣DŽ೼&38㒧ᵘण䆂㹿ᅝ㺙Пৢˈ
೼ℸᄫ↉ЁⱘؐᰃϔϾᐌ᭄ˈϡ㛑ׂᬍDŽ᠔᳝Փ⫼㗙ᖙ乏㾚ᅗЎা䇏ᄫ↉DŽ
ƵDmaBufferAlignmentҹᄫ㡖Ўऩԡᦤկߚ䜡'0$㓧‫ކ‬ऎᥦ߫᠔䳔ⱘ໻ᇣDŽ䖭ᰃ೼ᑇৄ
Ё‫݌‬ൟⱘ᳔໻ⱘ᭄᥂㓧ᄬ㸠ⱘ໻ᇣDŽ䗮䖛೼ᑇৄЁ᠔᳝⦄ᄬⱘ㓧ᄬЁᶹᡒ䖭Ͼ᭄᥂㓧ᄬ㸠ⱘ໻
ᇣᑊϨ䖨ಲ᳔໻ؐ㗠‫އ‬ᅮℸؐDŽ䖭ѯ㹿ḍḹ,2ᢑ䈵ⱘण䆂Փ⫼ˈҹֱ䆕≵᳝Ͼ'0$㓧‫ކ‬ऎ݅ѿ
ৠϔϾ㓧ᄬ㸠DŽ䖭ϾؐᰃϔϾᐌ䞣ˈ೼ᅝ㺙ᅠ&38㒧ᵘण䆂ҹৢᰃϡ㛑㹿ᬍবⱘDŽ᠔᳝ⱘՓ⫼㗙
ᖙ乏㾚ᅗЎা䇏ᄫ↉DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᅲᯊᯊ䩳㒧ᵘण䆂

ᅲᯊᯊ䩳㒧ᵘण䆂Ў䆓䯂ϔϾ㋏㒳ⱘᅲᯊᯊ䩳⹀ӊᦤկ᳡ࡵDŽ䖭ϔण䆂ᖙ乏ᰃ೼䖤㸠';(偅
ࡼ⿟ᑣᯊ㹿ѻ⫳ˈᑊϨৃ㛑া㛑⬅';(෎⸔ϞӮ䇗⫼DŽ
䖭ϔण䆂ᖙ乏ᰃϔϾ䖤㸠ⱘˠ˴ˡ偅ࡼ⿟ᑣѻ⫳DŽ䖭Ͼ偅ࡼ⿟ᑣ䋳䋷߱ྟ࣪೼(),䖤㸠ᯊⱘ
᳡ࡵ㸼ⱘಯϾ乚ඳ*HW7LPH 6HW7LPH *HW:DNHXS7LPH DQG6HW:DNHXS7LPH DŽ䇋খ
䯙Ā㄀ゴᯊ᳡ࡵⱘ᳝݇䖭ѯ᳡ࡵⱘ㒚㡖āDŽ೼(),䖤㸠ᯊ᳡ࡵ㸼ЁⱘಯϾ乚ඳᏆ㒣㹿߱ྟ࣪ҹ
ৢˈ偅ࡼ⿟ᑣᖙ乏೼ϔϾᮄⱘᣛ৥ぎ᥹ষⱘহᶘϞᅝ㺙ᅲᯊᯊ䩳ᵘ䗴ण䆂DŽ䖭ϔण䆂ⱘᅝ㺙䗮
ⶹ';(䰊↉Ϣᅲᯊᯊ䩳Ⳍ݇ⱘ᳡ࡵৃҹᑨ⫼ˈ㗠Ϩ೼';(෎⸔Ϟᖙ乏᳈ᮄ(),䖤㸠ᯊ᳡ࡵ㸼ⱘԡ
&5&DŽ

䅵ᯊ఼ᵘ䗴ण䆂

䅵ᯊ఼ᵘ䗴ण䆂ᦤկⱘ᳡ࡵˈࣙᣀ߱ྟ࣪ϔϾ਼ᳳᗻ䅵ᯊ఼Ёᮁˈᑊᄬ‫ټ‬ϔϾЎ↣⃵䅵ᯊ
఼Ёᮁ䇗⫼ⱘহᶘDŽᅗгৃҹᦤկ᳡ࡵᴹ䇗ᭈ䅵ᯊ఼Ёᮁ਼ᳳⱘ໻ᇣDŽᔧϔϾ䅵ᯊ఼Ёᮁথ⫳
ᯊˈ䖭Ͼহᶘ䆄ᔩҢϞ⃵থ⫳䅵ᯊ఼Ёᮁࠄ䖭⃵ⱘᯊ䯈䞣DŽ䆹ण䆂ᠧᓔՓ⫼6HW7LPHU˄˅ਃࡼ
᳡ࡵDŽ䖭ϔण䆂ᖙ乏⬅ਃࡼ᳡ࡵѻ⫳៪䖤㸠ⱘ';(偅ࡼ⿟ᑣˈৃ㛑া㛑೼';(෎⸔Ϟ䖤⫼ˈ៪㗙
';(偅ࡼ⿟ᑣѻ⫳݊ᅗⱘ';(䰊↉ⱘ㒧ᵘण䆂DŽ䗮䖛‫ܕ‬䆌ϔϾ⬅ᓩᇐ᳡ࡵ偅ࡼ఼ѻ⫳ⱘण䆂ˈᕜ
ᰒ✊ˈ䖭⾡ᢑ䈵ण䆂ϡӮᣕ㓁ᄬ೼ˈᔧᑇৄⱘਃࡼ᳡ࡵ㹿ᓩᇐࠄϔϾਃࡼⳂᷛˈ՟བ᪡԰㋏㒳DŽ
Protocol Interface Structure
typedef struct _EFI_TIMER_ARCH_PROTOCOL {
EFI_TIMER_REGISTER_HANDLER RegisterHandler;
EFI_TIMER_SET_TIMER_PERIOD SetTimerPeriod;
EFI_TIMER_GET_TIMER_PERIOD GetTimerPeriod;
EFI_TIMER_GENERATE_SOFT_INTERRUPT GenerateSoftInterrupt;
} EFI_TIMER_ARCH_PROTOCOL;
ƵRegisterHandler(ᆘᄬ఼হᶘ üüᆘᄬ఼䆄ᔩϔϾ↣⃵থ⫳䅵ᯊ఼Ёᮁ䇗⫼ⱘহᶘDŽ䅵
ᯊ఼਼ᳳᅮНЎ↣⃵䅵ᯊ఼ЁᮁП䯈᳔ᇣⱘᯊ䯈Ꮒˈ᠔ҹ䅵ᯊ఼਼ᳳгᰃ↣⃵䇗⫼ᆘᄬ఼হᶘ
П䯈ⱘ᳔ᇣᯊ䯈ᏂDŽ
ƵSetTimerPeriod(䆒㕂䅵ᯊ఼਼ᳳ)üü䆒㕂䅵ᯊ఼ⱘЁᮁᳳᰃҹ㒇⾦ЎऩԡⱘDŽ䖭
Ͼࡳ㛑ᰃৃҹ䗝ᢽⱘᑊϨৃ㛑䖨ಲϔϾ(),B816833257('DŽབᵰ䖭Ͼࡳ㛑ᰃ㹿ᬃᣕⱘˈ䙷М䅵ᯊ
఼਼ᳳಯ㟡Ѩܹ㟇᳔᥹䖥ᬃᣕⱘ䅵ᯊ఼ᯊᳳDŽ
ƵGetTimerPeriod(পᕫ䅵ᯊ਼ᳳ üüᕫࠄ䖭Ͼ䅵ᯊ਼ᳳᰃҹ㒇⾦ЎऩԡⱘDŽ
ƵGenerateSoftInterrupt(ѻ⫳䕃㒜ッ üüѻ⫳ϔϾ䅵ᯊ఼䕃㒜ッˈ῵ӓ䅵ᯊ఼Ёᮁⱘѻ
⫳DŽབᵰ䅵ᯊ఼ЁᮁᏆ೼ϔ↉ᯊ䯈‫ݙ‬㹿ሣ㬑њ䙷М䖭Ͼ᳡ࡵৃҹ⫼ᴹ䇗⫼ᆘᄬ఼হᶘDŽ

໡ԡᵘ䗴ण䆂

໡ԡᵘ䗴ण䆂ᦤկ໡ԡ᠔䳔ⱘ᳡ࡵᑇৄDŽ䖭ϔण䆂ᖙ乏⬅䖤㸠ᯊⱘ';(偅ࡼ⿟ᑣѻ⫳ˈᑊϨ
ৃ㛑া㛑೼';(෎⸔Ϟ䖤⫼DŽ䖭Ͼ偅ࡼ⿟ᑣ䋳䋷߱ྟ࣪(),䖤㸠ᯊ᳡ࡵ㸼ⱘ5HVHW6\VWHP 乚ඳDŽ
೼(),䖤㸠ᯊ᳡ࡵ㸼Ёⱘ䖭Ͼ乚ඳᏆ㒣㹿߱ྟ࣪ҹৢˈ偅ࡼ⿟ᑣᖙ乏೼ϔϾᮄⱘᣛ৥ぎ᥹ষⱘহ
ᶘϞᅝ㺙໡ԡᵘ䗴ण䆂DŽ䖭ϔण䆂ⱘᅝ㺙䗮ⶹ';(䰊↉Ϣ໡ԡⳌ݇ⱘ᳡ࡵৃҹᑨ⫼ˈ㗠Ϩ೼';(
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

෎⸔Ϟᖙ乏᳈ᮄ(),䖤㸠ᯊ᳡ࡵ㸼ⱘԡ&5&DŽ
䗝ᢽᓩᇐ䆒໛ᵘ䗴ण䆂˖
ᓩᇐ䆒໛䗝ᢽᵘ䗴ण䆂ˈᇚ';(ⱘ᥻ࠊ䕀⿏ࠄ⬅᪡԰㋏㒳៪㗙㋏㒳Ꮉ‫ˈࠊ᥻݋‬ℷབ೒ⱘ
䇈ᯢDŽ䖭ϔण䆂ᖙ乏⬅ਃࡼ᳡ࡵ៪㗙䖤㸠ᯊⱘ';(偅ࡼ⿟ᑣѻ⫳ˈᑊϨৃ㛑া㛑೼';(෎⸔Ϟ䖤
⫼DŽ䗮䖛‫ܕ‬䆌ϔϾ⬅ᓩᇐ᳡ࡵ偅ࡼ఼ѻ⫳ⱘण䆂ˈᕜᰒ✊ˈ䖭⾡ᢑ䈵ण䆂ϡӮᣕ㓁ᄬ೼ˈᔧᑇ
ৄⱘਃࡼ᳡ࡵ㹿ᓩᇐࠄϔϾਃࡼⳂᷛˈ՟བ᪡԰㋏㒳DŽ
ᔧℸण䆂⫼ᴹ䆓䯂㋏㒳㽕∖ᶤϾਃࡼⱘ䆒໛ᯊˈབᵰℸᯊ䖬≵᳝䎇໳ⱘ偅ࡼ⿟ᑣ㹿߱ྟ࣪
དˈ䙷М䖭‫ܓ‬ण䆂ᇚӮ⏏ࡴ偅ࡼ⿟ᑣࠄ䇗ᑺⱘ䯳߫ЁᑊϨᇚ䖨ಲ᥻ࠊᴗಲࠄ䖭Ͼ䇗ᑺ⿟ᑣDŽϔ
ᮺ䖭Ͼ㹿㽕∖ਃࡼⱘ䆒໛ৃҹ⫼њˈ䙷М䖭Ͼᓩᇐਃࡼ䆒໛ৃҹ⫼ᴹ㺙䕑ᑊϨ䇗⫼᪡԰㋏㒳៪
㗙ϔϾ㋏㒳ᅲ⫼⿟ᑣDŽ

೒ 10 2 Basic Dispatch and BDS Software Flow



3URWRFRO,QWHUIDFH6WUXFWXUH
W\SHGHIVWUXFWB(),B%'6B$5&+B35272&2/^
(),B%'6B(175<(QWU\
`(),B%'6B$5&+B35272&2/
(QWU\䖭ᰃᣛ৥ᓩᇐ䆒໛䗝ᢽⱘܹষDŽ㾕(QWU\ ߑ᭄ࡳ㛑ᦣ䗄DŽ䖭Ͼߑ᭄䇗⫼≵᳝ӏԩ
খ᭄ˈᑊϨᅗⱘ䖨ಲؐгৃҹ㹿ᗑ⬹DŽབᵰᅗ᳝䖨ಲؐˈ䙷М䖭Ͼ䇗ᑺ⿟ᑣᖙ乏䞡ᮄ㹿䇗⫼ˈ
བᵰᅗ≵᳝䖨ಲؐˈ䖭ᰃ᪡԰㋏㒳៪㗙㋏㒳ᅲ⫼⿟ᑣᇚӮ㹿䇗⫼DŽ

ব䞣㒧ᵘण䆂

ℸব䞣㒧ᵘण䆂ᰃЎ᳡ࡵᦤկ᠔㽕∖ᕫࠄⱘ੠䆒㕂ⱘ⦃๗ব䞣DŽ䖭ϔण䆂ᖙ乏⬅䖤㸠ᯊⱘ
';(偅ࡼ⿟ᑣѻ⫳ˈᑊϨৃ㛑೼';(෎⸔Ϟ㹿䖤⫼DŽ䖭Ͼ偅ࡼ⿟ᑣ䋳䋷߱ྟ࣪(),䖤㸠ᯊ᳡ࡵ㸼ⱘ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

*HW9DULDEOH *HW1H[W9DULDEOH1DPH ੠6HW9DULDEOH ϝϾ乚ඳDŽ䇋খ䯙㄀ゴĀব䞣᳡


ࡵā᳝݇䖭ѯ᳡ࡵⱘ䆺ᚙDŽ೼(),䖤㸠ᯊ᳡ࡵ㸼Ёⱘ䖭ϝ乚ඳᏆ㒣㹿߱ྟ࣪ҹৢˈ偅ࡼ⿟ᑣᖙ乏
೼ϔϾᮄⱘᣛ৥18//ⱘহᶘϞᅝ㺙ব䞣㒧ᵘण䆂DŽ䖭Ͼᅝ㺙ⱘण䆂䗮ⶹ೼';(෎⸔Ϟা䇏ⱘ੠ৃ
বⱘ⦃๗ব䞣Ⳍ݇ⱘ᳡ࡵৃҹᑨ⫼ˈᑊϨ೼';(෎⸔Ϟᖙ乏᳈ᮄ(),䖤㸠ᯊ᳡ࡵ㸼Ўԡ&5&DŽⳈ
ࠄℸण䆂੠ৃ‫ݭ‬ব䞣㒧ᵘण䆂㹿ᅝ㺙ˈ䖭ᯊܼ䚼ⱘ⦃๗ব䞣᳡ࡵᠡ㛑ᑨ⫼DŽ';(偅ࡼ⿟ᑣ䳔㽕া
䇏䆓䯂៪䇏‫ݭ‬䆓䯂ৃবⱘ⦃๗ব䞣ᯊˈᖙ乏೼㸼䖒ᓣЁձ䌪䖭ѯ㒧ᵘण䆂DŽ';(偅ࡼ⿟ᑣ䳔㽕
‫ݭ‬䆓䯂ϡৃবⱘ⦃๗ব䞣ᯊˈᖙ乏೼㸼䖒ᓣЁձ䌪ৃ‫ݭ‬ব䞣㒧ᵘण䆂DŽ

ⳟ䮼⢫䅵ᯊ఼㒧ᵘण䆂

ⳟ䮼⢫䅵ᯊ఼㒧ᵘण䆂⫼Ѣⳟ䮼⢫䅵ᯊ఼⿟ᑣˈᑊϨᔧᓩ⫼ⳟ䮼⢫䅵ᯊ఼ᯊᄬ‫ټ‬ϔϾহᶘDŽ
䖭ϔण䆂ᖙ乏⬅ਃࡼ᳡ࡵ៪㗙䖤㸠ᯊⱘ';(偅ࡼ⿟ᑣѻ⫳ˈᑊϨৃ㛑া㛑೼';(෎⸔Ϟˈ៪㗙ѻ
⫳݊ᅗ';(㒧ᵘण䆂ⱘ';(偅ࡼ⿟ᑣϞ䖤㸠DŽᔧⳟ䮼⢫䅵ᯊ఼㒜ℶᯊˈབᵰϔϾᑇৄˈᏠᳯᠻ㸠
⡍ᅮᑇৄⱘ㸠Ўᯊˈ䙷Мࣙ৿ᠻ㸠%'6㒧ᵘण䆂ⱘ';(偅ࡼ⿟ᑣᇚӮՓ⫼ℸण䆂ⱘ
5HJLVWHU+DQGOHU ᳡ࡵDŽ
ℸण䆂Ўᠻ㸠ਃࡼ᳡ࡵ6HW:DWFKGRJ7LPHU ᦤկ᠔䳔∖ⱘ᳡ࡵDŽᅗᦤկⱘ᳡ࡵ⫼ᴹ䆒㕂೼
ਃࡼⳟ䮼⢫䅵ᯊ఼Пࠡㄝᕙⱘᯊ䯈䞣ˈᅗгᦤկ᳡ࡵ⫼ᴹᄬ‫ټ‬ᔧਃࡼⳟ䮼⢫䅵ᯊ఼ᯊ䇗⫼ⱘϔ
ϾহᶘDŽℸण䆂ৃҹ䗮䖛Փ⫼џӊ੠䅵ᯊ఼఼ਃࡼ᳡ࡵᴹᠻ㸠ⳟ䮼⢫䅵ᯊ఼ˈгৃҹՓ⫼㞾ᅮ
Н⹀ӊᠻ㸠ⳟ䮼⢫䅵ᯊ఼DŽᔧⳟ䮼⢫䅵ᯊ఼㹿ਃ⫼ˈ䙷М᥻ࠊᴗᇚѸ㒭Пࠡ㹿ᄬ‫ⱘټ‬হᶘDŽབ
ᵰПࠡ≵᳝ᄬ‫ټ‬হᶘˈ៪㗙ᄬ‫ⱘټ‬হᶘ㹿䖨ಲˈ䙷М㋏㒳ᇚ㽕䇗⫼䖤㸠ᯊ᳡ࡵ⿟ᑣ5HVHW6\VWHP
ᴹ໡ॳDŽ
Protocol Interface Structure
typedef struct _EFI_WATCHDOG_TIMER_ARCH_PROTOCOL {
EFI_WATCHDOG_TIMER_REGISTER_HANDLER RegisterHandler;
EFI_WATCHDOG_TIMER_SET_TIMER_PERIOD SetTimerPeriod;
EFI_WATCHDOG_TIMER_GET_TIMER_PERIOD GetTimerPeriod;
} EFI_WATCHDOG_TIMER_ARCH_PROTOCOL;
RegisterHandler-ᄬ‫ټ‬হᶘˈᔧਃ⫼ⳟ䮼⢫䅵ᯊ఼ᯊˈᄬ‫ټ‬㹿䇗⫼ⱘϔϾহᶘDŽ
SetTimerPeriod䆒㕂䅵ᯊ఼਼ᳳˈ䆒㕂೼ਃ⫼ⳟ䮼⢫䅵ᯊ఼Пࠡㄝᕙⱘᯊ䯈ҹ㒇⾦Ў
ऩԡDŽབᵰ䆒㕂ⱘࡳ㛑㹿ᬃᣕˈ䙷Мⳟ䮼⢫䅵ᯊ఼਼ᳳ㹿ಯ㟡Ѩܹࠄ㹿ᬃᣕⱘ᳔᥹䖥ⱘⳟ䮼⢫
䅵ᯊ఼਼ᳳDŽ
GetTimerPeriodᕫࠄ䅵ᯊ఼਼ᳳˈপᕫ೼ਃ⫼ⳟ䮼⢫䅵ᯊ఼Пࠡˈ㋏㒳ᇚ㽕ㄝᕙⱘᯊ䯈
ҹ㒇⾦ЎऩԡDŽ

᳾ᅠ3DJH









ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀ 11 ゴ

ֵᙃӴ䗦
᳔㒜ˈ⾡ᄤ⾡ϟњˈ೼▇໻߽ѮⱘೳഄϞߎ⦄њⳈ㒓੠⧚ᗻⱘ᳆㒓DŽⳈ㒓ⱘࡲ݀ᅸ੠ᮙ佚DŽ催䗳䏃ᕫ᳆㒓
੠℠࠻䰶ⱘᑇ⒥ⱘᓻ㒓DŽ᳔䫭㓐໡ᴖ㗠জ㊒཭ⱘ޴ԩᅲԧDŽ
—Michael Frayn

ᴀゴЏ㽕݇Ѣ෎⸔ᶊᵘ䚼ߚˈ݇Ѣ)UDPHZRUNৠㄝⱘㅵ䘧ˈ⬉࡯ˈᑳ᭭੠ֵᙃ㋏㒳Ⲭ㒩៤ⱘ
⦄ҷ࣪Ϫ⬠DŽϢкЁ݊Ҫゴ㡖ϡৠⱘᰃˈϡৠⱘᵘ䗴ᰃ⬅ὖᗉ㒘៤ⱘˈ㗠ϡᰃࡳ㛑DŽҪӀгᢹ
᳝⬅⦃๗䳔∖᠔ѻ⫳ⱘⳌԐⱘԧ㋏DŽҪӀП䯈ⱘϡৠ೼Ѣ㹿ਞⶹⱘ䳔∖੠㹿໘⧚ⱘ᭄᥂ⱘऎ߿˖
໻䚼ߚ᠓ሟ䛑᳝⬉䏃੠∈ㅵҟܹˈԚᰃᇚϸ㗙⏋೼ϔ䍋᳝߭ᆇ᮴߽DŽ
ᴀゴᇚ䅼䆎ⱘᵘ䗴ࣙᣀ˖
ব䞣ˈ԰Ў㋏㒳᭄᥂ⱘ䴲ᯧ᣹থᄬ‫ټ‬੠Ϣ᪡԰㋏㒳䗮ֵⱘ䗮䘧DŽ
ᦵ᠟ऩ‫ ܗ‬+2%V 3(,ࠄ';(䕀ᤶⱘЏ㽕ㅵ䘧DŽ
᭄᥂Ёᖗˈ԰Ў᱖ᄬ⫼Ѣ㌃⿃੠Ӵ᪁᭄᥂ˈЏ㽕ᰃ乘ᳳⱘ໪䚼⍜㗫DŽ
ҎᴎѸѦᶊᵘˈ⫼Ѣ⫼᠋੠݊Ҫᵘ䗴䜡㕂῵ഫⱘ䲚Ёㅵ⧚DŽ

ⳌԐ੠Ꮒᓖ
䖭䞠᠔ᦣ䗄ⱘᵘ䗴䛑᳝ҹϟ⡍ᗻ
䛑ᰃ᭄᥂ㅵ䘧DŽৃ䇗⫼᥹ষ˄↨བण䆂៤ਬߑ᭄˅ᴀ䑿া㛑԰Ўਃ⫼᭄᥂Ӵ䕧੠῵ഫ䯈ⱘ
ㅵ⧚DŽ೼Ӵ䕧䖛⿟Ё≵᳝໾໮ⱘ᭄᥂㓪䕥DŽҪӀৃ㛑ᬃᣕ݊Ҫᵘ䗴ᴹ‫خ‬㓪䕥ࡼ԰ˈ㾚ᵘ䗴㗠ᅮDŽ
䖭ℷབ⬉࡯䚼䮼ӮЎњᦤ催ᬜ⥛ˈҢথ⬉ॖࠄԣᅙӴ䕧䗨Ёᬍব⬉य़DŽ䛑Ў᭄᥂ᕜདഄᅮН݊
ѻ⫳㗙੠Փ⫼㗙DŽ䖭ᛣੇⴔˈ՟བˈⳌ݇ⱘ䏃⬅䗝ᢽֵᙃⱘᦤկ㛑໳ՓՓ⫼㗙⏙Ἦഄ⹂ᅮ᭄᥂
ࣙⱘ䗖⫼ᗻDŽ
᳝ࡽѢ‫ޣ‬ᇥ῵ഫП䯈ⱘ㑺ᴳ࡯DŽ՟བ, ‫ݙ‬ᄬⱘ߱ྟ࣪PEIMDŽ೼݊Ꮉ԰ⱘ䏃ᕘЁˈӮথ⦄݇
Ѣৃ⫼ⱘ‫ݙ‬ᄬᦦῑ੠㋏㒳Ё‫ݙ‬ᄬ㉏ൟⱘ᳝⫼ⱘֵᙃDŽ≵᳝ӏԩ݊Ҫ῵ഫՓ䖭ѯ᭄᥂ব៤ৃ⫼ⱘˈ
԰Ў䆺㒚Ⳃᔩⱘϔ䚼ߚᇍ㋏㒳ㅵ⧚ਬᴹ䇈ˈᰃ䴲ᐌᅱ䌉ⱘDŽՓ⫼HOBˈPEIMৃҹ㓽ᇣࠄDXEᏂ
䎱DŽՓ⫼㗙ৃҹҢDXEӴ䕧᭄᥂ࠄ᭄᥂ЁᖗDŽ᭄᥂Ёᖗᇕ㺙ⱘՓ⫼㗙ৃҹ䗮䖛᠔䳔㽕ⱘ᪡԰㋏
㒳៪乘᪡԰㋏㒳᥹ষᦤկ᭄᥂DŽ
᳝ࡽѢᬒᆑѻ⫳㗙੠Փ⫼㗙᠔ᖙ乏䙉ᅜⱘᷛ‫ޚ‬DŽ↨བ‫ݙ‬ᄬ߱ྟ࣪PEIMˈ䖭ѯ᭄᥂㛑໳㹿ӏ
ԩⳌѦᢉ㾺ⱘ㋏㒳ㅵ⧚ᷛ‫ޚ‬᠔Փ⫼DŽ‫ݙ‬ᄬPEIM≵᳝ᖙ㽕ⶹ䘧᳔㒜ⱘՓ⫼㗙ᰃIPMIˈSMBIOS៪
㗙ϔѯᮄⱘ᥹ষDŽ
䛑㛑໳ℷᐌᎹ԰㗠ϡ䳔㽕䇗⫼෎Ѣ෎⸔ण䆂ⱘ᳡ࡵDŽPEIЁⱘ῵ഫ੠ৢ䴶ⱘ῵ഫৃҹ߽⫼Ў
䖭Ͼ䰊↉ᅮНⱘ᥹ষ㗠ঞᮽഄ䖤㸠DŽ೼䆌໮ᚙ‫މ‬ϟˈህ䲒ҹ߯ᓎ᳡ࡵˈᑊϨ߽⫼෎⸔ण䆂ˈ䖭
Ͼሲᗻ↨䕗ᆍᯧ⍜༅DŽ঺ϔᮍ䴶ˈ ҡ✊ᰃ䴲ᐌ䞡㽕ⱘDŽᮽᳳⱘDXE偅ࡼ㛑໳ᦤկ݊䜡㕂ֵᙃ᭄
᥂㒭HII᭄᥂ᑧDŽ՟བˈ 偅ࡼ㛑໳ᦤկ᭄᥂ˈӬ‫ܜ‬Ѣ᥹ফᓔྟ䇋∖DŽϔᮺ偅ࡼⱘ⹂ᬊࠄᓔྟ䇋∖
ᑊ߫В݊Ⳍ݇⹀ӊˈᅗৃҹ᳈ᮄ䜡㕂ֵᙃᴹᦣ䗄DŽ݇Ѣ೼䆒䅵ⱘ䚼ߚ⹂ᅲ䳔㽕䭓䖰㗗㰥ˈ᮴䆎

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᰃ䗮⫼ⱘ៪᳈‫݋‬ԧⱘ⠜ᴀ䅽᳔㒜⫼᠋᳈㛑໳⧚㾷DŽ
䛑ᰃԡ㕂⣀ゟˈϡফऎඳ䰤ࠊDŽ᠔ᦤկⱘ᭄᥂䛑ৃҹ೼‫ݙ‬ᄬ৘Ͼԡ㕂⿏ࡼDŽড䖛ᴹˈ䖭г
ᕅડࠄ᠔㽕Ӵ䕧ⱘ᭄᥂㒧ᵘ੠⿟ᑣ᥹ষϢ偠䆕⌟䆩ϡ㛑໳ᠻ㸠ⱘ䳔∖DŽᇸ݊ᰃᣛ䩜ⱘᔶᓣ
MY_STRUCT *MyPointer;
೼ৠϔ᭄᥂㒧ᵘЁҢϔϾ⚍ࠄ঺ϔϾ⚍ᰃ㹿⽕ℶⱘDŽ䆹ᣛ䩜Ӯবᕫ᮴ᬜབᵰ䆹㒧ᵘ㹿⿏ࠄ
঺ϔऎඳDŽⳌডⱘˈ㒧ᵘᑨ䆹Փ⫼㛑໳㹿ᣋ䋱ⱘ㞾Ⳍ݇ⱘ‫⿏أ‬੠䭓ᑺऎඳDŽ䖭Ͼ㽕∖г䆌᳝ѯ
ϡৃᗱ䆂DŽϔϾHOBܹষᦣ䗄ⱘᰃᣛ䩜ᔶᓣⱘRAMⱘ乊ッˈ䖭ϔ㉏ᣛ䩜ᰃ‫ܕ‬䆌ⱘ಴Ўᅗᣛ৥ⱘ
ᰃᴀ᭄᥂㒧ᵘ໪ⱘϡৃবⱘԡ㕂DŽ
᮶✊䖭ѯᵘ䗴䛑‫݋‬᳝䖭М໮ⱘ݅ৠ⚍ˈЎҔМҪӀ≵᳝㹿ᭈড়ࠄϔϾऩ⣀ⱘᶊᵘਸ਼˛ᔧ✊ᄬ೼
ϔѯ⧚⬅ˈ䖭໻㟈Ϟ੠ϔϾ໻ජᏖ䞠ЎҔМϡℶϔ⾡ऩϔ㉏ൟⱘ⠽⧚෎⸔䆒ᮑⱘ⧚⬅Ꮒϡ໮DŽ
᳝ϔѯग़৆಴㋴DŽ㞾ҢEFI᳔߱ⱘ䆒䅵ˈĀব䞣āᏆ㒣៤ЎEFI㾘㣗ⱘϔ䚼ߚDŽ঺໪ⱘᵘ䗴ᰃЎ
њFramework㗠থᯢⱘˈ䯈᥹ⱘ㸼⦄೼EFIЁ៪㗙ḍᴀϡDŽ໻䚼ߚ᱂䘡Փ⫼ⱘĀব䞣āᰃ∌Йϡবⱘ
˄ेՓ≵᳝⬉⑤ˈ䆹ؐгֱᣕ᳝ᬜ˅㗠݊Ҫⱘᅲ՟߭Ӯ↣⃵ਃࡼⱘᯊ‫׭‬䞡ᮄ߯ᓎDŽ
䖭ѯᵘ䗴㸼⦄ߎϡৠⱘࡳ㛑DŽHOBs 䏇䖛ऩ⣀ⱘ䰊↉䖍⬠DŽPEIぎ䯈ᮑࡴⱘ䰤ࠊϡ‫ݡ‬䳔㽕೼DXE
Ё㸼⦄ߎᴹˈĀ᭄᥂Ёᖗāᰃ᳔ϔ㠀䗮⫼ⱘᵘ䗴DŽҪ䗮⫼ⱘᴀ䋼ᰃ݊ད໘ԚгՓ݊ϡ䗖ড়ѢHII᭄᥂ˈ
HII᭄᥂Ў᳈ࡴ㑺ᴳ੠᳈ৃ㓪䕥ⱘ᭄᥂㉏ൟᦤկᬃᣕDŽ

ব䞣
Āব䞣āᰃ EFI ੠᪡԰㋏㒳П䯈⍜ᙃӴ䗦ⱘᅲԧˈᅗг᳝ৃ㛑⫼Ѣ Framework ᴀ䑿DŽϢᴀ
ゴ݊ҪᴎࠊϡৠˈĀব䞣ā᮴䆎೼ ExitBootServive ࠡৢ䛑ᰃৃҹ㹿䆓䯂ⱘDŽ
Ўњ⧚㾷ᗢḋՓ⫼Āব䞣āˈ 佪‫⧚ܜ‬㾷ЎҔМҪӀ㹿⿄ЎĀব䞣āᰃᕜ᳝ᐂࡽⱘDŽUnix ᦤ
կ⫼᠋᠔䇧ⱘ⦃๗ব䞣ˈ⦃๗ব䞣ᰃӏᛣᄫヺ੠݊Ҫӏᛣ˄ASCII˅ᷛㅒ㒧ড়㗠៤ⱘDŽ✊ৢᑨ⫼
⿟ᑣ㛑໳ᇏᡒᷛㅒ੠ᡒࠄᄫヺІDŽ݊ৢˈ⦃๗ব䞣ᰃ Fortran˄⽣⡍݄䇁㿔˅䘏䕥ऩ‫ܗ‬ᵘ䗴᳈ট
དⱘ⠜ᴀ˄՟བˈ5 ∌䖰ᰃᷛ‫ޚ‬䕧ܹˈ6 ∌䖰ᰃᷛ‫ޚ‬䕧ߎ˅DŽ
EFIĀব䞣ā⫼ѢϢ⦃๗ব䞣ϔḋⱘⳂⱘ੠ⳌԐⱘᮍᓣDŽҪӀⱘੑৡ˄keys˅᮶ᰃ GUID г
ᰃ Unicode ᄫヺІDŽ䛑ᰃৡᄤⱘϔ䚼ߚˈг䛑ᰃᖙ乏ᦤկⱘDŽ
GUID ೼ EFI ੠ Framework Ϣ݊Ҫഄᮍ᳝ϔḋⱘⳂⱘ˖ֱ䆕݊⣀ϔ᮴Ѡᗻ੠䙓‫ކܡ‬さDŽ✊
㗠ˈҹৠḋৡᄫੑৡⱘ޴ϾĀব䞣āҡ✊ᰃ᳝ᬜⱘDŽ՟བˈᶤᑇৄг䆌Ӯ䗝ᢽ݊䆒㕂䜡㕂᭄᥂
ᄬ‫ټ‬೼ᶤϔҹĀSetupāੑৡⱘ⹂ᅮⱘ GUID ব䞣ˈৠᯊᄬ‫݊ټ‬咬䅸ؐ೼঺໪ϔϾҹĀDefaultsā
ੑৡⱘⳌৠⱘ GUID ব䞣DŽ
Āব䞣ā᭄᥂˄ؐ˅㒧ᵘᰃ⬅᭄᥂ѻ⫳㗙੠Փ⫼㗙݅ৠᅮНⱘDŽ

Āব䞣āⱘՓ⫼

Ā ব 䞣 ā ৃ ҹ ⬅ SetVariable ߯ ᓎ ៪ 㗙 ᳈ ᮄ ˈ 䗮 䖛 GetVariable 䞡 ᮄ ᕫ ࠄ ੠ 䗮 䖛
GetNextVariableName থ⦄DŽ䖭ѯ䛑ᰃᅲᯊ˄gRT˅ࡳ㛑DŽ

Āব䞣āⱘৃবᗻ

Āব䞣āҹϸ⾡㉏ൟᄬ೼˖ᯧ᣹থⱘ੠䴲ᯧ᣹থⱘDŽ䴲ᯧ᣹থⱘĀব䞣ā೼㋏㒳䞡ਃЁֱ
ᄬϟᴹ㗠ᯧ᣹থⱘ߭϶༅DŽ䖭ᅠܼপ‫އ‬Ѣ㋏㒳䆒䅵㗙ᴹ⹂ֱ䴲ᯧ᣹থⱘĀব䞣āӮҹ᳝ᬜⱘᆍ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䫭ᮍᓣᴹ᳈ᮄˈҹ㟇Ѣϔᮺ SetVariable ៤ࡳ䖨ಲˈ䆹ব䞣ህӮҹ〇ᅮᄬ‫ⱘټ‬ᮍᓣֱᄬϟᴹ੠


೼᥹ϟᴹਃࡼⱘЁ᳝ᬜDŽ


໻ᇣⱘ㗗䞣

໻䚼ߚĀব䞣ā䛑ᰃ䴲ᯧ᣹থⱘDŽ䖭ᇚ㒭㋏㒳䆒䅵㗙ᏺᴹϔϾ䯂乬DŽᘏԧϞ䰸њ䴲ᐌ໡ᴖ
ⱘ㋏㒳ˈ೼㋏㒳ᓎゟП߱ˈ㋏㒳⫼Ѣᄬ‫ټ‬䴲ᯧ᣹থ᭄᥂ⱘぎ䯈ᰃ೎ᅮⱘDŽড䖛ᴹˈᑨ⫼⿟ᑣϡ
㛑Փ⫼ӏᛣ໻ⱘ੠ӏᛣ᭄䞣ⱘĀব䞣āDŽଃϔⱘ㾷‫އ‬ᮍ⊩ᰃᢦ㒱䍙䖛ব䞣ᄬ‫ټ‬ぎ䯈ⱘ䇋∖ˈ಴ℸ
ᖙ乏೼䇗⫼ᯊ᳝ᬜഄՓ⫼᳝䰤ⱘ䌘⑤DŽ
EFI 㾘㣗≵᳝‫݋‬ԧᅮН㋏㒳᠔䳔㽕ব䞣ぎ䯈ⱘᅲ䰙᭄䞣DŽ᳔䞡㽕ⱘᰃˈ㾘㣗䰤ࠊᅮН೼㋏㒳
䖤㸠ᯊᖙ乏ৃ⫼ⱘ᭄䞣DŽ䖭ḋⱘⳂⱘᰃ಴Ў⡍ᅮ㉏ൟⱘ㋏㒳ᕜৃ㛑↨݊Ҫⱘ᳈ᑲ໻ˈℷབϔᑈ
㹿䅸ЎᰃĀᑲ໻āⱘˈ೼㢹ᑆᑈৢৃ㛑ᰃĀⳌᔧⱘ␎ᇣāDŽ
೼᭛ḷЁ᳝ϔ⚍ϡᯢ⹂ⱘᰃ䇕ᇚՓ⫼ব䞣DŽᇸ݊ᰃˈՓ⫼ব䞣ᇍѢৃ䗝 ROMs ᰃᕜ‫݋‬਌ᓩ
࡯ⱘˈԚҪӀ᳝঺Ҏֵ᳡ⱘ⧚⬅ˈ೼ҪӀⱘ䜡㕂ऎඳᄬ‫ټ‬㞾Ꮕⱘ᭄᥂DŽ
佪‫ˈܜ‬བᵰ䆹व᠔ࣙ৿ⱘৃ䗝 ROM 㹿⿏䰸ˈ೼䆹ৃ䗝 ROM ⬭೼ব䞣ⱘӏԩ᭄᥂Ꮖ㒣༅
ᬜDŽ≵᳝ࡲ⊩㛑໳⹂ᅮব䞣ⱘ᭄᥂াᰃ㹿߮⿏䰸ⱘव᠔Փ⫼DŽ
㄀Ѡˈབᵰवⱘ䜡㕂ֵᙃ⦄೼ᄬ‫ټ‬೼ব䞣ぎ䯈ˈϔᮺ䆹व⿏ࠄϔϾᮄⱘ㋏㒳ˈवӮ϶༅݊
᠔᳝䜡㕂ˈ䖭ḋᇍ⫼᠋ϡᰃ⡍߿টདDŽ
ℸ໪ˈৃ䗝 ROMs ֱᄬҪӀⱘ᭄᥂ࠄব䞣㒭㋏㒳䆒䅵㗙ᦤߎϔϾ≵᳝ᯢᰒㄨḜⱘ䯂乬˖ᑨ
䆹㒭ৃ䗝 ROMs ߚ䜡໮ᇥぎ䯈˛᳔ᐌ⫼ⱘᮍ⊩ᰃ‫؛‬䆒ҪӀϡ䳔㽕ӏԩぎ䯈DŽ⦄೼ˈϸϾ䋳䴶ⱘ
㒧ᵰ៤Ўৃ㛑ˈ៪㗙ৃ䗝 ROM ϡ㛑ᄬ‫݊ټ‬䜡㕂⬅Ѣব䞣ぎ䯈Ꮖ㒣⒵њˈ៪㗙ৃ䗝 ROM 㛑໳
៤ࡳᄬ‫݊ټ‬䜡㕂㗠᪡԰㋏㒳ϡ㛑DŽ

᱂䗮ব䞣

䘡ঞ EFI 㾘㣗䛑ᰃ᪡԰㋏㒳੠ EFI П䯈䗮ֵⱘ⡍ᅮব䞣ⱘᅮНDŽ໻䚼ߚব䞣䛑ᰃ㛑໳Փ᪡԰


㋏㒳᳝ᬜӴ䗕݊Ꮖ㒣থ⦄ⱘ៪㗙䳔㽕೼᥹ϟᴹਃࡼ䖛⿟Ёড作㒭 EFIˈ䖭ࣙᣀਃࡼ乎ᑣ੠䇁㿔᭄
᥂DŽ

ᨬ㽕

䇼ᜢՓ⫼ব䞣DŽ

ḹ᥹䰊↉Ꮒ䎱˖ᦵ᠟ऩ‫˄ܗ‬HOBs˅
Framework ᅮНњ޴Ͼਃࡼ䰊↉DŽᶤѯ䰊↉П䯈ⱘ䖍⬠↨݊Ҫⱘ᳈೎ᅮDŽ䖍⬠П䯈᳔ᯢᰒ
ⱘߚ℻ᰃ೼ PEI ੠ DXE 䰊↉П䯈DŽPEI ᰃ RAM 䰤ࠊⱘ⦃๗㗠 DXE ᰃৃҹՓ⫼ড়⧚‫ݙ‬ᄬ᭄䞣ⱘ
⦃๗DŽ෎ᴀⱘὖᗉᰃᅠ៤೼ PEI 䖛⿟Ё䆹‫ˈⱘخ‬এ㦋ᕫ‫ݙ‬ᄬˈ✊ৢࠄ DXE ⱘ᳈ᑓ䯨ⱘぎ䯈DŽ
PEIˈ೼‫ݙ‬ᄬ߱ྟ࣪Пࠡ੠䖛⿟Ёˈ㌃⿃᭄᥂ˈ䖭ѯ᭄᥂ᰃ DXE Framework ԰Ў߱ྟ࣪䚼
ߚ᠔䳔㽕ⱘ੠ DXE 偅ࡼ԰Ў݊ᠻ㸠䖛⿟᠔䳔㽕ⱘDŽ᭄᥂ᖙ乏ᅠ៤Ң PEI ࠄ DXE ⱘ᳝ᬜӴ䗕DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

✊㗠 PEI ফ݊Ԣ‫ݙ‬ᄬ⦃๗ⱘ䰤ࠊˈ䳔㽕ϔϾড়䗖ⱘ‫ݙ‬ᄬᄬ‫ټ‬੠ॳྟ᭄᥂Ӵ䗕ᴎࠊDŽᦵ᠟ऩ
‫˄ܗ‬HOBs˅ᰃЎℸ᳡ࡵⱘϔϾᴎࠊDŽ

䙉ᅜ PHIT

ᦵ᠟ऩ‫˄ܗ‬HOB˅᭄᥂㒧ᵘᰃ㹿㒘ᓎЎϔϾ䖲㓁‫ݙ‬ᄬ㣗ೈˈࣙ৿ϔϾᏆⶹⱘি‫خ‬䰊↉ᦵ᠟
ֵᙃ㸼˄PHIT˅ⱘ༈᭛ӊ੠᥹ϟᴹ݊Ҫ HOBsDŽ↣Ͼ HOB ᢹ᳝ϔϾ݀݅༈᭛ӊˈ䆹᭛ӊࣙ৿ϔ
Ͼ‫ܕ‬䆌ㅔऩ HOB ᠿᦣⱘ䭓ᑺDŽPHIT ੠᠔᳝ᔧࠡⱘ HOB ϔ䍋㹿㒳⿄Ў HOB ߫㸼DŽ
PHIT ᴀ䑿ⱘԡ㕂䗮䖛 PEI Framework 䇗⫼˄GetHobList˅㗠ᴹⱘDŽPHIT ᰒ⼎њ԰Ўᄬ‫ټ‬
HOBs ᳔໻ৃ⫼‫ݙ‬ᄬⱘഄഔ੠ HOB 㸼ⱘᔧࠡ᳿ッDŽ⏏ࡴ HOB ᰃ䗮䖛䇗⫼ CreateHob ᴹᅲ⦄
ⱘDŽ䆹᳡ࡵ໘⧚䇗ᭈ PHIT ᳿ッᣛ䩜੠໡ࠊᮄⱘ HOB ᭄᥂ⱘᎹ԰
䰸њ PHIT Ёⱘᣛ䩜ˈ HOBs ϡᑨ䆹ࣙ৿ᣛ৥݊Ҫ HOBs ⱘᣛ䩜DŽ䖭ᰃ಴Ў䚼ߚҢ PEI ࠄ
DXE ⱘ HOBs ⱘ໘⧚䖛⿟ˈ⍝ঞࠄᇚ HOB ߫㸼໡ࠊࠄⳳℷ‫ݙ‬ᄬЁᮄⱘԡ㕂ˈ䖭ѯԡ㕂໻䚼ߚ
ᔧ✊ᰃ೼ϡৠⱘഄഔDŽ೼໡ࠊⱘ䖛⿟Ёˈ HOBs П䯈ⱘᣛ䩜ϡӮ㹿᳈ᮄˈ᠔ҹᣛ䩜㸼⦄Ў᮴ᬜ
ⱘDŽᣛ৥໪䚼 HOBs ऎඳⱘᣛ䩜䗮ᐌᰃ᳝ᬜⱘDŽ՟བˈPEI 䖛⿟থ⦄ⱘ RAM ⱘ佪ഄഔᰃϔϾᣛ
䩜ˈҢϔϾഄᮍࠄ঺ϔഄᮍ໡ࠊ HOB ϡӮՓഄഔ᮴ᬜDŽ

HOBs ⱘՓ⫼

HOBs 㛑໳㹿⫼԰ϸ⾡䗮ֵ㉏ൟDŽ᳔ᯢᰒⱘᰃ⫼೼ҟѢ೼ PEI 䰊↉ⱘѻ⫳㗙੠೼ DXE Ёⱘ


Փ⫼㗙DŽ㄀Ѡ⾡ᰃ⫼೼ PEI 䰊↉ⱘѻ⫳㗙੠Փ⫼㗙П䯈DŽ಴ℸ HOBs 㒧ᴳ೼ PEI ぎ䯈Ё԰Ў᳝䰤
RAM 㰮ᢳ‫ݙ‬ᄬߚ䜡ⱘ䅵ߦDŽ಴ЎЎ䖭Ⳃⱘ㗠‫ߚݡ‬䜡 HOBs Փ⫼ᇚӮ⍝ঞࠄ䕀⿏݊Ҫ HOBsˈ᠔
ҹᰃϡ໻ᅝܼⱘDŽ⿏ࡼ݊Ҫ HOBs ᇚՓᣛ৥㹿݊Ҫ PEIMs ᠔ᢹ᳝ⱘ⿏ࡼ HOBs ⱘᣛ䩜᮴ᬜDŽ
԰ЎҪӀӴ㒳Ꮉ԰ⱘϔ䚼ߚ˄PEI ࠄ DXE ⱘ䗮ֵ˅ˈᕜ໮㉏ൟⱘ HOBs 㾘ᅮЎ Framework
ⱘϔ䚼ߚˈࣙᣀ‫ݙ‬ᄬǃCPUǃ䌘⑤੠ FVDŽ䖭ѯ HOBs ⱘϔ䚼ߚᰃ㹿⫼Ѣ DXE ߱ྟ࣪ҷⷕ⫼ᴹ
߱ྟ⿏ỡ GCD˄Global Coherency Domain˅㸼DŽ
HOBs г᳝ৃ⫼Ѣ PEIM ࠄ DXE 偅ࡼ䯈ⱘ䗮ֵDŽ䖭ḋ‫ܕ‬䆌 PEIM ᳈ᇣ੠䙓‫ৃܡ‬㛑ⱘҷⷕ䞡໡DŽ
䆚߿ HOB ⱘ GUID া䳔㽕㹿 PEIM ੠偅ࡼП䯈᠔ⶹ䘧੠ᡓ䅸DŽ

DXE Ёⱘ HOBs

DXE 䕑ܹԧ䳔㽕Փ⫼ HOB ߫㸼DŽҪՓ⫼ CPUˈ FV ੠ HOBs 䌘⑤ᴹ⿏ỡ᳔߱ⱘ GCD 㸼


੠ PHIT 㸼এ⹂ֱ೼Փ⫼ⱘ䖛⿟ЁϡӮ⸈ണ HOB ߫㸼DŽ݊Ҫⱘ HOBs ৃҹ䗮䖛 EFI 䜡㕂㸼Ḑᴹ
㦋পˈEFI 䜡㕂㸼ḐҢ EFI ㋏㒳㸼Ё㦋পDŽHOBs া㛑೼ DXE ЁՓ⫼ⱘˈ㗠ϡᰃ೼ DXE Ёѻ⫳
ⱘDŽ

ᨬ㽕

㡖㑺Փ⫼ĀHOBsāDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ҎᴎѸѦᶊᵘ˄HII˅

䅵ㅫᴎা㛑䆚߿㣅䇁˄ϡᰃ䴲ᐌད˅ⱘᯊҷᏆ㒣㒧ᴳDŽ䅵ㅫᴎᑨ䆹㹿‫؛‬ᅮЎ⫼᠋টད៪㗙
㒭㒜ッ⫼᠋དⱘԧ偠DŽҪӀᑨ䆹‫؛‬ᅮЎ˄᳈⫮˅ৃㅵ⧚੠ৃֵ䌪DŽ
BIOS Ңᴹ≵᳝ҹϔϾདⱘ⫼᠋⬠䴶ЎҎӀⱘ᠔䅸䆚DŽROM ᆍ䞣໾᳝䰤њˈབᵰᬃᣕ໡ᴖ
ⱘ೒ᔶ⬠䴶ˈᰒ⼎᥹ষ᳝໾໮ⱘϡৃ乘㾕ᗻDŽ
䆌໮ HII ⍝ঞⱘ乚ඳᏆ㒣㹿᪡԰㋏㒳ⱘৠᖫӀⷨお੠㾷ᵤњˈ㗠ϨҪӀ᳝Ӌؐⱘথ⦄Ꮖ㒣ᔶ
៤ⱘ Framework ⱘᬃᣕⱘ෎‫ޚ‬DŽ
Framework ᇚ䜡㕂ᬃᣕߚЎҹϟ 4 ⾡㉏ൟ˖
䬂Ⲭ˖ܼ᪡԰㋏㒳ㄝᬜ䬂Ⲭᢑ䈵ὖᗉᰃ䍙ߎњ೎ӊ乚ඳDŽ঺ϔᮍ䴶ˈFramework ᦤկ䆹ᬃ
ᣕ䳔㽕ᓎゟ೼ᴀഄ࣪䬂Ⲭ೎ӊሖ䴶ⱘᬃᣕDŽ
ᄫԧ: ੠ BIOS ϡϔḋˈEFI 㾚乥᥹ষᴀ䑿ϡᏺ᳝ѻ⫳ᄫヺⱘᴎࠊDŽ
ᄫヺІ˖ᄫヺІᴀഄ࣪ᮍᓣ೼ᔧҞⱘ䇁㿔⦃๗ᰃ㹿ᕜདⱘ䅸䆚ⱘ੠᱂䘡ⱘDŽ䗮䖛㒧⚍݇㘨
ᄫヺІᰃᕜ᱂䘡ⱘDŽг᳝՟໪˄‫ڣ‬᮹ᳳˈᯊ䯈ˈᔧഄ䋻Ꮥ˅ᰃᑓЎҎⶹⱘDŽ
㸼Ḑ˖䱣ⴔ HTML ੠䱣ৢⱘ XML ঞ݊ৢ㓁ⱘ᱂ঞˈᷛ䆄䇁㿔Ꮖ㒣Ў䆌໮Ҏ໮❳ᙝDŽ✊㗠䖭
ѯ䇁㿔᮶ϡᰃᯢᰒⱘぎ䯈催ᬜ⥛ⱘˈг≵᳝ᡞҪӀᴀ䑿ᴀഄ࣪DŽFramework ᦤկ‫ݙ‬䚼㸼Ḑ㸼⼎
⊩ˈ䖭⾡䇁㿔㛑໳೼㹿䕀࣪Ў᱂䗮ᷛ䆄䇁㿔ৢԚҡ✊ֱᣕ݊ᇍ೎ӊ⦃๗ⱘ⡍ᗻDŽ
HII ᶊᵘᅮНњ᭄᥂ⱘ㒧ᵘˈᦣ䗄䖭ѯ᭄᥂䗮䖛ࡼᗕ߯ᓎ HII ᭄᥂ᑧ੠݇㘨ण䆂ᴹ䋵⤂੠䆓
䯂䖭ѯ᭄᥂DŽ
ҹϞ䖭ѯ㒧ড়䍋ᴹᦤկϔϾᕜདⱘᶊᵘˈ䖭Ͼᶊᵘ᮶㛑໳⒵䎇㒜ッ⫼᠋ⱘ䳔∖ৠᯊг⒵䎇
њㅵ⧚ⱘ䳔∖DŽ

ᴃ䇁

೑䰙࣪˖೒ヺ੠݊Ҫ䴲ᴀഄ⡍⅞࣪ⱘᵘ䗴ⱘՓ⫼ᰃЎњᇱ䆩߯䗴ϔϾ᠔᳝䇁㿔䛑㛑໳Փ⫼
ⱘ᥹ষDŽ↨བ‫ذ‬ℶヺো೒ヺˈ㪱㡆ֵᙃⱘՓ⫼੠哴ᷛⱘՓ⫼ˈ䛑ᰃ೑䰙࣪ⱘDŽ䗖ড়ϔѯㅔऩⱘ
᥹ষ˄↨བ䗝ᢽ䇁㿔੠ᯊऎ˅DŽ
ᴀഄ࣪˖Ўњ⡍ᅮ䇁㿔៪㗙ഄऎ㗠Փ⫼ⱘᵘ䗴ᴹᬍ‫᥹ݭ‬ষDŽ
ᷛᖫ೒ᔶ: 䴲䷇ᷛк‫ݭ‬䇁㿔ˈ‫ڣ‬Ё᭛ˈ᮹䇁੠䶽䇁˄ĀCJKā˅䛑ᰃՓ⫼ϔϾᄫϔϾᷛᖫˈ㗠
ϡᰃϔϾໄ䷇៪䷇㡖ϔϾᷛᖫDŽ

䜡㕂῵ൟ

བ೒ 11.1 ᠔ᰒ⼎ⱘ䜡㕂ˈᰃ⦃㒩ⱘ῵ൟDŽਃࡼП߱ˈ偅ࡼ䇏পᅗӀ䴲ᯧ᣹থ᭄᥂ᴹ䜡㕂݊
⹀ӊDŽгᦤկࠄ HII ᭄᥂ᑧⱘ᭄᥂ࣙDŽབᵰ setup 䖤㸠ˈᅗ᳈‫⌣ڣ‬㾜఼䆓䯂㔥キϔḋ䆓䯂᭄᥂
ᑧDŽ✊ৢᅗᇚ⫳៤ⱘ䜡㕂থ䗕ࠄ偅ࡼⱘ NVRAMDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 11 1 Configuration Flow
偅ࡼৃҹ㞾Ꮕ乘߯ᓎⱘ᭄᥂ˈ✊㗠໻໮᭄偅ࡼ䳔㽕᡹ਞࡼᗕ㦋প᭄᥂DŽHII ᭄᥂ᑧᕜདഄᬃ
ᣕ䆹㽕∖DŽ᳔ৢˈᶤѯ᭄᥂ৃ㛑བℸഄࡼᗕҹ㟇Ѣ↣⾦䛑Ӯᬍব˄᳔ᯢᰒⱘᰃᅲᯊᯊ䩳ˈᅲ䰙
Ϟᰃ԰Ў HII ⡍߿ⱘ՟ᄤDŽ㋏㒳ⱘ⏽ᑺᰃ঺ϔϾ՟ᄤ˅DŽ೼䖭⾡ᚙ‫މ‬ϟˈIFR Ўњ㒭偅ࡼᦤկᅲᯊ
ֵᙃᬃᣕ䇗⫼䖨ಲˈ㱑✊᳝䖭Ͼࡳ㛑ˈϡ哧ࢅࠄ໘䛑⫼DŽ
ϡ哧ࢅՓ⫼䇗⫼䖨ಲⱘ⧚⬅ᕜ䞡㽕DŽ䖭Ͼ῵ൟ‫ܕ‬䆌 HII ᭄᥂ᑧⱘ݊Ҫ⫼᠋DŽϢ䖰⿟ਃࡼᑨ⫼
⿟ᑣѸѦⱘ偅ࡼг㛑໳䗮䖛 HII ᭄᥂ᑧ˄ĀᦤপāੑҸҹᷛ‫ⱘޚ‬ᔶᓣ㦋ᕫ᭄᥂˅থ䗕੠᥹ᬊ᳈ᬍ
ⱘ䜡㕂䖨ಲ᭄᥂DŽ
བ೒ 11.2 ᠔ᦣ䗄ˈᦤপⱘ᭄᥂㛑Ў෎Ѣ᪡԰㋏㒳ⱘᑨ⫼⿟ᑣ᠔Փ⫼ˈ៪㗙ᰃ䗮䖛᪡԰㋏㒳
‫⌣ⱘݙ‬㾜఼⿟ᑣˈ៪㗙ᰃ䗮䖛Ўњㅵ⧚㗠Փ⫼ⱘ㛮ᴀ䇁㿔ᴹ㸼⦄DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 11 2 More Configuration Flow

ᕾ⦃Ӯবᕫ᳈ࡴ໡ᴖˈԚϡᰃЎњ䖭Ͼ偅ࡼˈҢ䖭⾡∈ᑇⱘᬃᣕˈ偅ࡼ੠ᄬ‫ټ‬ᰃᕜᕏᑩⱘ
ᢑ䈵DŽ

݇䬂ᄫ

Framework ೼ܼ䬂Ⲭᴀഄ࣪ⱘ໡ᴖᗻ੠⫼᠋টད⬠䴶ⱘ䳔∖П䯈ᓎゟᑇ㸵DŽ
䯂乬
Framework ⱘ咬䅸䬂Ⲭᰃ U.S.㣅䇁䬂ⲬDŽ໻䚼ߚ㒜ッ⫼᠋≵᳝ᛣ䆚ࠄ䖭ϔ⚍ˈ಴Ў໻䚼ߚ
setup ᓩ᪢Ꮖ㒣䴲ᐌ೑䰙࣪˄␌ᷛ䬂ˈFn 䬂ˈTab 䬂ˈ᭄ᄫ䬂˅ҹ⒵䎇䖭ѯ䳔∖DŽ
क݁䖯ࠊ᭄ᄫˈᆚⷕˈϛ㛑䩹࣭ㄝⱘ䕧ܹՓ೑䰙࣪ϡৃ㛑DŽẔᶹ U.S.㣅䇁䬂Ⲭ੠⊩䇁䬂Ⲭˈ
៥Ӏৃҹথ⦄ QˈA ੠ Z 䬂೼ϡৠⱘԡ㕂DŽӴ㒳ⱘ˄ĀPS/2ā ˅䬂Ⲭ੠ USB˄HID˅䬂Ⲭ䛑ᰃḍ
᥂䬂Ⲭԡ㕂䖨ಲ䬂Ⲭ䕧᭄ܹ᥂㗠ϡᰃḍ᥂䬂ᐑⱘᄫヺDŽ䖭ህᰃˈPS/2 䬂ⲬⱘĀ4ā៪㗙 USB 䬂
ⲬⱘĀ31ā೼㣅䇁䬂Ⲭ䛑㸼⼎Āaā ˈԚᰃ೼⊩䇁䬂Ⲭ䛑㸼⼎ĀqāDŽ⫼䫭䇃ⱘ䕀ᤶ㸼䕧ܹक݁䖯
ࠊ᭄ᄫ޴Тᰃϡৃ㛑ⱘDŽ
೼೒ᔶ᭛ᄫ䇁㿔Ёˈ໡ᴖᑺᇚӮᬒ໻ᕜ໮‫ס‬DŽ՟བ ˈ೼᮹䇁ЁˈKana ᄫヺᰃ䇁䷇ⱘˈԚ
ᰃ Kanji ैϡᰃDŽি‫ خ‬IMEs ⱘ໡ᴖᎹ‫݋‬ህᰃ⫼ᴹⲥ᥻Ў Kanji ㄝᬜⱘ Kana 䕧ܹDŽḍ᥂੠⫼᠋
ⱘ㑺ᅮˈᇚᅗ䕀࣪Ў KanjiDŽ
෎ᴀᶊᵘ
Framework 㾷‫އ‬ᮍḜপ‫އ‬Ѣ೼‫؛‬䆒↣ϾҎՓ⫼ U.S.㣅䇁੠ IME ᬃᣕ˄䳔㽕 I/O ᭄᥂⌕ᬃᣕ
ⱘ‫ܜ‬䖯⡍ᗻ˅П䯈DŽ
↣ϔϾ䬂ৃ㛑䛑᳝ಯ⾡䕀࣪˖≵᳝䕀࣪ⱘᣝ䬂੠Ԉ䱣 ShiftˈControlˈ៪ Alt˄Gr˅ৠᯊᣝ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ϟⱘᣝ䬂DŽ↣Ͼᣝ䬂ⱘᭆߏ䛑ᇍᑨϔϾ Unicode ᄫヺDŽ↣⾡䕀࣪䛑ᰃҢ U.S.㣅䇁䬂Ⲭҹϝ㾦ᔶ


ᓣֱᄬˈ᠔ҹᢝϕ-1 䇁㿔ᰃ↨䕗ᇣⱘˈ೑䰙࣪ⱘᣝ䬂˄Fnˈ␌ᷛ䬂ˈㄝㄝ˅䛑ᰃϡ䕀࣪ⱘDŽ

ᄫԧ

ण䆂ᦤߎ೼ EFI Ёᇍᰒ⼎᥹ষᬃᣕˈԚᰃϡᦤկᄫヺ⫳៤ࡳ㛑ⱘᬃᣕDŽгህᰃҪӀϡᬃᣕᄫ


ԧDŽ঺ϔᮍ䴶ˈEFI ໄᯢᅗᇍᬃᣕᢝϕ-1˄ϔ㠀ᰃᣛ㽓⃻˅䇁㿔ⱘᰒ⼎ᬃᣕDŽ
EFI ੠ Framework 䳔㽕݀⫼ⱘᄫヺ໻ᇣ੠㸼⼎ᮍ⊩ⱘৠᯊᬃᣕˈҹ֓䇗⫼⿟ᑣ㛑໳ⶹ䘧Ҕ
Мᰃ᳝⫼ⱘˈҹ֓ Cyrillic, CJK, Arabic ੠ Hebrew ⱘᠽሩˈ՟བ㛑໳ᓎゟ䍋ᴹDŽ
HII ᰃ෎Ѣᕜㅔऩⱘ䅵ㅫᴹᅮНᷛ‫ⱘޚ‬DŽ೼ᷛ‫ ޚ‬CRT Ϟⱘ 480 ‫ڣ‬㋴㹿 25 ᴵ㒓ㄝߚⱘ᳔ᇣ催
ᑺ໻ὖᰃ↣Ͼᄫヺ 19 ‫ڣ‬㋴DŽЎњᄬ‫ټ‬ᬜ⥛ˈ8 Ͼ‫ڣ‬㋴ᆑᑺ㸼⦄ߎⳌᔧདⱘ↨⥛DŽᷛ䆄೒ᔶᄫヺ
ᰃϡ㛑ҹ 8 ‫ڣ‬㋴ᴹ䇏পⱘˈ᠔ҹࡴ‫ס‬ᅗӀⱘᆑᑺࠄ 16 ‫ڣ‬㋴DŽ8 ‫ڣ‬㋴ᆑᑺᄫヺ㹿䅸Ўᰃじᄫヺˈ
㗠 16 ‫ڣ‬㋴ⱘᄫヺᰃᆑᄫヺDŽ㒧ᵰᰃᄫヺ೼ 800h600 ⱘ‫ڣ‬㋴ϟ䛑ᰃᕜᆍᯧ㹿䇏পⱘˈ៤Ў EFI
ⱘ᥼㤤ᰒ⼎ᬃᣕⱘϔϾᖙ乏ⱘሣᐩߚ䕼⥛ˈᦤկ 31 㸠ⱘ 100 じᄫヺDŽ
᭄᥂㒧ᵘЎњㅔ࣪ߚࡆ೼䞡঴㾚にⱘᄫヺህ໻㟈ϞҹϸϾ 8h19 ᄫヺᴹᄬ‫ ټ‬16h19 ᄫヺDŽ
੠↣Ͼᄫヺ㒧ড়ˈϡ䆎໻ᇣˈ䛑ᰃ UnicodeUTF-16 催ᑺ˄՟བ˖0x0037 ԰ЎĀ7ā˅੠ϔϾᷛ
䆄ᄫDŽᷛ䆄ᄫ㡖Џ㽕⫼ᴹ㸼⼎ᄫヺᰃ৺ᰃ䴲ぎḐˈϔϾ䴲ᐌ㘾ᯢгᕜ⢵⤒ⱘ Unicode থᯢDŽ
ϔϾ䴲ぎḐᄫヺህᰃҹϟ߫῵ᓣ OR’d ⱘԡ῵ᓣᰃ᳝ᬜⱘ䖭ᰃ⫼ѢՓᶤѯ䇁㿔(‫ڣ‬䍞फ)ϡ
ᐌ⫼ⱘ䞡䷇῵ᓣ᳝ᬜDŽ䖭Ͼᛇ⊩ᰃ㘾ᯢⱘDŽ㒧ᵰैϡᗢМད˖䴲ぎḐᄫヺӮ䘡ঞ Unicode ⱘ催
ᑺϡৃ乘㾕ⱘߎ⦄DŽ䖭䞠ⱘ㾷‫އ‬ᮍḜᰃ䅽ᄫヺ䯤䗄ᅗ㞾ᏅDŽ
䖭ѯ᭄᥂㒧ᵘҹじ߫㸼✊ৢᆑ߫㸼ᦤկDŽ↣Ͼ߫㸼ᖙ乏ҹ Unicode 催ᑺҢ᳔Ԣࠄ᳔催㹿ᥦ
߫ˈՓ݊೼೎ᅮ໻ᇣ˄22 ੠ 44 ᄫ㡖˅ⱘ㒧ᵘᬃᣕѠ䖯ࠊᶹ䆶DŽ
⊼ᛣ↣ϾՓ⫼䴲ᢝϕ-1 ᄫԧⱘ偅ࡼᖙ乏ᦤկ䙷ѯᄫԧDŽ✊㗠ˈᄫԧᑧা䳔㽕ֱᣕ↣⾡ᄫԧ
催ᑺ੠໻ᇣ˄じ੠ᆑ˅ⱘϔϾ՟ᄤˈ಴ℸ偅ࡼৃ㛑ҹՓ⫼ᅗⱘ៪㗙ᰃ݊Ҫ偅ࡼϔѯヺো˄ҹऩ
ϔ催ᑺ੠໻ᇣЎᅲ䰙ҷ㸼ⱘ HII ৡᄫ˅㒧ᴳDŽ
UEFI ྨਬӮℷ೼㗗㰥ᠽሩ੠᳈ᮄ䖭⾡ḐᓣˈՓ݊ᇍ݊Ҫ催ᑺ੠໮⾡ᄫԧᔶᓣᦤկᬃᣕDŽ

ᄫヺІ

೼㋏㒳Ёˈᄫԧ੠䬂ⲬᰃЎ᠔᳝偅ࡼ᠔݅ѿⱘDŽᄫヺІ੠㸼Ḑᰃᇍᢹ᳝ᅗӀⱘ偅ࡼᴹ䇈ᰃ
ᴀഄⱘDŽ
ᬃᣕᴀഄ᳔࣪᱂䘡ⱘᮍ⊩ᰃᷛ䆄ᄫヺІ㋶ᓩˈ✊ৢЎ↣Ͼ⠛↉߯ᓎ䕀࣪DŽ೼ HIIˈ㒧⚍ᰃ 16
ԡⱘˈ᭛ᴀⱘ⠛↉㹿⿄ЎᄫヺІDŽ
㒧⚍ᇚӮҹҢ 1˄1ˈ2ˈ3ˈ4…˅ऩ䇗ⱘ๲䭓ᮍᓣ㹿ߚ䜡DŽ㒧⚍ 0 ᰃЎϡᄬ೼ⱘᄫヺІ乘
⬭ⱘDŽ
ᄫヺІ᭄᥂㒧ᵘ⬅ϔϾ༈᭛ӊˈϔϾ᭄㒘㋶ᓩ੠ᄫヺІᴀ䑿㒘៤ˈぎᄫヺ˄Unicode 催ᑺ
0x0000˅㒧ᴳDŽ
༈᭛ӊҹ ISO-639-2 Ḑᓣ˄៪㗙 3166ˈপ‫އ‬Ѣ UEFI ⱘ݈㟈˅੠䆹䇁㿔Ёⱘ᭛ᴀᴹᦣ䗄䖭
䇁㿔DŽ˄՟བ “Cymraeg,” ϡᰃ“Welsh,”˅
᭄㒘ᰃ䗮䖛ϸ‫ⱘס‬㒧⚍ؐᴹ㋶ᓩⱘˈ಴ℸЎ↣Ͼ偅ࡼ‫ܕ‬䆌 65ˈ535 ᄫヺІ—೼ᴀкЁ↨䖭
Ͼ᳈໮ⱘᄫヺІᰃহᄤDŽ16 ԡⱘ‫ܕ⿏أ‬䆌ᘏ݅䍙䖛 65ˈ535 ᄫヺDŽ
㱑✊೼偅ࡼ㹿㓪䆥ᯊˈ໻䚼ߚᄫヺІᕜৃ㛑ᰃ㹿䅸ⶹⱘˈϔѯᄫヺІা᳝೼偅ࡼ߱ྟ࣪ᯊ
ᠡᓔྟᰃᕜ᱂䘡ⱘDŽHII ᭄᥂ᑧण䆂ᢹ᳝᳈ᮄ੠߯ᓎᄫヺІⱘࡳ㛑DŽ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

UEFI Ꮉ԰㒘੠Ҫϟ䴶ⱘᇣ㒘জϔ⃵㗗㰥ᠽሩ੠᳈ᮄЏ㽕ᰃЎњᦤ催य़㓽⥛DŽ

㸼Ḑ

㸼Ḑᰃ໻㟈Ϟ㗗㰥䙷ѯ໘⧚⫼᠋䕧ܹⱘᷛ䆄䇁㿔ᄤ䲚DŽᔧ䌁ф‫ݙ‬ᆍˈ฿‫ݭ‬䇗ᶹㄝㄝˈѦ㘨
㔥㸼ḐӮ㹿Փ⫼DŽ
EFI ⱘⳂᷛᰃㅔ࣪䆓䯂೎ӊⱘ⫼᠋᥹ষDŽ೼ BIOS Ёˈ⫼᠋ᖙ乏ᕫⶹ䘧ӏԩϡৠⱘ⛁䬂ᴹЎ
㋏㒳˄㋏㒳 BIOS ੠ৃ䗝 ROMs˅ϡৠ䚼ߚⱘ৘⾡䆒㕂⿟ᑣ㦋ᕫ䆓䯂ᴗDŽⳂᷛᰃᢹ᳝ϔ⾡ऩϔⱘ
ᴎࠊᴹ䆓䯂ਃࡼㅵ⧚఼ˈ䖭㛑໳ҹϔ⾡᳈ࡴㅔऩⱘ䆓䯂Փ⫼Ḑᓣⱘᮍᓣᰒ⼎᠔᳝ⱘ䜡㕂DŽᔧ✊ˈ
ৃ䗝 ROMs ᇚ≵᳝ᖙ㽕䰘ᏺᅗӀ㞾Ꮕⱘ䆒㕂ᓩ᪢ˈ䖭Ͼᓩ᪢ᰃ໡ࠊ㋏㒳䆒㕂ᓩ᪢ⱘ෎ᴀࡳ㛑DŽ
㸼Ḑᰃᇏഔⱘϔ⾡ᮍᓣDŽ
㸼Ḑᰃ෎Ѣ݊Ҫ HII ⠛↉ᓎゟⱘ˖䬂Ⲭˈᄫԧ੠ᄫヺІDŽ⡍߿ഄˈHII 㸼ḐⳌᇍѢጠܹᓣᄫ
ヺІՓ⫼ᄫヺІ㒧⚍DŽ
ϔ㠀Ḑᓣ
㸼Ḑᰃҹ‫ݙ‬䚼㸼Ḑ㸼⼎⊩˄IFR˅㗠㨫ৡⱘ䇁㿔ⱘҷ㸼,䖭⾡䇁㿔᳔᥹䖥ⱘ῵ᢳᰃ໡ᴖᣛҸ䲚
˄CISC˅໘⧚఼ⱘѠ䖯ࠊ䇁㿔˖ϔϾ㹿⿄ПЎĀᣛҸāⱘ䭓ᑺৃবⱘѠ䖯ࠊ㒧ᵘⱘᭈ唤乎ᑣDŽ
঺໪ϔ⾡䇁㿔ˈৃ㾚࣪㸼Ḑ㸼⼎⊩˄VFR˅Ꮖ㒣㹿ᅮНЎⳌᔧѢ IFR ⱘҎ㉏ৃ䇏পㄝӋ⠽ˈᅗᰃ
䗮䖛 IFR 㓪䆥੠∛㓪ⱘDŽᡔᴃሖ䴶Ϟˈϡᰃ Framework ⱘϔ䚼ߚDŽҹϟ՟ᄤህᰃ‫ܕ‬䆌໡ᴖ䚼ߚ
㹿ᗑ⬹ⱘ VFR џࡵDŽ
↣Ͼ㒧ᵘⱘ㄀ϔϾᄫ㡖ᰃ᪡԰ヺˈ㄀ѠϾᰃϡࣙᣀ᪡԰ヺ੠䭓ᑺⱘᣛҸᄫ㡖ⱘ䭓ᑺDŽ಴ℸˈ
᳔ⷁⱘᣛҸᰃϸϾᄫ㡖䭓ᑺˈ݊Ёࣙ৿᪡԰ヺ੠Ѡ䖯ࠊᄫ㡖䳊DŽᣛҸ੠ᔧЁⱘ᠔᳝ऎඳ䛑ᰃᄫ
㡖ᇍ唤੠䙉ᕾ EFI ҷⷕᣛᇐᮍ䩜˄little endian ㄝㄝ˅DŽপ‫އ‬Ѣ⌣㾜఼䞡ᮄᇍ唤ӏԩ᳝䳔㽕ⱘऎ
ඳDŽ
ᄫヺІ㋶ᓩᰃ䗮䖛 HII ᄫヺ㒧⚍㸼⦄ߎᴹⱘDŽ
ᄬ‫ټ‬㋶ᓩᰃ䗮䖛ϸ⾡ᮍᓣDŽ㄀ϔˈ‫⿏أ‬ᆑᑺᔶᓣᦤկ෎Ѣ䳊ᄫ㡖‫⿏أ‬੠ҹᷛ‫ ޚ‬EFI ব䞣ⱘᄫ
㡖ᮍᓣⱘᆑᑺˈབᴀゴࠡ䴶᠔䯤䗄ⱘDŽব䞣 GUIDs ⱘৡᄫᰃ䗮䖛ऩ⣀ⱘ᪡԰ヺᴹֱᄬぎ䯈DŽ㄀
ѠˈৡᄫⱘؐЎᔶ៤ᷛ‫ ޚ‬HTML/XML ৡᄫ˄=ؐ&ৡᄫ=ؐ&…˅㗠ᦤկৡᄫ៪㗙ؐ㋶ᓩDŽ‫⿏أ‬
ᆑᑺ㉏ൟⱘ‫ৃ⿏أ‬ҹ԰ЎᄫヺІ㒧⚍䞡໡Փ⫼ˈ಴Ўϸ㗙䛑ᰃ 16 ԡⱘᮍᓣᴹᦣ䗄ৡᄫDŽؐৃ㛑
ࠊ໛䆒㕂៤䴲᭄ᄫ‫ݙ‬ᆍDŽ᭄ᄫ‫ݙ‬ᆍҹक䖯ࠊḐᓣ䖨ಲDŽ
HTML ੠ IFR
㒣ग़䖛 HTMLˈ㄀ϔ⃵Փ⫼ HII 㸼ḐⱘҎৃ㛑ᕜᖿϞ᠟ԚᰃӮᛳ㾝᳝⚍࢝ᔎ಴Ўᮄⱘ⦃๗᠔
䰤ࠊDŽ
IFR ᬃᣕ䆌໮Ё HTML 㸼Ḑⱘᵘ䗴䰸њϔ⾡ᄤ䲚ሖ⃵DŽ՟བˈҷ᳓༈᭛ӊⱘ 8 ⾡㉏ൟⱘা᳝
ϔϾDŽҷ᳓৘⾡ϡৠⱘᵮВ˄೼䆌໮ৃ㛑ᗻЁ䗝ᢽϔ⾡˅䕧ܹ㉏ൟˈIFR াᦤկϔ⾡DŽ
HTML ᦤկњ‫ذ‬ℶ㛮ᴀ䇁㿔˄‫ ڣ‬JavaScript˅ⱘߎষˈབᵰ䯂乬বᕫϹ䞡DŽIFR ᖙ乏⣀㞾㾷
‫އ‬DŽ
ᬃᣕˈৠᯊ϶ᓗˈׂᬍ੠߯䗴ᷛ䆄䇁㿔⡍ᗻⱘ‫އ‬ᅮˈᰃ㹿㾘ߦњⱘ⦃๗㋏㒳᥼ࡼⱘDŽՓ⫼
Framework ৃ㛑г㛑থ⦄ᅗӀ㞾ᏅDŽ
Փ⫼ᄫヺІ㒧⚍㗠ϡᰃጠܹᓣᄫヺІ˄‫ ڣ‬HTML ⱘ˅ˈᰃ㹿ᴀഄ࣪ᯊ㡖㑺ぎ䯈ⱘ䳔∖▔থⱘDŽ
‫ڣ‬༈᭛ӊ䖭ḋᵘ䗴᭄䞣ⱘ‫ޣ‬ᇥᰃ෎Ѣᅲ䰙ϞᕜᇥՓ⫼ⱘⳂᷛ໡ᴖ㸼Ḑԧ偠DŽᇚ໮⾡ᷛㅒ⾡
㉏䕀বЎ䕗Ўᇥ᭄ⱘ᪡԰ヺⱘ‫ޣ‬ᇥ੠㒧ড়䖛⿟ˈгᰃЎњᬊ㓽⌣㾜఼ⱘ໻ᇣDŽ᳈䞡㽕ⱘᰃˈ䖭
Ͼ䖛⿟䗮䖛᥻ࠊᅗӀᴀ䑿ᴹՓ⌣㾜఼ᔶ៤᳈໮ⱘ䰜䗄䋷ӏDŽ䖭ϾᇍҞৢⱘৃᠽሩᗻᰃ㟇݇䞡㽕
ⱘDŽ㸼Ḑгৃ㛑೼ϡᇏᐌⱘᴵӊ˄↨བ䗮䖛㛮ᴀ៪㗙↣ 2-㒓᳝ 16-ᄫヺⱘᮍᓣЎࠡৄ᳡ࡵ˅ϟ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ߎ⦄DŽ
Form ԧ㋏
㸼Ḑᰃ⬅义䴶㒘៤ˈ㗠义䴶ᰃ⬅ᣛҸ㒘៤DŽ
ᣛҸ㹿ߚЎҹϟ޴⾡㉏ൟ˖
᭛ᴀ㉏ൟ˖ᷛ乬ˈࡃᷛ乬੠᭛ᴀDŽ䖭ѯᣛҸ‫ܕ‬䆌᭛ᴀ䕧ߎDŽ
㋶ᓩ㉏ൟ˖䍙᭛ᴀ䏇䕀‫ܕ‬䆌义䴶䏇䕀ࠄ݊Ҫӏԩ义䴶ⱘᓔྟDŽ
䯂乬㉏ൟ˖䖭ѯᣛҸᅲ䰙Ϟᰃ䇋∖᭄᥂੠ᦣ䗄ᗢḋᄬ‫ټ‬DŽ᠔᳝䯂乬ᬃᣕ咬䅸⢊ᗕ੠䖍⬠Ẕ
ᶹⱘᅮНDŽ䯂乬ᬃᣕᦤ⼎੠Ϟϟ᭛ᐂࡽᄫヺІ㒧⚍DŽ᠔᳝䯂乬ᬃᣕ䇗⫼䖨ಲDŽҹϟ޴⾡䯂乬㉏
ൟᰃᬃᣕⱘ˖
໡䗝Ḛ˖㉏ԐѢϔϾᏗᇨؐˈ䖭ϾᣛҸ䇋∖ϔϾѠ䖯ࠊؐ˖བᵰ 䗝Ёᰃ 1ˈϡ䗝ᰃ 0DŽ
߫㸼Ḛ˖㉏ԐѢϔ⾡ᵮВ㉏ൟˈᅗ㽕∖ҢᏆⶹⱘ䗝乍Ё䗝ᢽϔϾऩϔⱘؐDŽ߫㸼Ḛᰃଃϔ
ⱘ໮᪡԰ヺ䯂乬˖ϔϾ䗝ᢽ੠↣Ͼ䗝乍ϔϔᇍᑨDŽ
᭄ᄫ˖㉏ԐѢϔϾᭈൟ㉏ൟˈҪ㽕∖ᰃ᭄ᄫऎඳ˄16 ԡ䰤ࠊ˅DŽ䆹ᣛҸࣙ৿㣗ೈˈℹ偸੠
咬䅸ؐDŽ
᮹ᳳˈᯊ䯈˖䖭ѯᰃ⡍߿ᚙ‫މ‬಴ЎᅗӀ䗮ᐌ೼ᰒ⼎ⱘᯊ‫׭‬ӮᬍবDŽ
ᆚⷕ˖ϔϾॳྟᆚⷕⱘᮍḜᰃ咬䅸䆒㕂ⱘDŽ䇗⫼䖨ಲᰃ䳔㽕໡ᴖҷⷕᮍḜⱘDŽ
Ꮧᇨ㸼䖒ᓣ˖ড৥⊶݄㸼䖒ᓣ‫ܕ‬䆌䯂乬ⱘ㒧ᵰϢᕐℸ੠ᐌ䞣䖯㸠↨䕗DŽ໻ᇣ↨䕗˄↨བᇣ
Ѣ˅੠Ꮧᇨ᪡԰˄Ϣˈ៪ˈ䴲˅䛑ᰃᬃᣕⱘDŽ
ᴵӊ㉏ൟ˖ϝ⾡ᣛҸ㉏ൟ㒘៤њᏗᇨ㸼䖒ᓣDŽ㄀ϔ⾡ˈ♄㡆໘⧚ˈᓔྟࣙᣀ䯂乬೼‫⫼ݙ‬ᴹ
ਞ䆝⌣㾜఼ಲᬊ໘⧚ᦦܹ᭛ᴀⱘऎഫ˄ҹ᳔ৢ᪡԰ヺ㒧ᴳ˅DŽ㄀Ѡ⾡ˈߴ䰸໘⧚ˈᓔྟϔϾ᳔ৢ
㒧ᴳऎഫˈ䖭Ͼऎഫ⫼ѢབᵰᏗᇨ㸼䖒ᓣᰃⳳˈਞ䆝⌣㾜㗙ߴ䰸ࣙᣀ䯂乬೼‫ⱘݙ‬ೈ㒩ⱘ᭛ᴀDŽ
㄀ϝ⾡ˈ‫ܕ‬䆌㸼Ḑ䖯㸠໡ᴖⱘ໮䯂乬⹂䅸ˈ԰Ўϔ⾡ᔎࠊⱘẔᶹ੠ᦤկϔϾ䆞ᮁ⍜ᙃབᵰᇍ↨
༅䋹DŽ

՟ᄤ
ᗱ㗗䖭Ͼ㒣‫ⱘ݌‬䆒㕂乎ᑣ˖Ӵ㒳ⱘІষ䜡㕂
OneOf SerialPort1, SerialPort1Store, SerialPort1Prompt
SerialPort1Help
Option SerialPort1Off, SerialPort1OffText, 0
Option SerialPort13F8, SerialPort3F8Text, 1
Option SerialPort12F8, SerialPort2F8Text, 0

OneOf SerialPort2, SerialPort2Store, SerialPort2Prompt


SerialPort2Help
Option SerialPort2Off, SerialPort1OffText, 0
Option SerialPort13F8, SerialPort3F8Text, 0
Option SerialPort12F8, SerialPort2F8Text, 1

InconsistentIf SerialPortConflict,
SerialPort1 == SerialPort2 and SerialPort1 != 0

ৃ㛑ᰒ⼎བϟ˖
Serial Port 1 Address
ǂ Off

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ǂ At 3F8
ǂ At 2F8
Serial Port 2 Address
ǂ Off
ǂ 3F8
ǂ 2F8
⏋ᴖⱘ VFR ᅮНњϸϾㅔऩᵮВܹষˈ೼䖭䞠㸼⦄Ўऩ䗝ᣝ䪂DŽ↣Ͼ߫㸼Ḛ㋻᥹ⴔ䛑ᰃҪ
ⱘ䗝乍DŽ೼߫㸼Ḛ/䗝乍乎ᑣЁ঺໪ଃϔ᳝ᬜᣛҸᰃಲᬊ໘⧚੠প⍜DŽ
՟བˈ䗝乍㒓ḍ᥂䗝乍ᅮНㄝᬜؐˈ᭛ᴀ˄ĀAt 3F8ā˅੠ᷛ䆄ˈࣙ৿ 1 ԰Ў咬䅸ؐDŽ
ϡヺড়ᴵӊ㒓ᅮНњ䄺ਞᄫヺІDŽ䆹㸼䖒ᓣᰃӮ㹿㓪䆥䖯 RPNDŽ

HII ᭄᥂ᑧ᥹ষ

ᑨ䆹˄‫؛‬䆒˅া᳝ϔϾ HII ᭄᥂ᑧण䆂ⱘᅲ՟DŽᅗᰃ㹿ϔϾ偅ࡼ˄៪㗙ϔ㋏߫ᬃᣕⱘ偅ࡼ˅


⡍߿ഄᬃᣕDŽ䖭ѯ偅ࡼᑨ䆹ᰃা䳔㽕‫ݙ‬ᄬⱘᮍᓣᅲ䰙DŽण䆂ⱘࡳ㛑ᰃᮍ֓ҹϞⱘ䆒䅵DŽ
෎ᴀࡳ㛑㗗㰥ࠄњ HII ᭄᥂ⱘᦤѸ੠ᦤপDŽ᭄᥂ࣙᦤѸⱘᯊ‫ˈ׭‬ᅗӀ㹿ߚ䜡ࠄ೼᭄᥂ᑧЁ݊
ᅗ࠽ϟᯊ䯈᠔⍝ঞⱘহᶘDŽ䖭ѯহᶘЎ䖭㉏ᄫヺІ㒧⚍ᅮНњ᳝ᬜ㣗ೈ, ᠔ҹᄫヺІᇍϔϾ䜡
ᇍ˄হᶘˈᄫヺІ˅ᰃଃϔⱘDŽ
䆹᭄᥂ᑧᏆ㒣㹿䆒䅵៤᳔໻ৃ㛑ഄ䙓‫ܡ‬䇗⫼䖨ಲDŽ՟བˈ 䖭Ͼण䆂Փ೼᭄᥂ࣙ೼㹿ᦤѸࠄ
᭄᥂ᑧПৢ‫ݡ‬㓪䕥ᄫヺІ៤Ўৃ㛑DŽ㽕ᛇᯢⱑ䖭Ͼࡳ㛑ᗢМՓ⫼ˈ‫؛‬䆒ϔϾ偅ࡼᰃ䋳䋷ϔϾऩ
ϔⱘ SCSI Џ᥻ࠊ఼ⱘ䜡㕂ˈ䖭Ͼ SCSI 偅ࡼ೼㓪䆥ⱘ䖛⿟Ёⶹ䘧ᕜ໮䆹䜡㕂ֵᙃˈԚᰃᅗϡⶹ
䘧ϔѯֵᙃˈ՟བ䖲᥹ⱘᰃҔМ㉏ൟⱘ䆒໛DŽSCSI 偅ࡼ㛑໳ᦤѸϔϾ᱂䗮ⱘ᭄᥂ࣙˈ✊ৢḍ᥂
থ⦄ⱘ᥹ܹЏ᥻ࠊ఼ⱘ䆒໛㉏ൟˈ᳈ᮄ⫼ᴹᦣ䗄䖲᥹໪ೈ䆒໛ⱘⳌ݇ᄫヺІDŽ

ᄫヺІ੠㛮ᴀ

‫؛‬䆒㸼Ḑখ㗗ᄫヺІ੠ᄫヺІ㛑໳㹿ϡৠ䇁㿔ᴀഄ࣪ˈ䙷МՓ‫ڣ‬㓪䆥㛮ᴀ䇁㿔䖭ѯ䴲Ҏ㉏
䇁㿔ⱘᴀഄ࣪ⱘᱎ࡯䏇䎗гᰒᕫϡ䙷Мೄ䲒DŽ䖭ህ䳔㽕⍜䌍㗙ᮍ䴶ᬃᣕᇚ HII ᭄᥂ᑧ㗏䆥៤ᴀഄ
䇁⊩ᬃᣕDŽ៪䆌䳔㽕ᬃᣕϸ⾡䇁㿔˖ ϔ⾡ᰃ↣Ͼᷛ‫ޚ‬㛮ᴀ䇁㿔ᬃᣕˈ঺ϔ⾡ᰃ⫳ѻ㒘㒛Ўᅗ㞾
Ꮕࠊ䗴੠㞾ࡼ࣪⌟䆩ⱘᴀഄ࣪DŽ
߿᮴䗝ᢽˈ↣Ͼ೎ӊᖙ乏ᢹ᳝ⳌѦ⣀ゟⱘᴎࠊᴹᬃᣕ↣ϔ⾡㛮ᴀ䜡㕂䇁㿔੠⣀ゟⱘ䜡㕂᭄
᥂ⱘᦣ䗄DŽ䖭⾡ᮍᓣᖙ✊Ӯ๲ࡴᆍ䞣੠๲ࡴ೼ϡৠ偅ࡼП䯈䆩೒ᰒ⼎Ⳍৠֵᙃ㗠ϡ‫ৃⱘ⹂ޚ‬㛑
ᗻDŽ

偅ࡼ䆒䅵ⱘ⊼ᛣ⚍

HII ᄫヺІ੠㸼Ḑᇍऩϔ偅ࡼᰃᴀഄ࣪ⱘDŽ✊㗠䖭ᑊϡᛣੇ↣Ͼ偅ࡼᖙ乏ᦤկ⣀ゟⱘ HII ࣙDŽ


↨བˈϔϾऩϔ偅ࡼ˄៪㗙ৃ㛑ᰃϔѯ˅ᳳᳯЎЏᵓᦤկ HII ᭄᥂ⱘDŽ䖭ѯ偅ࡼᰃ㹿ᳳᳯ៤ЎЏ
ᵓ⡍᳝ⱘˈᅗӀ݊Ёϔ乍䋷ӏᰃЎ݊Ҫ偅ࡼߚ䜡䜡㕂᭄᥂DŽ
ᔎࠊᠻ㸠䖭⾡䆒䅵᳝ҹϟϔѯ⧚⬅ˈ⡍߿ᰃˈ䅽ᑇৄᦤկ⫼᠋᥹ষ‫ܕ‬䆌䆒䅵㗙এ᥻ࠊ䙷ѯ
䆶䯂⫼᠋ᅲ䰙ᴹ㦋ᕫㄨḜ੠䙷ѯֱᄬ⫼݊Ҫᮍᓣ㦋পⱘᐌ䞣DŽ໪ೈ偅ࡼⱘ䆒䅵㗙ᖙ乏ᦤկЎњ
ֱ䆕偅ࡼሲᗻ㗠໻㟈Ϟ䳔㽕ⱘ᱂䘡䯂乬ⱘ䍙䲚DŽ✊ৢᑇৄ偅ࡼህ㛑໳ḍ᥂䳔㽕ᴹ㓪䕥DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

੠ᨬᔩ䯂乬ϔḋˈ䖭⾡ᮍ⊩‫ܕ‬䆌ᑇৄ䆒䅵㗙೼᭛ᴀḋᓣ੠ण䇗ֱᣕϔ㟈ᗻDŽ䖭г᳝ⲞѢ㡖
㑺ᄫԧぎ䯈DŽ

᭄᥂Ёᖗ

ਃࡼ೎ӊ㦋ᕫ໻䞣ⱘ᭄᥂԰Ўᅗⱘ䰘ሲᎹ԰DŽ৘⾡෎Ѣ᪡԰㋏㒳ⱘՓ⫼㗙ᇍ݊Ёϔѯ䖭⾡
᭄᥂ᛳ݈䍷DŽ᭄᥂Ёᖗᰃϔ⾡ᴎࠊˈ䗮䖛䖭⾡ᴎࠊˈᓎゟ᭄᥂ⱘ偅ࡼᇍᓎゟ᥹ষᴹᦤկ㒭Փ⫼
㗙≵᳝ҔМ㑺ᴳ࡯DŽ᭄᥂Ёᖗձ䰘 DXE 㗠ᄬ೼ˈ㗠Ϩ↣⃵ਃࡼህ䞡ᓎˈሑㅵᶤѯᦤկ㒭ᅗⱘ᭄
᥂ ৃ 㛑 ᰃ 䴲 ᯧ ᣹ থ ⱘ ᭄ ᥂ DŽ ᅗ ⱘ 䆒 䅵 ᰃ ⫳ ѻ 㗙 / Փ ⫼ 㗙 ῵ ൟ ⱘ 㒣 ‫ ݌‬՟ ᄤ DŽ 䖭 Ͼ ᥹ ষ Ⳉࠄ
ExitBootServices ϔⳈᄬ೼DŽ
བᵰԴᓔྟ䅸Ў䖭‫ڣ‬џӊ᮹ᖫˈ䙷Դ⾏៤ࡳህϡ䘹䖰њDŽϪ⬠Ϟᄬ೼བℸ໮ⱘᎹϮᷛ‫ޚ‬䗮
䖛џӊ᮹ᖫᴹᅮН݊ᛣНˈFramework ⫼ϔϾϡৠৡᄫDŽ
ᖂᔅᤚ㒥ⱘໄᯢᰃᕜ䞡㽕ⱘDŽ᭄᥂ЁᖗⱘⳂⱘᰃҢᅗӀⱘՓ⫼㗙ᴹᢑ䈵᭄࣪᥂ⱘѻ⫳㗙DŽ
Փ⫼䖭Ͼ῵ൟˈѻ⫳㗙≵᳝ᖙ㽕ⶹ䘧㋏㒳䳔㽕䙉ᕾҔМḋⱘㅵ⧚ᷛ‫ˈޚ‬гϡ䳔㽕ᢹ᳝↣ϔ⾡䳔
㽕ⱘ᥹ষ੠Ԉ䱣݊ⱘ໻ᇣⱘᕅડDŽՓ⫼㗙г㛑໳᳈ࡴㅔऩഄ㓪䕥䗖ড়ҪӀ䳔㽕ⱘ᭄᥂DŽ

⍜ᙃ乎ᑣ

ϡᰃ᠔᳝⫳ѻ㗙䛑ᰃ೼݊Փ⫼㗙Пࠡ䖤㸠ⱘˈ䖭ᰃᕜ᳝ৃ㛑ⱘDŽབ೒ 11.3 ᠔⼎ˈ᭄᥂Ёᖗ


ⱘ᭄᥂ᰃ԰Ў᭄᥂䆄ᔩ˄᭄᥂ഫᰃҢѻ⫳㗙থ䗕ࠄ᭄᥂Ёᖗᴀ䑿˅᮹ᖫֱᄬⱘDŽ䖭ѯ᭄᥂䛑ᖙ
乏ҹ䆄ᔩֱ⬭ⱘ᥹ᬊ乎ᑣ˄Ң᳔ᮻⱘࠄ᳔ᮄⱘ˅ֱᄬˈᅲ䰙Ϟᰃᯊ䯈੠ऩϔⱘᷛㅒDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 11 3 Data Hub

䆄ᔩᰃ䗮䖛᭄᥂Ёᖗण䆂Ң᭄᥂Ёᖗᦤկ੠㦋পⱘDŽᔧᮄⱘ䆄ᔩӴࠄ᭄᥂Ёᖗⱘᯊ‫׭‬,Փ⫼
㗙ৃ㛑ᇚᅗӀ㞾ᏅᅮНЎ䖛Ⓒ偅ࡼᴹ㦋ᕫ䗮ⶹ˄੠಴ℸ㗠⫳ⱘ᥻ࠊ˅DŽ
ᔧՓ⫼㗙⊼‫ݠ‬㽕Ң᭄᥂Ёᖗ᥹ᬊ᭄᥂ˈᅗ佪‫ܜ‬䗮䖛᭄᥂ЁᖗЎ㦋প᠔᳝ᔧֱࠡ⬭ⱘ᭄᥂ᡓ
ᢙ䋷ӏDŽ✊ৢᅗᠡ㛑໳᥹ᬊᅗӀѻ⫳ⱘ᭄᥂DŽ಴ЎᅮНⱘ᭄᥂ϡᰃᯊᑣ㟇݇䞡㽕ⱘˈ䖭ህᛣੇ
ⴔՓ⫼㗙ϡ㛑໳ऎߚ݊䳔㽕ⱘ᭄᥂ᰃ೼⊼‫ݠ‬Пࠡѻ⫳ⱘ៪㗙Пৢ៪㗙Ё䯈DŽ
㱑✊ϡ哧ࢅˈԚᰃЎњ⫳ѻ偅ࡼ㗠ᦤկ݇Ѣϔѯ⡍ᅮ‫ݙ‬ᆍ៪㗙џӊ੠ҹৢ᳈ᮄ䙷ѯ㦋পⱘ
᳈ࡴ䆺㒚ⱘ᭄᥂ҡ✊ᰃ᳝ᬜⱘDŽৠḋⱘˈ᭄᥂Ёᖗϡ㓪䕥ৠ㉏߿ⱘᮻⱘ⍜ᙃˈԚᰃ໘⧚᠔᳝㽕
∖ⱘ⍜ᙃDŽ㱑✊ϡᰃ䗮䖛᭄᥂Ёᖗᠻ㸠ˈ㋏㒳㸼⼎ⱘ䖯ሩᰃ㉏ԐѢ‫ݙ‬ᄬ HOB Ң PEI Ӵ䗕ࠄ DXEDŽ
DXE 偅ࡼৃ㛑᳈ᮄ‫ݙ‬ᄬՓ⫼᯴ᇘ˄೼ Global Coherency Domain˅԰Ў߱ྟ࣪ҪӀ਼䖍ⱘ䆒
໛DŽ೼㋏㒳Ёⱘ‫ݙ‬ᄬՓ⫼᯴‫ڣ‬বᕫ䍞ᴹ䍞‫ڣ‬ᰃਃࡼ䖛⿟ⱘᓊ㓁DŽ

ৃ㓪䕥ⱘ㉏

ϔϾЏ㽕ⱘ䯂乬ᰃ᭄᥂Ёᖗ᭄᥂ⱘѻ⫳㗙԰Ў䗮䖛ᎹϮᷛ‫ޚ‬੠‫ݙ‬䚼Փ⫼ᚙ‫މ‬᠔ᖙ乏ⱘˈ䖛
Ⓒ᭄᥂ՓП៤Ўৃㅵ⧚ⱘぎ䯈DŽⳌৠ᭄᥂ⱘϡৠ㒘ড়ৃ㛑㹿ҷⷕᬃᣕⱘㅵ⧚᥹ষ᠔Փ⫼ˈ‫ڣ‬
SMBIOSˈIPMIˈгࣙᣀ䆘Ӌ੠ࠊ䗴ᬃᣕⱘ‫ݙ‬䚼Փ⫼㗙DŽ↣ϾՓ⫼㗙ᇚ⧚䆎Ϟাⳟࠄᅗ݇ᖗⱘ᭄
᥂DŽ
᭄᥂Ёᖗ䆒䅵ⳂᷛᅮԡѢ㽕∖ѻ⫳㗙䗮䖛Ā㉏āᴹᷛ䆄᭄᥂DŽՓ⫼㉏ᰃⳌᔧ᱂䘡˄↨བ໘
⧚఼ˈ‫ݙ‬ᄬ੠໪ೈ䆒໛˅ᰃ԰Ў Framework 㾘㣗ⱘϔ䚼ߚᅮНⱘDŽHeadroom ᰃ೼㉏ᅮНЁ
࠽ϟഄ⫼ᴹᬃᣕ೼ᅮНⱘ㉏П໪ⱘ᭄᥂DŽՓ⫼㗙ৃҹ⊼‫ݠ‬䗮䖛㉏᥹ᬊ⍜ᙃ੠ᅠ៤ᅗᴀ䑿᠔᳝ⱘ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㓪䕥DŽ೼Փ⫼Пࠡˈ෎ѢՓ⫼ⱘ偅ࡼ໮䙉ᕾⱘ㾘㣗ᴹᦤկ㒭Փ⫼㗙ⱘ᭄᥂ৃ㛑䳔㽕ҢᮄḐᓣ࣪
˄↨བˈҢ‫ܚ‬䌿‫ࠄݍ‬ग‫ܚ‬䌿‫˅ݍ‬DŽ

໘⧚ҷⷕ

᭄᥂ЁᖗϔϾϡᗢМᯢᰒⱘ⫼⊩ᰃ԰Ў໘⧚ҷⷕⱘᢑপ䖛⿟DŽᄬ೼᳈ࡴ‫ܜ‬䖯ⱘ POST
Codes˄៪㗙 80 ッষҷⷕˈҢवⱘᷛ‫ޚ‬ഄഔᓔྟ˅ⱘ⠜ᴀDŽ໘⧚ҷⷕᰃ㹿ᦤկ⫼ѢՓ⫼Ⳍৠ
᭄᥂Ёᖗᴎࠊ԰Ў݊Ҫ᭄᥂Ёᖗ᭄᥂䆄ᔩˈᅲ䰙ϞˈᰃĀ㉏āDŽ
䗮䖛᭄᥂Ёᖗ偅ࡼ໘⧚ҷⷕ㾷‫އ‬ϔѯ⫼݊Ҫࡲ⊩ⳌᔧẬ᠟ⱘ䯂乬DŽ佪‫ˈܜ‬བᵰϡৠⱘ偅ࡼ
᳝ϡৠ㒘㒛ᓔথˈ໘⧚ҷⷕ˄Port 80 वᰃ䰤ࠊ೼ 256 Ͼؐ˖00 ࠄ FF˅ᇚᗢḋ೼偅ࡼП䯈ߚ䜡˛
䆞ᮁ䖛⿟ЁˈϔϾ偅ࡼৃҹḍ᥂䳔㽕Փ⫼䆌໮⢊ᗕҷⷕDŽ✊㗠ˈᇍѢѻક偅ࡼˈ᠔᳝偅ࡼ㽕ᡞ
ᅗӀⱘ໘⧚ҷⷕথ䗕ࠄ᭄᥂ЁᖗDŽ✊ৢ⢊ᗕ偅ࡼ㛑໳㹿䆄ᔩˈ䖭Ͼ偅ࡼ᯴ᇘ䖭ѯ䆄ᔩࠄᑇৄᛳ
݈䍷ⱘ᡹ਞDŽ㄀Ѡˈ᮹ᖫгৃ㛑԰Ў㋏㒳㸼Ḑⱘϔ䚼ߚ㹿㦋প੠ᦤկˈ՟བˈ䗮䖛 post-boot
ߚᵤⱘ偅ࡼDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀कѠゴ
';( 偅ࡼ੠ (), 偅ࡼП䯈ⱘऎ߿
ᇚ䜦ᦎ䍋ᴹୱг䆌ᰃϾ䫭䇃ˈԚᮄ㗕ᱎ᜻ैᅠ㕢ഄ㵡ড়೼ϔ䍋DŽ
—Bertrolt Brecht

EFI ৃҹҹ໮⾡ᮍᓣᠻ㸠ˈϔ⾡ᰃ䗮䖛 Framework ⱘ෎⸔䚼ߚ DXE ᠻ㸠ˈ䖭ḋˈDXE ҷ


㸼њϔ⾡⡍⅞㉏ൟ偅ࡼˈ䖭㉏偅ࡼ㛑໳੠ EFI 偅ࡼ㒘ড়೼ϔ䍋ᬒࠄᣛᅮⱘ Firmware Volume 䞠
䴶DŽ
᳝ϸ⾡෎ᴀ㉏ൟⱘ DXE 偅ࡼDŽ㄀ϔ⾡ᰃ೼ DEX ᮽᳳ䰊↉ᠻ㸠ⱘ偅ࡼˈDXE 偅ࡼⱘᠻ㸠乎
ᑣপ‫އ‬Ѣձ䌪݇㋏㸼䖒ᓣⱘؐDŽ䗮ᐌˈ䖭ѯᮽᳳⱘ DXE 偅ࡼࣙ৿њ෎⸔᳡ࡵˈ໘⧚఼ⱘ߱ྟ࣪
ҷⷕˈ㢃⠛㒘੠ᑇৄⱘ߱ྟ࣪ҷⷕDŽৠᯊ䖭ѯ偅ࡼЎ DXE Ḍᖗѻ⫳ᅠᭈⱘ EFI ਃࡼ᳡ࡵ੠䖤㸠
ᯊ᳡ࡵᦤկ᠔䳔㽕ⱘᶊᵘण䆂DŽЎњᦤկሑৃ㛑᳔ᖿⱘਃࡼᯊ䯈ˈᕜ໮ⱘ߱ྟ࣪㽕ϡৠѢヺড়
೼ EFI1.10 㾘㣗Ёᦣ䗄ⱘ EFI 偅ࡼ῵ᓣⱘ DXE ⱘ偅ࡼˈ໻䚼ߚᑇৄ੠㢃⠛㒘偅ࡼሲѢ䖭⾡㉏ൟDŽ
ؐᕫ⊼ᛣⱘᰃˈᔧ䖭㉏ Drivers ᠻ㸠ᯊˈᑊϡᰃ᠔᳝ⱘ services 䛑ᰃৃ⫼ⱘ˗ᅗӀ䗮䖛ձ䌪㸼
䖒ᓣᴹ⹂ֱ᠔䳔 protocols ҹঞ services ৃ⫼DŽ
㄀Ѡ⾡ DXE 偅ࡼ⬅䙷ѯヺড় EFI 偅ࡼ῵ᓣП偅ࡼᵘ៤DŽ䖭ѯ偅ࡼ೼߱ྟ࣪ⱘᯊ‫׭‬ϡ᪡԰ӏ
ԩ⹀ӊ䌘⑤DŽⳌডˈᅗӀ⊼‫ݠ‬ϔϾ偅ࡼ㒥ᅮण䆂᥹ষࠄহᶘ᭄᥂ᑧЁDŽBDS 䰊↉ӮՓ⫼偅ࡼ㒥
ᅮण䆂ᴹ䖲᥹偅ࡼࠄ䙷ѯ䳔㽕ᓎゟ᥻ࠊৄ੠ᦤկ䆓䯂ᴹਃࡼ䆒໛ⱘ䆒໛ϞDŽ᳔㒜ˈ䙉ᕾ EFI ῵ᓣ
П DXE 偅ࡼЎ᥻ࠊৄ䆒໛੠ਃࡼ䆒໛ᦤկϔ⾡䕃ӊᢑ䈵——ᔧ✊ˈা᳝ᯢ⹂ഄ㽕∖ᠡӮᦤկ䆹
ᢑ䈵DŽ᠔᳝ⱘᘏ㒓偅ࡼ(ࣙ৿ PCI ᘏ㒓ᵮВ)੠ EFI ROMs ሲѢℸ㉏㣗⭈DŽ
䰸њҹϞ䖭ѯ偅ࡼ㉏ൟˈDXE 偅ࡼՓ⫼њϸ⾡ EFI 偅ࡼᅠܼϡӮ⫼ࠄⱘ serviceˈ⹂ߛഄ䇈
ህᰃ Global Coherency Domain (GCD)੠෎Ѣձ䌪㸼䖒ᓣⱘߚথ఼(Dependency
Expression-Depex)ˈᇍ EFI 偅ࡼᴹ䇈ˈࠡ㗙ᰃ↿᮴ᛣНⱘˈ಴Ў EFI ⱘ‫ݙ‬ᄬ᯴ᇘᰃᅠܼᅲ՟࣪
ⱘ˗㗠ৢ㗙ˈ᠔᳝ⱘᖙ乏 service 䛑ᰃৃ⫼ⱘˈ㗠ϔϾ EFI 偅ࡼᯢ⹂ഄࣙ৿ϡᄬ೼ⱘߚথ఼
˄Depex˅——े䅸Ў EFI 偅ࡼ೼ӏԩϔϾ DXE 偅ࡼᢹ᳝䴲ぎ Depex ᯊህ㹿ߚথњDŽDepex
ⱘ㔎⚍೼Ѣৃ㛑䗴៤ EFI 偅ࡼ⏋хˈ಴ЎˈEFI 偅ࡼৃ㛑ᮽѢ Depex ᄬ೼៪㗙 EFI 偅ࡼ≵᳝ᛣ䆚
ࠄ DXE 偅ࡼⱘ Framework ᅲ⦄ᰃ೼⡍ᅮⱘ⹀ӊ⦃๗ЁDŽ
GCD ੠෎Ѣձ䌪ⱘ⌒䘷ⱘՓ⫼ᚙ‫މ‬ᇍϢऎߚ EFI 偅ࡼ੠ DXE 偅ࡼᕜ䞡㽕ⱘˈৢ䴶ⱘ䚼ߚ
ᇚ‫خ‬䆺㒚ᦣ䗄DŽ

*&' ᳡ࡵ˖

GCD ᳡ࡵⱘㅔ䗄˖
GCD ᳡ࡵ⫼ᴹㅵ⧚ਃࡼ໘⧚఼ⱘ᠔㛑ᥠᦵⱘ‫ݙ‬ᄬ੠ IO 䌘⑤DŽ䖭ѯ䌘⑤ߚ៤ 2 ⾡᯴ᇘ˖

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

GCD ‫ݙ‬ᄬぎ䯈᯴ᇘ
GCD IO ぎ䯈᯴ᇘ
བᵰ᳝‫ݙ‬ᄬ៪㗙 IO 䌘⑤ⱘ⏏ࡴˈߴ䰸ˈߚ䜡੠䞞ᬒˈ䙷М GCD ⱘ‫ݙ‬ᄬ੠ IO ぎ䯈᯴‫ڣ‬ህ
㽕᳈ᮄDŽGCD ᳡ࡵгᦤկњ㦋প䖭ϸ⾡䌘⑤ⱘ᯴‫ⱘڣ‬᳡ࡵDŽ
GCD ᳡ࡵߚ៤ 2 ㉏ˈ㄀ϔ㉏ㅵ⧚ਃࡼ໘⧚఼ৃ㾕ⱘ‫ݙ‬ᄬ䌘⑤ˈ㄀ 2 ㉏㉏ᰃ⧚ਃࡼ໘⧚఼
ৃ㾕ⱘ IO 䌘⑤DŽᑊϡᰃ᠔᳝ⱘ໘⧚఼䛑᳝ IO 䌘⑤ˈ᠔ҹᑊϡϔᅮ䳔㽕᳝ᇍ IO 䌘⑤ⱘㅵ⧚DŽ
Ԛᰃᠻ㸠 DEX ⱘ⦃๗ᰃ䳔㽕㋏㒳‫ݙ‬ᄬ੠‫ݙ‬ᄬ᯴ᇘ䌘⑤ⱘˈ᠔ҹᇍ‫ݙ‬ᄬ䌘⑤ⱘㅵ⧚ᘏᰃᖙ乏ⱘDŽ
GCD Ё⫼ᴹㅵ⧚‫ݙ‬ᄬ䌘⑤ⱘ᳡ࡵ᳝˖
AddMemorySpace()
AllocateMemorySpace()
FreeMemorySpace()
RemoveMemorySpace()
SetMemorySpaceAttributes()
GCD Ё⫼ᴹ㦋প GCD ‫ݙ‬ᄬぎ䯈᯴ᇘⱘ᳡ࡵ᳝˖
GetMemorySpaceDescriptor()
GetMemorySpaceMap()
GCD ⱘ‫ݙ‬ᄬぎ䯈᯴ᇘⱘᓎゟᴹ㞾ѢӴ䗦㒭 DXE Foundation ⱘܹষখ᭄ HOB listDŽ݊Ёϔ
⾡ HOB ㉏ൟᦣ䗄њ⫼ᴹ䆓䯂‫ݙ‬ᄬ䌘⑤ⱘഄഔ㒓᭄䞣DŽ䖭Ͼֵᙃ⫼ᴹ߱ྟ࣪ GCD ‫ݙ‬ᄬぎ䯈᯴ᇘ
ⱘ⢊ᗕDŽ᠔᳝ϡ೼߱ྟ࣪㣗ೈ˄⬅ HOB ㉏ൟᣛᅮⱘഄഔ㒓᭄䞣‫އ‬ᅮ˅‫ݙⱘݙ‬ᄬऎ䯈ᇍѢӏԩ⫼
ᴹㅵ⧚‫ݙ‬ᄬ䌘⑤ⱘ GCD ᳡ࡵᴹ䇈ˈ䛑ᰃϡৃ⫼ⱘDŽGCD ‫ݙ‬ᄬぎ䯈᯴ᇘᰃ㹿䆒䅵⫼ᴹᦣ䗄໮䖒
2^64 bit ⱘ‫ݙ‬ᄬぎ䯈DŽ೼ GCD ‫ݙ‬ᄬぎ䯈᯴ᇘ䞠䴶ˈ↣Ͼ‫ݙ‬ᄬऎ䯈䛑㛑໳ҹऩϔ byte ᇍ唤DŽ঺
໪ϔ⾡ HOB ㉏ൟᦣ䗄њ㋏㒳‫ݙ‬ᄬⱘԡ㕂ˈIO ᯴ᇘⱘ‫ݙ‬ᄬԡ㕂ˈ೎ӊ䆒໛ⱘԡ㕂ˈFV ⱘԡ㕂ˈ
ֱ⬭ऎඳⱘԡ㕂ˈҹঞџ‫ܜ‬Ўᠻ㸠 DXE Foundation ᠔ߚ䜡ⱘ㋏㒳‫ݙ‬ᄬⱘԡ㕂DŽDXE
Foundation ᖙ乏㾷ᵤ HOB list Ϟⱘ‫ݙ‬ᆍˈҹ⹂ֱ乘‫⬭ֱܜ‬㒭ᠻ㸠 DEX Foundation ⱘ‫ݙ‬ᄬऎ
䯈ᰃ᳝ᬜⱘDŽ݊㒧ᵰህᰃˈGCD ‫ݙ‬ᄬぎ䯈ᖙ乏ড᯴ HOB list Ё᠔ᦣ䗄ⱘ‫ݙ‬ᄬऎඳDŽGCD ‫ݙ‬ᄬ
ぎ䯈᯴ᇘ㒭 DXEFoundation ߱ྟ࣪‫ݙ‬ᄬ᳡ࡵབ AllocatePages()ˈFreePages()ˈ
AllocatePool()ˈFreePool()ˈGetMemoryMap()ᦤկњᖙ䳔ⱘֵᙃDŽ݇Ѣ䖭ѯ‫ݙ‬ᄬ᳡ࡵⱘ䆺
㒚ᅮН䇋খ㾕 EFI1.10 ⱘ specDŽ
೼ GCD ‫ݙ‬ᄬぎ䯈᯴ᇘЁⱘϔ↉‫ݙ‬ᄬऎ䯈ৃҹᰃབϟ޴⾡⢊ᗕ˖
Nonexistent memory
System memory
Memory-mapped I/O
Reserved memory
䖭ѯ‫ݙ‬ᄬऎ䯈ˈ೼ DXE ⦃๗Ёৃҹ⬅ DXE 偅ࡼᴹߚ䜡੠䞞ᬒDŽℸ໪ˈDXE 偅ࡼ 㛑໳ᇱ䆩
এ䇗ᭈϔ↉‫ݙ‬ᄬऎඳⱘ cache ሲᗻDŽ೒ 21.1 ሩ⼎њ GCD ‫ݙ‬ᄬぎ䯈᯴ᇘЁ‫ݙ‬ᄬⱘ↣Ͼ byte
ⱘ⢊ᗕ䕀ᤶৃ㛑DŽ䖭⾡䕀ᤶ㹿ᠧϞ GCD ᳡ࡵⱘᷛ䆄ˈGCD ᳡ࡵ㛑໳ᇚϔϾ byte Ңϔ⾡⢊ᗕ
বЎ঺ϔ⾡⢊ᗕDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 12 1 GCD Memory State Transitions

GCD ᳡ࡵᕫᡞ䙷ѯЈ䖥ⱘⳌԐ‫ݙ‬ᄬऎ䯈ড়ᑊˈᑊ㒭ᅗӀҹऩϔⱘ‫ݙ‬ᄬᦣ䗄ヺˈ䖭ḋ֓‫ޣ‬ᇥ
њ GDC ‫ݙ‬ᄬぎ䯈᯴ᇘЁ‫ݙ‬ᄬᦣ䗄ヺП᭄䞣DŽ
GCD IO 䌘⑤
⫼ᴹㅵ⧚ I/O 䌘⑤ⱘ GCD ᳡ࡵ˖
AddIoSpace()
AllocateIoSpace()
FreeIoSpace()
RemoveIoSpace()
⫼ᴹ㦋প GCD I/O ぎ䯈᯴ᇘⱘ GCD ᳡ࡵ˖
GetIoSpaceDescriptor()
GetIoSpaceMap()
GCD ⱘ I/O ぎ䯈᯴ᇘⱘᓎゟᴹ㞾ѢӴ䗦㒭 DXE Foundation ⱘܹষখ᭄ HOB listDŽ ݊Ё
ϔ⾡ HOB ㉏ൟᦣ䗄њ⫼ᴹ䆓䯂 I/O 䌘⑤ⱘഄഔ㒓᭄䞣DŽ䖭Ͼֵᙃ⫼ᴹ߱ྟ࣪ GCD I/O ぎ䯈᯴
ᇘⱘ⢊ᗕDŽ᠔᳝ϡ೼߱ྟ࣪㣗ೈ˄⬅ HOB ㉏ൟᣛᅮⱘഄഔ㒓᭄䞣‫އ‬ᅮ˅‫ ⱘݙ‬I/O ऎ䯈ᇍѢӏԩ
⫼ᴹㅵ⧚ I/O 䌘⑤ⱘ GCD ᳡ࡵᴹ䇈ˈ䛑ᰃϡৃ⫼ⱘDŽGCD I/O ぎ䯈᯴ᇘᰃ㹿䆒䅵⫼ᴹᦣ䗄໮

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

䖒 2^64 bit ⱘ I/O ഄഔぎ䯈DŽ೼ GCD I/O ぎ䯈᯴ᇘ䞠䴶ˈ↣Ͼऎ䯈䛑㛑໳ҹऩϔ byte ᇍ唤DŽ

೒ 12 2 GCD I/O State Transitions

ϔϾ⬅ GDC I/O ぎ䯈᯴ᇘᦣ䗄ⱘ I/O ऎ䯈᳝䖭ḋ޴⾡ϡৠⱘ⢊ᗕ˖ϡᄬ೼ⱘ I/OˈI/O ੠


ֱ⬭ⱘ I/ODŽ䖭ѯ I/O ऎ䯈ˈ೼ DXE ⦃๗Ёৃҹ⬅ DXE 偅ࡼᴹߚ䜡੠䞞ᬒDŽ೒ 12.2 ሩ⼎њ GCD
I/O ぎ䯈᯴ᇘЁ I/O ⱘ↣Ͼ byte ⱘ⢊ᗕ䕀ᤶৃ㛑DŽ䖭⾡䕀ᤶ㹿ᠧϞ GCD ᳡ࡵⱘᷛ䆄ˈGCD
᳡ࡵ㛑໳ᇚϔϾ byte Ңϔ⾡⢊ᗕবЎ঺ϔ⾡⢊ᗕDŽ GCD ᳡ࡵᕫᡞ䙷ѯЈ䖥ⱘⳌԐ I/O ऎ䯈
ড়ᑊˈᑊ㒭ᅗӀҹऩϔⱘ I/O ᦣ䗄ヺˈ䖭ḋ֓‫ޣ‬ᇥњ GDC I/O ぎ䯈᯴ᇘЁ I/O ᦣ䗄ヺП᭄䞣DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㸼 12 1 Global Coherency Domain Services


Name Type Description
Adds reserved memory, system memory, or
AddMemorySpace Boot memory-mapped I/O resources to the global
coherency domain of the processor.
Allocates nonexistent memory, reserved memory,
AllocateMemorySpace Boot system memory, or memory-mapped I/O resources
from the global coherency do- main of the processor.
Frees nonexistent memory, reserved memory, system
FreeMemorySpace Boot memory, or memory-mapped I/O re- sources from the
global coherency domain of the processor.
Removes reserved memory, system memory, or
RemoveMemorySpace Boot memory-mapped I/O resources from the global
coherency domain of the processor.
Retrieves the descriptor for a memory region
GetMemorySpaceDescriptor Boot
containing a specified address.
Modifies the attributes for a memory region in the
SetMemorySpaceAttributes Boot
global coherency domain of the processor.
Returns a map of the memory resources in
GetMemorySpaceMap Boot
the global coherency domain of the processor.
Adds reserved I/O, or I/O resources to the global
AddIoSpace Boot
coherency domain of the processor.
Allocates nonexistent I/O, reserved I/O, or I/O
AllocateIoSpace Boot resources from the global coherency domain of the
processor.
Frees nonexistent I/O, reserved I/O, or I/O
FreeIoSpace Boot resources from the global coherency domain of the
processor.
Removes reserved I/O, or I/O resources from the
RemoveIoSpace Boot
global coherency domain of the processor.
Retrieves the descriptor for an I/O region con- taining
GetIoSpaceDescriptor Boot
a specified address.
Returns a map of the I/O resources in the global
GetIoSpaceMap Boot
coherency domain of the processor.

೼ᶤϔᑇৄϞˈ䙷ѯ㒘៤ GCD ᳡ࡵⱘߑ᭄೼ preboot 䰊↉㹿䇗⫼ˈҹ䖒ࠄ⏏ࡴǃߴ䰸ǃ


ߚ䜡ǃ䞞ᬒ੠ᦤկ㋏㒳‫ݙ‬ᄬ᯴ᇘǃI/O ‫ݙ‬ᄬ᯴ᇘҹঞ I/o 䌘⑤DŽ䖭ѯ᳡ࡵ੠‫ݙ‬ᄬߚ䜡᳡ࡵϔ䍋ˈ
䌟ќњᑇৄㅵ⧚᠔᳝‫ݙ‬ᄬ੠ I/O 䌘⑤ⱘ㛑࡯DŽ㸼 12.1 ߫ߎњ GCD ᳡ࡵDŽ

'LVSDWFKHU᳡ࡵ

㸼 12 2 Dispatcher Services
Name Type Description
Dispatch Boot Loads and executed DXE drivers from firmware
volumes.
Schedule Boot Clears the Schedule on Request (SOR) flag for a
component that is stored in a firmware volume.
Trust Boot Changes the state of a file stored in a firmware
volume from the untrusted state to the trusted
state.
ProcessFirmwareVolume Boot Creates a firmware volume handle for a firmware
volume that is present in system memory.

㒘៤ Dispatcher ᳡ࡵⱘߑ᭄೼ preboot 䰊↉㹿䇗⫼ˈҹ䇗ᑺ偅ࡼПᠻ㸠DŽ೼偅ࡼձ䌪݇


㋏㸼䖒ᓣЁˈ偅ࡼৃҹ᳝䗝ᢽⱘᇚ SQR(Schedule On Request˅flag 㕂ԡDŽ㹿㕂ԡП偅ࡼϡ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ӯ㹿ࡴ䕑Ⳉࠄᰒ⼎ⱘ䇋∖ࠄᴹDŽҢ FV(Firmware Volumes)Ёࡴ䕑ⱘ᭛ӊৃ㛑㹿ᅝܼᶊᵘण䆂


(Security Architectural Protocol)㕂Ў untrusted П⢊ᗕDŽDispatcher ᳡ࡵ᳝㛑࡯೼ DXE 偅
ࡼⱘձ䌪݇㋏㸼䖒ᓣ䞠⏙䰸 SOR Flag ҹঞᇚҢ FV Ёࡴ䕑ⱘ᭛ӊ⬅ untrusted ⢊ᗕᦤछ㟇
trusted ⢊ᗕDŽ㸼 12.2 ߫ߎњ Dispatcher ᳡ࡵDŽ

ձ䌪݇㋏㸼䖒ᓣП䗚⊶݄㸼䖒ᓣ 531 

ᅲ䰙ⱘㄝᓣ⬅ DXE 偅ࡼҹϔϾᯧѢ䅵ㅫⱘᔶᓣ——ेˈৢ㓔——ᴹ㸼⼎DŽϟ䴶ⱘϔ↉䇁⊩


ヺড় BNF(Ꮘ⾥ᮃ㣗ᓣ)㓪ⷕDŽ᳈໮䆺ᚙ䇋খࡴձ䌪݇㋏㸼䖒ᣛҸ䲚DŽ
<statement> ::= SOR<expression> END| BEFORE<guid> END | AFTER<guid> END |
<expression> END
<expression> ::= PUSH<guid> | TRUE|FALSE|
<expression> NOT|
<expression> <expression> OR|
<expression> <expression> AND

';('LVSDWFKHU ⢊ᗕᴎ

DXE Dispatcher ⱘ㘠䋷೼ѢˈҢ DXE 偅ࡼ೼ FV Ё㹿থ⦄ϔⳈࠄ ExitBootServices()㹿䇗


⫼ᴹ㒜ℶ DXE Foundation 䖭↉ᯊ䯈‫ˈݙ‬䗑䏾 DXE 偅ࡼⱘ⢊ᗕDŽ೼䖭↉ᯊ䯈‫↣ˈݙ‬Ͼ DXE 偅
ࡼ䛑ৃ㛑᭄᳝⾡ϡৠ⢊ᗕDŽ೼೒ 12.3 Ёሩ⼎њ⫼ᴹ䗑䏾 DXE 偅ࡼⱘ DXE Dispatcher ⢊ᗕᴎDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 12 3 DXE Driver States

ϔϾ DXE 偅ࡼ⬅ Undiscovered ⢊ᗕᓔྟˈгህᰃ䇈ˈDXE 偅ࡼᄬ೼Ѣ FV Ёˈ㗠 DXE


Dispatcher ᇮ᳾ⶹ݊ᄬ೼DŽᔧ DXE Dispatcher থ⦄њϔϾᮄ FVˈӏԩ೼䖭 FV ⱘ priori ᭛ӊ
Ё߫ߎⱘ DXE 偅ࡼӮ㹿ゟेࡴ䕑੠ᠻ㸠DŽ೼ priori ᭛ӊЁ߫ߎⱘ DXE 偅ࡼゟे㹿ᦤछ㟇
Scheduled ⢊ᗕDŽ᥹ϟᴹˈDXE Dispatcher Ӯ᧰㋶ FVˈᡒߎ䙷ѯ᳾߫ߎ೼ priori ᭛ӊЁⱘ
DXE 偅ࡼˈӏԩ㹿ᡒࠄⱘ偅ࡼˈ݊⢊ᗕᇚҢ Undiscovered ᦤछ㟇 DiscoveredDŽ↣Ͼ DXE 偅
ࡼⱘձ䌪݇㋏㸼䖒ᓣ䛑ᇚ㹿䅵ㅫDŽབᵰ೼ձ䌪݇㋏㸼䖒ᓣЁˈSOR 㹿㕂ԡˈ䙷М䖭Ͼ DXE 偅ࡼ
㹿㕂Ў Unrequested ⢊ᗕ˗བᵰ SOR ᳾㹿㕂ԡˈ䙷М䖭Ͼ DXE 偅ࡼ㹿㕂Ў Dependent ⢊ᗕDŽ
ϔᮺᶤϾ DXE 偅ࡼ໘Ѣ Unrequested ⢊ᗕˈᅗা㛑䗮䖛䇗⫼ DXE ᳡ࡵⱘ Schedule()ߑ᭄ᴹ
ᇚ⢊ᗕᦤछ㟇 DependentDŽ
ϔᮺᶤϾ DXE 偅ࡼ໘Ѣ Dependent ⢊ᗕˈDXE Dispatcher ህӮ䅵ㅫ䆹偅ࡼⱘձ䌪݇㋏
㸼䖒ᓣDŽབᵰ䆹偅ࡼ᳾ࣙ৿ձ䌪݇㋏㸼䖒ᓣˈ䙷М᠔᳝ᶊᵘण䆂ⱘձ䌪݇㋏㸼䖒ᓣⳌϢ೼ϔ䍋
ህ‫؛‬ᅮЎ䆹偅ࡼⱘձ䌪݇㋏㸼䖒ᓣDŽབᵰձ䌪݇㋏㸼䖒ᓣⱘؐЎ FALSEˈ䙷М䆹偅ࡼህ‫⬭ذ‬೼
Dependent ⢊ᗕ˗བᵰձ䌪݇㋏㸼䖒ⱘؐ∌䖰ϡӮЎ TRUEˈ䙷М䆹偅ࡼᇚ∌䖰ϡӮ㜅⾏
Dependent ⢊ᗕDŽ㗠ϔᮺձ䌪݇㋏㸼䖒ᓣⱘؐЎ TRUEˈ䙷М䆹偅ࡼᇚ㹿ᦤछ㟇 Scheduled
⢊ᗕDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ϔϾ㹿ᦤछ㟇 Scheduled ⱘ DXE 偅ࡼᇚ㹿⏏ࡴࠄϔϾ⬅݊ᅗ໘Ѣ Scheduled ⢊ᗕП偅


ࡼ㒘៤ⱘ䯳߫᳿ሒDŽᔧ䖭Ͼ DXE 偅ࡼࠄ䖒њ䯳佪ˈDXE Dispatcher ᖙ乏Փ⫼ SAP(Security
Authentication Protocol,ᅝܼ䅸䆕ण䆂)᳡ࡵᴹẔᶹ䆹偅ࡼⱘ䅸䆕⢊ᗕDŽབᵰ SAP 䅸Ў䆹偅ࡼ
䖱㚠њ‫݋‬ԧᑇৄПᅝܼㄪ⬹ˈ䙷М䆹偅ࡼᇚ㹿㕂Ѣ Untrusted ⢊ᗕDŽᑊϨˈSAP 㛑໳ਞ䆝 DXE
Dispatcher 䆹偅ࡼᑨ䆹㹿㕂Ѣ Never Trusted ⢊ᗕˈ∌䖰ϡ㹿ᠻ㸠DŽབᵰϔϾ DXE 偅ࡼ㹿㕂
Ѣ Untrusted ⢊ᗕˈ䙷Мᅗা㛑䗮䖛䇗⫼ DXE ᳡ࡵⱘ Trust()ߑ᭄ᇚ⢊ᗕᦤछ㟇 ScheduledDŽ
ϔᮺᶤϾ DXE 偅ࡼࠄ䖒њ䇗ᑺ䯳߫佪䚼ˈᑊϨ䆹偅ࡼ䗮䖛њ SAP ⱘ䅸䆕Ẕ⌟ˈ䙷М䆹偅ࡼ
ህ㹿ਃࡼ᳡ࡵⱘ LoadImage()ߑ᭄㺙䕑䖯‫ݙ‬ᄬDŽሞᯊˈ᥻ࠊᴗᇚ㒣⬅ DXE Dispatcher 䗮䖛ਃ
ࡼ᳡ࡵП StartImage()ߑ᭄Ӵ䗦㒭䆹偅ࡼDŽᔧ StartImage()㹿䇗⫼њˈ䆹偅ࡼⱘ⢊ᗕህ㹿ᦤछ
㟇 InitializingDŽ䗮䖛ਃࡼ᳡ࡵⱘ Exit()ߑ᭄ˈ偅ࡼᇚ᥻ࠊᴗ䖨䖬㒭 DXE DispatcherDŽᔧϔϾ DXE
偅ࡼᏆ㒣ᇚ᥻ࠊᴗ䖨䖬㒭 DXE Dispatcher њˈ䆹偅ࡼህ໘Ѣ᳔㒜⢊ᗕˈ⿄ПЎ InitializedDŽ
DXE Dispatcher ᳝䋷ӏ⏙ぎ⬅໘Ѣ Scheduled ⢊ᗕⱘ DXE 偅ࡼ㒘៤ⱘ䯳߫DŽϔᮺ䯳߫
ЎぎˈDXE Dispatcher ᖙ乏䆘Ԅ᠔᳝໘Ѣ Dependent ⢊ᗕⱘ DXE 偅ࡼˈҹ⹂ᅮᅗӀЁᰃ৺
ᄬ೼䳔㽕㹿ᦤछ㟇 Scheduled ⢊ᗕⱘ偅ࡼDŽᔧϔϾ៪໮Ͼ DXE 偅ࡼ㹿ᦤछ㟇 Initialized ⢊ᗕˈ
䖭ϔ䆘Ԅࡼ԰䛑䳔㽕ᠻ㸠ˈ಴Ў䖭ѯ偅ࡼৃ㛑ѻ⫳њ䙷ѯ໘Ѣ Dependent ⢊ᗕⱘ偅ࡼϔⳈㄝ
ᕙⱘण䆂᥹ষDŽ

ᥦᑣ՟ᄤ

⬅ DXE Dispatcher 㺙䕑੠ᠻ㸠ⱘ DXE 偅ࡼ⃵ᑣᰃϔϾӬ‫ܜ‬㑻催Ԣ⏋ড়ⱘᥦᑣᚙ‫މ‬DŽӬ‫ܜ‬


㑻催ⱘᰃ⬅ priori ᭛ӊᣛᅮⱘ˗Ӭ‫ܜ‬㑻Ԣⱘᰃ⬅偅ࡼⱘձ䌪݇㋏㸼䖒ᓣᣛᅮⱘDŽ೒ 12.4 ሩ⼎њ
ϔϾḋ՟ FV ⱘ㒘៤ˈࣙ৿᳝བϟ‫ݙ‬ᆍ˖
DXE Foundation ᯴‫ڣ‬
DXE 偅ࡼ᯴‫ڣ‬
ϔϾ Priori ᭛ӊ
䖭ѯ᯴‫⦄ߎڣ‬೼ FV Ёⱘ⃵ᑣᰃ䱣ᴎⱘDŽDXE Foundation ੠ DXE Dispathcher ϡৃᇍ FV
Ё᭛ӊԡ㕂԰ӏԩ‫؛‬䆒DŽ佪‫⦄ߎܜ‬೼ FV ЁⱘᰃϔϾࣙ৿᠔᳝ᇚ㹿㺙䕑੠ᠻ㸠ⱘ DXE 偅ࡼⱘ
GUID ᭛ӊৡⱘ priori ᭛ӊDŽ೼ FV Ёˈ৘Ͼ DXE 偅ࡼᓩߎⱘձ䌪݇㋏㸼䖒ᓣ੠ण䆂䛑㋻᣼ⴔ৘
㞾 DXE 偅ࡼ᯴‫ڣ‬DŽ
෎Ѣ೒ 12.4 Ё FV ⱘ㒘៤‫ݙ‬ᆍˈSecurity 偅ࡼǃRuntime 偅ࡼ੠ Variable 偅ࡼᘏᰃ㹿‫ܜ‬
ᠻ㸠DŽ䖭ᰃϔϾ⬅Ѣ priori ᭛ӊ㗠Ӭ‫ܜ‬໘⧚ⱘ՟ᄤDŽ㗠ৢˈDXE Dispatcher Ӯ䆘Ԅ࠽ϟⱘ DXE
偅ࡼПձ䌪݇㋏㸼䖒ᓣⱘؐˈҹ⹂ᅮᅗӀᇚ㽕㹿ᠻ㸠ⱘ乎ᑣDŽ෎Ѣ↣Ͼ DXE 偅ࡼѻ⫳ⱘձ䌪݇
㋏㸼䖒ᓣ੠ण䆂ˈᇚӮ᳝ 30 Ͼ᳝ᬜⱘ໘⧚乎ᑣկ DXE Dispatcher 䗝ᢽDŽ಴Ў BDS 偅ࡼ੠ CPU
偅ࡼⱘձ䌪݇㋏㸼䖒ᓣⱘؐЎ TRUEˈᅗӀᑊ߫៤Ў᥹ϟᴹ㹿䇗ᑺⱘ偅ࡼDŽձ䌪݇㋏㸼䖒ᓣⱘؐ
Ў TRUE ᛣੇⴔ䆹偅ࡼϡ䳔㽕ӏԩ݊ᅗण䆂᥹ষᴵӊህ㛑໳㹿ᠻ㸠DŽDXE Dispatcher 䗝ᢽӏᛣ
ϔϾձ䌪݇㋏㸼䖒ᓣؐЎ TRUE ⱘ偅ࡼ‫ܜ‬㹿䇗⫼DŽTimer 偅ࡼǃMetronome 偅ࡼ੠ Reset 偅ࡼ
䛑ձ䌪Ѣ CPU 偅ࡼѻߎⱘण䆂ᴵӊDŽϔᮺ CPU 偅ࡼ㹿㺙䕑੠ᠻ㸠ˈTimer 偅ࡼǃMetronome
偅ࡼ੠ Reset 偅ࡼ㛑໳ҹӏᛣ⃵ᑣ㹿䇗ᑺDŽϔϾড়⧚ⱘ DXE Dispatcher ᅲ⦄ˈᘏᰃϔབ᮶ᕔ
ⱘЎ᮶ᅮ㋏㒳䜡㕂ѻߎৠḋⱘ偅ࡼ䇗⫼ᑣ߫DŽӏԩᚙ‫މ‬ϟˈϔᮺ㋏㒳䜡㕂㹿ᬍব(ࣙᣀᄬ‫ټ‬೼ FV
Ё᭛ӊ乎ᑣবࡼ)ˈ䙷Мϔ⾡ᮄⱘ䇗ᑺ乎ᑣᇚӮѻ⫳ˈԚᰃˈ䖭ϔᮄⱘ䇗ᑺ乎ᑣ೼㋏㒳䜡㕂‫⃵ݡ‬
ᬍবࠡ䛑ᰃ೎ᅮⱘDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 12 4 Sample Firmware Volume

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀कϝゴ
ਃࡼ䆒໛䗝ᢽ
៥াᰃথᯢˈ✊ৢㄝⴔ᳝Ҏᴹ䖭䞠ᡒ៥߯䗴ⱘϰ㽓DŽ
—R. Buckminster Fuller

䱣ⴔᯊ䯈ⱘ᥼⿏ˈ(), 䗤⏤ⓨ࣪៤њϔ⾡⫼ᴹᓎゟ ILUPZDUH ‫އ‬ㄪᓩ᪢ⱘ෎ᴀ῵ൟDŽ䖭⾡䆒


䅵ⱘ⧚ᗉᮽ೼䙷⾡ᓎゟ೼ऩϔᓩᇐㅵ⧚఼ⱘ )UDPHZRUH (),DŽ ⫮㟇᳈ᮽ ⱘᮽᳳ䛑Ꮖ㒣থሩ
䍋ᴹњˈ㗠ৢ㗙ⱘଃϔⳂⱘҙҙᰃЎњᠻ㸠ϔѯ㒧ᵘϞᏆᅮНདⱘܼሔব䞣 195$0 ᠔⹂ゟⱘㄪ
⬹DŽ䱣ⴔ䖭⾡ᶊᵘԧ㋏ⱘথሩˈ䇌བ 6(&ˈ3(,ˈ';(ˈ%'6ˈ5XQWLPH ੠ $IWHUOLIH ㄝ䖭ѯਃࡼ
䰊↉䛑Ꮖ㒣ᅮНདњˈ݊Ёˈ%'6 %RRW'HYLFH6HOHFWLRQ 䰊↉ैব៤њϔ⾡⣀⡍ⱘ㉏ԐѢ %RRW
0DQDJHU ⱘ䰊↉DŽᴀゴЁˈᇚ䞡⚍䆆䗄 %RRW0DQDJHU 㒘ӊˈ䙷ѯ᥻ࠊㄪ⬹‫ݙ‬ᆍЎ᳔㒜ᔶ៤ⱘ %'6
䰊↉ᠧϟњϔϾ໻ԧⱘᶊᵘ෎⸔DŽ


೒ 13 1 EFI with Boot Manager Component




ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 13 2 Framework with BDS Component


ᅲ䰙Ϟˈ݇ѢⳂࠡ໻ᆊ᠔ⶹⱘ 3UH)UDPHZRUN ᮍḜⱘ %RRW0DQDJHU ੠ )UDPHZRUN ᮍḜⱘ %'6
П䯈ⱘϡৠП໘ˈᰃ䴲ᐌᆍᯧ䯤䗄ⱘDŽ೒ DŽᰃϔϾ (), ‫ݐ‬ᆍ SUH)UDPHZRUN ⦃๗ϟ
ⱘ⌕⿟೒ˈ㗠೒ DŽ ᰃϔϾ )UDPHZRUN ‫ݐ‬ᆍ⦃๗ϟⱘ⌕⿟೒DŽ
䗮䖛↨䕗䖭ϸᓴ೒ˈৃҹথ⦄ᅗӀ᳝䆌໮ⳌԐП໘ˈ㗠ᴀゴЁ᠔ᦣ䗄ⱘ੠㄀бゴ⏅ܹ䯤䞞
ⱘህᰃ䖭⾡ԧ⦄ˈᅗӀৠḋ㹿ࣙ৿Ѣ %'6 䰊↉ЁDŽ
(),ERRWPDQDJHU ᰃϔϾৃҹ䗮䖛ׂᬍᏆᅮНⱘܼሔব䞣 195$0 ᴹ䖯㸠䜡㕂ⱘ )LUPZDUH
‫އ‬ㄪᓩ᪢DŽᅗ䆩೒䗮䖛 195$0 ᠔ᢳᅮདⱘ乎ᑣᴹࡴ䕑 (), 偅ࡼ੠ (), ᑨ⫼⿟ᑣ ࣙᣀ (),26ERRW
ORDGHUV ˈ᠔ҹЎњ㛑໳ℷᐌਃࡼˈ3ODWIRUP)LUPZDUH ᖙ乏䙉ᕾ䖭⾡ਃࡼ乎ᑣDŽ঺໪ˈ3ODWIRUP
)LUPZDUH г䳔㽕೼ਃࡼ乎ᑣ߫㸼Ё๲ࡴϔѯᓩᇐ䗝乍៪ߴ䰸ϔѯ᮴ᬜᓩᇐ䗝乍DŽ
ᔧ✊ˈབᵰ೼ )LUPZDUH ਃࡼ䖛⿟Ёথ⫳њϔѯᓖᐌ⢊‫ˈމ‬3ODWIRUP)LUPZDUH г䳔㽕೼ ERRW
PDQDJHU Ёࡴܹϔѯ䰘ࡴ⡍ᗻDŽВϾ՟ᄤˈᔧ㄀ϔ⃵ࡴ䕑ᶤϾ (), 偅ࡼᯊਃࡼ༅䋹ˈ䙷М䖭⾡
䰘ࡴ⡍ᗻህӮ䆄ᔩ䖭⾡⢊ᗕˈᑊϨҹৢᇚϡӮࡴ䕑䆹偅ࡼDŽ
঺ϔϾ՟ᄤᰃਃࡼ䖛⿟Ёߎ⦄Ϲ䞡䫭䇃ᯊˈᇚӮ䖯ܹࠄ OEM ᅮࠊⱘ䆞ᮁ⦃๗ЁDŽ
EFI ਃࡼ乎ᑣᦣ䗄བϟ˖
Platform firmware Ң NVRAM Ё䇏পਃࡼ乎ᑣ߫㸼ˈ䆹㸼ᅮНњϔ㋏᳝߫݇ᓩᇐֵᙃⱘ
NVRAM ব䞣DŽ㗠↣Ͼব䞣ᅮНњϔϾ Unicode ৡᄫˈᅗህᰃ⫼᠋᠔ⳟࠄⱘਃࡼ䗝乍DŽ
䖭ѯব䞣гࣙ৿ᣛ৥⹀ӊ䆒໛ⱘᣛ䩜, ҹঞᣛ৥⹀ӊ䆒໛᠔㽕ࡴ䕑ⱘ EFI Image ⱘ᭛ӊᣛ
䩜DŽ
䖭ѯব䞣ৃ㛑гࣙ৿᪡԰㋏㒳᠔೼ߚऎⱘ䏃ᕘ, Ⳃᔩҹঞ݊Ҫ⡍ᅮ䜡㕂ⱘⳂᔩDŽ
ᔧ✊ˈ NVRAM гࣙ৿Ⳉ᥹Ӵ䗦㒭 EFI image ⱘࡴ䕑䗝乍DŽԚᰃˈ Platform Firmware
ैᑊϡ⏙Ἦࡴ䕑䗝乍䞠᳝ҔМ‫ݙ‬ᆍDŽ೼䆒㕂 Platform Firmware ⱘᓩᇐ‫އ‬ㄪᯊ, া᳝Ӭ‫ܜ‬㑻᳔

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

催ⱘ䕃ӊᠡ㛑ׂᬍ NVRAM ব䞣এ䆒ᅮ䖭ѯ䗝乍DŽᔧ OS Kernal ⱘԡ㕂Ϣ EFI OS Loader ⱘԡ


㕂ϡৠᯊˈ䗮䖛䖭⾡ᮍᓣህৃҹᕜདⱘ⬠ᅮ OS Kernal ⱘԡ㕂DŽ

Firmware Boot Manager

Boot manager ᰃ EFI firmware ⱘϔϾ㒘ӊˈᅗ⫼Ѣ‫އ‬ᅮ೼ԩᯊˈાϾ EFI 偅ࡼ៪ EFI ᑨ


⫼⿟ᑣᑨ䆹㹿ࡴ䕑DŽϔᮺ EFI Firmware ߱ྟ࣪དњˈBoot Manager ህপᕫњ᥻ࠊᴗDŽ✊ৢᅗ
ህ‫އ‬ᅮ䆹ࡴ䕑ҔМˈҹঞ‫ߎخ‬䖭ḋⱘ㸠Ў᠔䳔㽕ⱘϢ⫼᠋ⱘѸѦDŽᅲ䰙Ϟˈℸ㉏㸠Ў᳈໮ⱘᰃ
⬅ Firmware ᓔথ㗙ᴹ‫އ‬ᅮⱘˈ㟇Ѣ‫݋‬ԧⱘ᪡԰㒚㡖ᑊϡ೼ᴀ㾘㣗㗗㰥㣗ೈП‫ݙ‬DŽ᳝ৃ㛑ⱘᅲ
⦄ࣙᣀҹϟ䖭ѯˈ᳝݇ਃࡼⱘӏԩ䕧ܹ䕧ߎ᥹ষˈ䲚៤ⱘਃࡼ䗝ᢽㅵ⧚఼ˈৃ㛑ⱘ݊Ҫ‫ݙ‬䚼ᑨ
⫼⿟ᑣˈ៪㗙䗮䖛 boot manager 䲚៤೼㋏㒳䞠ⱘᘶ໡偅ࡼDŽ
Ϣ Boot Manager ⱘৃ㓪⿟ᓣѸѦᰃ䗮䖛ܼሔব䞣ᴹᅲ⦄ⱘˈ ೼߱ྟ࣪ᯊˈ Boot Manager
ህৃҹҢ䖭ѯ EFI ⦃๗ব䞣ᔧЁ䇏পࣙ৿᠔᳝Ꮖ߫Вⱘࡴ䕑䗝乍ⱘؐˈᑊϨ䗮䖛䇗⫼
SetVariable()ߑ᭄гৃҹᇍ৿᳝䖭ѯ⦃๗ব䞣ⱘ᭄᥂䖯㸠ׂᬍDŽ
↣ϔϾࡴ䕑䗝乍ܹষ䛑偏೼ϔϾ Boot####ব䞣៪ Driver####ব䞣ˈ݊Ё####ᰃϔϾ
ଃϔⱘ䗝乍োˈ⫼᭄ᄫ 0-9ˈ໻‫ݭ‬ᄫヺ A-F ᔶ៤ⱘৃᠧॄⱘ 16 䖯ࠊ㸼⼎DŽ#### ᖙ乏ྟ㒜ᰃ 4
Ͼ᭄ᄺヺোˈ಴ℸˈ᳔ᇣⱘ᭄ᄫᖙ乏ᰃ 0 ᓔ༈ⱘDŽ᥹ⴔˈࡴ䕑䗝乍ህৃҹ㹿⬅䳔㽕ⱘ乎ᑣ㓪ⷕ
ⱘϔ㋏߫䗝乍ো᳝ᑣⱘ䘏䕥᥼ㅫDŽ᳝ 2 Ͼ䖭ḋⱘ᳝ᑣ䗝乍߫㸼DŽ㄀ϔϾᰃ DriverOrderˈᡞ
Driver#### ࡴ䕑䗝乍᳝ᑣᥦ៤ᅗӀⱘࡴ䕑乎ᑣDŽ ㄀ѠϾᰃ BootOrderˈᡞ Boot#### ࡴ䕑
䗝乍ব䞣᳝ᑣᥦ៤ᅗӀⱘࡴ䕑乎ᑣDŽ
՟བˈ⏏ࡴϔϾᮄⱘਃࡼ䗝乍ˈϔϾᮄⱘ Boot####ব䞣ᇚ㹿⏏ࡴDŽ᥹ⴔˈᮄⱘ Boot####
ⱘ䗝乍োᇚ㹿⏏ࡴࠄᏆ㒣ᥦདⱘ BootOrder 㸼ЁˈᑊϨ BootOrder ব䞣Ӯ㹿䞡‫ݭ‬DŽ 㽕ᬍব
ϔϾᏆ㒣ᄬ೼ⱘਃࡼ䗝乍ˈা䳔㽕䞡‫ݭ‬䖭Ͼ Boot####DŽϢℸ㉏Ԑˈৃҹᅠ៤⏏ࡴˈߴ䰸ˈׂ
ᬍ偅ࡼࡴ䕑㸼DŽ
བᵰ䗮䖛 Boot####ਃࡼˈ䖨ಲϔϾ EFI_SUCCESS ⢊ᗕˈboot manager ህ‫ذ‬ℶ᪡԰
BootOrder 㸼ব䞣ˈሩ⼎ϔϾ boot manager menu 㒭⫼᠋DŽབᵰ䗮䖛 Boot####ਃࡼˈ䖨
ಲϔϾ᳝߿Ѣ EFI_SUCCESS ⱘ⢊ᗕˈਃࡼህ༅䋹ˈ㗠ϨˈϟϔϾ೼ BootOrder 㸼ⱘব䞣
Boot#### Ӯ㹿⌟䆩ˈⳈࠄ᠔᳝ⱘৃ㛑䛑䆩ᅠDŽ
Boot manager ৃ㛑Ӯ㞾ࡼ㓈ᡸব䞣᭄᥂ᑧDŽ՟བˈᅗৃ㛑ߴ䰸≵᳝⫼ࠄⱘࡴ䕑䗝乍ⱘব
䞣 ˈӏԩϡৃ㾷ᵤ៪ϡৃࡴ䕑ⱘࡴ䕑䗝乍 ˈҹঞ䞡‫≵ݭ‬᳝ડᑨⱘࡴ䕑䗝乍ব䞣DŽ঺໪ˈboot
manager ৃ㛑೼ᅗ䳔㽕ᯊЎњᬒ㕂ᅗ㞾Ꮕⱘࡴ䕑䗝乍ᴹ㞾ࡼ᳈ᮄ乎ᑣ㸼DŽBoot manager г
ৃҹˈḍ᥂ᅗ㞾Ꮕⱘᑇৄ⡍⅞ⱘ㸠Ўˈᦤկ᠟ࡼⱘ㓈ᡸ᪡԰DŽ՟བࣙᣀ೼᠔᳝ࡴ䕑䗝乍䞠䗝ᢽ
乎ᑣˈ▔⌏៪⽕⫼ࡴ䕑䗝乍ˈㄝㄝDŽ
Boot manager 㹿㽕∖೼ਃࡼࡴ䕑䗝乍ܹষࠡˈ‫ܜ‬ᠻ㸠偅ࡼࡴ䕑䗝乍DŽ Boot manager
г㽕∖߱ྟ࣪ϔϾਃࡼ䗝乍ˈ㗠䖭Ͼਃࡼ䗝乍ᰃ㽕⡍߿ᡞ BootNext ব䞣೼ϟ⃵ਃࡼᑊϨা೼
ϟ⃵ਃࡼᯊ԰Ў㄀ϔਃࡼ䗝乍DŽ བᵰ BootNex 䗝乍ਃࡼ༅䋹ˈਃࡼ⌕⿟㒻㓁Փ⫼ BootOrder
ব䞣DŽབᵰ BootNext 䗝乍䖨ಲ EFI_SECCESS 㸼ᯢਃࡼ៤ࡳˈboot manager ᇚϡӮ‫ݡ‬㒻㓁
Փ⫼ BootOrder ব䞣DŽ
Boot manager ᖙ乏䇗⫼ LoadImage()ˈ䆹ߑ᭄Ўњ໘⧚ࡴ䕑乍ˈ㟇ᇥ㽕ᬃᣕ
SMIPLE_FILE_PROTOCOL ੠ LOAD_FILE_PROTOCOLDŽབᵰ LoadImage()៤ࡳˈ೼䇗⫼
StartImage()ࠡˈBoot Manager ᖙ乏‫ܜ‬䇗⫼ SetWatchdogTimer()᳡ࡵ▔⌏ Watchdog
Timer 5 ߚ䩳DŽᔧਃࡼ乍ᇚ᥻ࠊᴗѸ㒭 Boot Manager ᯊˈboot manager гᖙ乏䖬㽕䇗⫼

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

SetWatchdogTimer()᳡ࡵᴹ⽕⫼ watchdog timerDŽ


㢹ߑ᭄ LoadImage()≵᳝ࡴ䕑 Boot Image ༅䋹ˈBoot Manager ህӮ᧰ᇏ咬䅸ⱘᑨ⫼
⿟ᑣᴹਃࡼˈϔ㠀䖭⾡ᑨ⫼⿟ᑣⱘ㉏ൟᰃሲѢৃᦦᢨ៪೎ᅮၦҟⱘDŽᔧਃࡼ乍ⱘᓩᇐ Image 䆒
໛䏃ᕘⳈ᥹ᣛ৥ SIMPLE_FILE_SYSTEM 䆒໛㗠জ≵᳝ᣛᅮ‫݋‬ԧⱘ᭛ӊএࡴ䕑ᯊˈህӮথ⫳䖭⾡
ᚙ‫މ‬DŽᴀゴ⿡ৢⱘĀDefault Behavior for Boot Option Variablesā䚼ߚᇚӮ䆺㒚ⱘҟ㒡䖭⾡
᭛ӊ᧰ᇏᮍᓣDŽᇍѢⳂᷛ䆒໛䏃ᕘ㗠㿔ˈ䰸њ SIMPLE_FILE_SYSTEM ໪ˈ㔎ⳕၦҟⱘᓩᇐџӊ
гৃҹ⬅ LOAD_FILE_ PROTOCOL ᴹ໘⧚ˈ㟇Ѣ Boot Manger ህ≵ᖙ㽕এ‫خ‬䖭ӊџњDŽ
Boot Manager 䖬ᖙ乏㛑໳ᬃᣕҢⷁḐᓣⱘ䆒໛䏃ᕘএᓩᇐˈ䖭⾡䏃ᕘⱘᓔ༈䚼ߚᰃϔϾ
⹀Ⲭ偅ࡼၦҟ䆒໛䏃ᕘDŽ঺໪ˈBoot Manager г䳔㽕Փ⫼⹀Ⲭ偅ࡼ䆒໛䏃ᕘϞⱘ GUID ៪ᷛ
ㅒঞߚऎোᇍᑨࠄ㋏㒳ⱘ䆒໛ϞএDŽབᵰ偅ࡼᬃᣕ GPI ߚऎḐᓣˈ䙷М⹀Ⲭ偅ࡼၦҟ䆒໛䏃ᕘ
ⱘ GUID ህӮϢ GUID ߚऎܹষЁⱘ UniquePartitionGuid ऎඳⳌऍ䜡˗བᵰ偅ࡼᬃᣕ MBR
Ḑᓣˈ䙷М⹀Ⲭ偅ࡼၦҟ䆒໛䏃ᕘⱘᷛㅒህӮϢ Legacy Master Boot Record ⱘ
UniqueMBRSignature ऎඳⳌऍ䜡DŽ㽕ᰃᷛㅒऍ䜡њˈ ߚऎোгᖙ乏Ⳍऍ䜡DŽᔧ✊ˈ ⹀Ⲭ偅
ࡼ䆒໛䏃ᕘгৃҹ㹿⏏ࡴࠄᇍᑨⱘ⹀ӊ䆒໛䏃ᕘЁˈ೼ℷᐌਃࡼᚙ‫މ‬ϟህৃҹՓ⫼DŽϔᮺ᳝໮
Ͼ䆒໛ऍ䜡ৠϔ偅ࡼ䆒໛䏃ᕘˈ Boot Manager ᇚӮҢЁ䱣ᴎ䗝ᢽϔϾDŽ಴ℸˈ ᪡԰㋏㒳ᖙ
乏⹂ֱ⹀Ⲭ偅ࡼᷛㅒⱘଃϔᗻˈ ᠡ㛑ֱ䆕乘ᳳⱘਃࡼ㸠ЎDŽ
↣Ͼࡴ䕑乍ব䞣䛑ࣙ৿њϔϾ EFI_LOAD_OPTION ᦣ䗄ヺˈ䆹ᦣ䗄ヺৃҹⳟ៤ᰃ䭓ᑺৃব
ⱘᄫ㡖ᇕ㺙ऎඳDŽ⬅Ѣℸ㉏ऎඳⱘᶤѯ䚼ߚⱘ䭓ᑺᰃৃবⱘˈ㟈Փ EFI_LOAD_OPTION ϡ㛑⫼
ᷛ‫ ⱘޚ‬C 䇁㿔᭄᥂㒧ᵘᴹ㸼⼎DŽ಴ℸˈ䆹ᦣ䗄ヺⱘᅮН᳝ϔᅮⱘ㽕∖ˈ‫݋‬ԧᅮНབϟ˖
UINT32 Attributes;
UINT16 FilePathListLength;
CHAR16 Description[];
EFI_DEVICE_PATH FilePathList[];
UINT8 OptionalData[];
Attributes -ࡴ䕑乍ܹষሲᗻDŽḍ᥂ EFI Spec ⱘ㽕∖ˈ᳾㹿Փ⫼ⱘԡᖙ乏Ў 0ˈ䖭ḋ‫خ‬ᰃЎ
њᇚᴹৃ㛑Ӯ⫼ࠄᅗӀˈ‫݋‬ԧ䇋খ㗗"Related Definitions"DŽ
FilePathListLength - FilePathList ⱘᄫ㡖䭓ᑺDŽOptionalData Ңᦣ䗄ヺ
EFI_LOAD_OPTION ⱘ sizeof(UINT32) + sizeof(UINT16) +StrSize(Description) +
FilePathListLength ໘ᓔྟⱘDŽ
Description - ᇍѢ⫼᠋㗠㿔ˈᅗᰃৃ䇏ⱘᦣ䗄ヺˈϨҹϔϾ Null ⱘ Unicode ᄫヺЎ㒧ᴳ
ᷛᖫDŽ
FilePathList - EFI 䆒໛䏃ᕘⱘᇕ㺙᭄㒘DŽ䆹᭄㒘ⱘ㄀ϔϾ‫ܗ‬㋴ᰃ EFI Device Pathˈᅗᰃ⫼
ᴹᦣ䗄ࡴ䕑乍ⱘ䆒໛੠ԡ㕂ⱘDŽFilePathList[0]ᣛⱘᰃ䆒໛㉏ൟˈ㗠݊Ҫⱘ Device Paths ৃ㛑
ᄬ೼Ѣℸ FilePathList ЁˈԚᅗӀҙ䰤Ѣ⫼Ѣ OSVDŽℸ᭄㒘Ё↣Ͼ៤ਬⱘ䭓ᑺ䛑ᰃৃবⱘˈϨ
䛑ᰃҹ Device Path End Structure 㒧ᴳⱘDŽ⬅Ѣᦣ䗄ヺ Description ⱘ䭓ᑺᰃৃবⱘˈ᠔ҹ
ϡ㛑ᇚ䖭⾡᭄᥂㒧ᵘԧᇍ唤ࠄ Natural Boundaryˈϡ䖛೼Փ⫼ᅗПࠡᡞᅗᣋ䋱ࠄᏆᇍ唤ⱘ
natural boundary ໘ᰃৃҹⱘDŽ
OptionalData – ࡴ䕑乍ᦣ䗄ヺ Description ⱘ࠽ԭ䚼ߚህᰃϔϾѠ䖯ࠊ᭄᥂ Bufferˈ ᰃ
⫼ᴹӴ㒭Ꮖࡴ䕑ⱘ Image ⱘDŽབᵰ䆹 Buffer 䭓ᑺЎ 0ˈ 䙷МህӮӴ䗦 Null PointerDŽ
OptionalData ⱘᄫ㡖᭄ৃҹ⫼ EFI_LOAD_OPTION ⱘᘏᄫ㡖᭄‫ޣ‬এ OptionalData ⱘ䍋ྟ
ԡ㕂‫⿏أ‬ᴹᕫࠄDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Related Definitions

The load option attributes are defined by the values below.


//
// Attributes
//
#define LOAD_OPTION_ACTIVE 0x00000001
#define LOAD_OPTION_FORCE_RECONNECT 0x00000002
䇗⫼SetVariable()ৃ߯ᓎϔϾࡴ䕑䗝乍DŽࡴ䕑䗝乍ⱘ໻ᇣ੠SetVariable()߯ᓎvariableⱘখ
᭄DataSizeⱘ໻ᇣϔḋDŽᔧ߯ᓎϔϾᮄⱘࡴ䕑䗝乍ᯊˈ᠔᳝᳾ᅮНⱘ236Ͼሲᗻbitⱘؐᖙ乏
Ў0DŽᔧ᳈ᮄϔϾࡴ䕑䗝乍ˈ᠔᳝᳾ᅮНⱘሲᗻbitᖙ乏ֱ⬭DŽབᵰϔϾࡴ䕑䗝乍≵᳝㹿ᷛ䆄
ЎLOAD_OPTION_ACTIVEˈbootmanagerህϡӮ㞾ࡼࡴ䕑䖭Ͼ䗝乍DŽ䖭ህᦤկњϔ⾡ㅔ֓
ⱘ݇䯁៪ᠧᓔࡴ䕑䗝乍ⱘᮍ⊩ˈ㗠ϡᖙএߴ䰸៪䞡ᮄ⏏ࡴᅗӀDŽབᵰϔϾDriver####ࡴ䕑䗝
乍㹿ᷛ䆄ЎLOAD_OPTION_FORCE_RECONNECTˈ߭᠔᳝ⱘ㋏㒳ЁⱘEFI偅ࡼ䆒໛䛑ᇚ೼
᳔ৢϔϾࡴ䕑䗝乍ᠻ㸠ᅠৢˈᮁᓔ䖲᥹ˈ‫ݡ‬䞡ᮄ䖲᥹DŽ䖭ህ‫ܕ‬䆌ҹDriver####ࡴ䕑ⱘEFI偅
ࡼ䆒໛ˈএ㽚‫ݭ‬Пࠡࡴ䕑䖛ⱘϔϾEFI偅ࡼ䆒໛ˈҹᠻ㸠EFIbootmanagerDŽ

ܼሔᅮНⱘ Variables

䖭ϔ㡖ᅮНϔ㒘᳝ᶊᵘᗻᯢ⹂ᅮНᛣНⱘvariablesDŽ䰸Ꮖ㒣ᅮНⱘ᭄᥂‫ݙ‬ᆍ໪ˈ ↣ϔ
Ͼ䖭ḋⱘvariables䛑᳝ϔϾᶊᵘᗻᯢ⹂ᅮНⱘሲᗻˈᴹᣛᯢԩᯊ䖭Ͼ᭄᥂variableৃҹ㹿䆓䯂
ࠄDŽ䖭ѯvariables᳝ϔϾሲᗻᰃNVˈेnonvolatile䴲ᯧ༅ᗻDŽᅗⱘᛣᗱᰃ䇈䖭ѯؐ೼reset੠
power cycles䛑Ӯֱ⬭DŽӏԩᚙ‫މ‬ϟˈ≵᳝䖭Ͼሲᗻⱘvariableⱘؐ䛑Ӯ೼㋏㒳ᮁ⬉ৢ⍜༅ˈ
ᑊϨֱᄬ೼‫ݙ‬ᄬЁⱘfirmwareⱘ⢊ᗕгϡֱ⬭DŽVariablesⱘሲᗻBSা೼ExitBootServices()㹿
䇗⫼П᳝ࠡᬜDŽᅗⱘᛣᗱᰃ䖭ѯ⦃๗Variableা㛑೼preboot ⦃๗ϟ㹿䞡ᓎ៪ׂᬍDŽᅗӀᇍ
᪡԰㋏㒳ϡৃ㾕DŽ⦃๗VariableⱘRTሲᗻ㸼⼎೼ExitBootServices()㹿䇗⫼ࠡ៪㹿䇗⫼ৢˈᅗ
Ӏ䛑᳝ᬜDŽ䖭⾡⦃๗Variable᮶ৃҹ೼preboot⦃๗ϟˈгৃҹ೼᪡԰㋏㒳Ё㹿䞡ᓎ៪ׂᬍDŽ
᠔᳝ᶊᵘᗻᅮНⱘvariable䛑Փ⫼EFI_GLOBAL_VARIABLE VendorGuid:
#define EFI_GLOBAL_VARIABLE \
{8BE4DF61-93CA-11d2-AA0D-00E098032B8C}
Ў䙓‫ܡ‬੠᳾ᴹӮᅮНⱘܼሔvariableৡ⿄‫ކ‬さˈ݊Ҫ᳾೼ℸᅮНⱘ‫ݙ‬䚼firmware᭄᥂
variableˈᖙ乏⫼ϡৠѢEFI_GLOBAL_VARIABLEⱘଃϔⱘϔϾVendorGuidᴹֱᄬDŽ㸼13.1
߫ߎ䖭ѯܼሔvariablesDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㸼 13 1 Global Variables
Variable Attribute Description
Name

LangCodes BS, RT The language codes that the firmware supports.


Lang NV, BS, RT The language code that the system is configured for.
The firmware’s boot managers timeout, in seconds, before
Timeout NV, BS, RT
initiating the default boot selection.
ConIn NV, BS, RT The device path of the default input console.
ConOut NV, BS, RT The device path of the default output console.
ErrOut NV, BS, RT The device path of the default error output device.
ConInDev BS, RT The device path of all possible console input devices.
ConOutDev BS, RT The device path of all possible console output devices.
ErrOutDev BS, RT The device path of all possible error output devices.
A boot load option, where #### is a printed hex value. No 0x or h
Boot#### NV, BS, RT
is included in the hex value.
BootOrder NV, BS, RT The ordered boot option load list.
BootNext NV, BS, RT The boot option for the next boot only.
BootCurrent BS, RT The boot option that was selected for the current boot.
Driver#### NV, BS, RT A driver load option, where #### is a printed hex value.
DriverOrder NV, BS, RT The ordered driver load option list.

LangCodes Variable ࣙ৿ϔ㒘⬅ 3 Ͼᄫヺ˄8 ԡⱘ ASCII ᄫヺ˅㒘៤ⱘ Firmware 㛑ᬃ


ᣕⱘ ISO-639-2 Language CodesDŽ೼߱ྟ࣪ᯊˈFirmware 㾷䆥᠔ᬃᣕⱘ䇁㿔ˈ߯ᓎϔϾ
Data Variableˈ⬅Ѣ Firmware ೼↣⃵߱ྟ࣪ᯊ䛑Ӯѻ⫳ϔϾা䇏ⱘ᭄ؐˈ᠔ҹህϡ䳔㽕೼䴲
ᯧ༅ᗻ‫ݙ‬ᄬЁ‫ټ‬ᄬᅗⱘؐDŽ
Lang Variable ⬅ 3 Ͼᄫヺ˄8 ԡⱘ ASCII ᄫヺ˅ⱘ ISO-639-2 Language Codes ᠔㒘៤ˈ
݊ؐৃҹ䕀ᤶ៤ LangCodes ᠔㛑ᬃᣕⱘӏԩؐDŽሑㅵབℸˈ䖭⾡䕀ᤶা᳝೼ϟϔ⃵ਃࡼᯊᠡ
⫳ᬜDŽབᵰ Language Codes 㹿䆒៤ϡᬃᣕⱘؐˈ䙷М Firmware ህӮ䗝ᢽϔϾᬃᣕⱘ߱ྟ
咬䅸ؐˈᑊᇚ Lang 䆒៤ᬃᣕⱘؐDŽ
Timeout variable ᰃϔϾ UINT16 ⱘѠ䖯ࠊ᭄᥂ˈᅗᦤկ೼߱ྟ᳔࣪ᮽⱘ咬䅸ਃࡼ䗝ᢽ
ᯊˈfirmware ᱖‫⾦ⱘذ‬᭄DŽؐ 0 㸼⼎咬䅸ⱘਃࡼ䗝ᢽᇚ೼ਃࡼᯊゟे㹿߱ྟ࣪DŽབᵰؐϡ
ᄬ೼ˈ៪㗙ؐᰃ 0xFFFFˈ߭ firmware ᇚӮ೼ਃࡼࠡㄝᕙ⫼᠋䕧ܹDŽ䖭㸼ᯢ firmware ᇚϡӮ
㞾ࡼᠻ㸠ᓔྟ咬䅸ⱘਃࡼ䗝ᢽDŽ
ConInˈConOutˈҹঞ ErrOut variablesˈ↣Ͼ variable 䛑৿᳝ϔϾ EFI_DEVICE_PATH
ᦣ䗄ヺˈ 䖭Ͼᦣ䗄ヺᅮНњ咬䅸೼ਃࡼᯊՓ⫼ⱘ䆒໛DŽׂᬍ䖭ѯؐˈᬍࡼ೼ϟ⃵ਃࡼᠡ㛑
⫳ᬜDŽབᵰ firmw ϡ㛑㾷ᵤ䆒໛䏃ᕘˈ‫ܕ‬䆌㞾ࡼᡞ䖭ѯؐ᳓ᤶ៤䳔㽕ⱘؐˈ⫼ᴹ㒭㋏㒳ᦤ
կϔϾ᥻ࠊৄDŽ
ConInDevˈConOutDevˈҹঞ ErrOutDev variables ˈ↣Ͼ variable 䛑৿᳝ϔϾ
EFI_DEVICE_PATH ᦣ䗄ヺˈ䖭Ͼᦣ䗄ヺᅮНњ᠔᳝ৃ㛑ⱘ咬䅸೼ਃࡼᯊՓ⫼ⱘ䆒໛DŽ䖭
ѯ variable ᰃᯧ༅ᗻⱘˈᑊ೼↣⃵ਃࡼ㹿ࡼᗕ䆒㕂DŽ䗮ᐌˈConInǃConOut ੠ ErrOut ᰃ
ConInDevǃConOutDev ੠ ErrOutDev ⱘⳳᄤ䲚DŽ
↣Ͼ Boot#### variable ৿᳝ϔϾ EFI_LOAD_OPTIONDŽ↣Ͼ Boot#### variable 䛑ᰃ⬅
ৡ⿄”Boot”ˈ‫ࡴݡ‬ϞϔϾଃϔⱘ, 4 Ͼ 16 䖯ࠊヺোⱘ᭄DŽ՟བ˖Boot0001ˈ Boot0002ˈ
Boot0A02ˈ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ㄝㄝDŽ
%RRW2UGHU9DULDEOH ᰃϔϾ 8,17 ᭄㒘ˈᅗᵘ៤ %RRW乍ⱘ⃵ᑣ߫㸼DŽ᭄㒘ⱘ㄀ϔϾ
‫ܗ‬㋴ᰃ㄀ϔϾ䘏䕥ਃࡼ乍ˈ㄀ѠϾ‫ܗ‬㋴ᰃ㄀Ѡ䘏䕥ਃࡼ乍ˈձ⃵㉏᥼ϟএDŽ%RRW0DQDJHU ϔ㠀
ᰃᇚ %RRW2UGHU ⃵ᑣ߫㸼԰Ў咬䅸ਃࡼ乎ᑣⱘDŽ
%RRW1H[W9DULDEOH ᰃϔϾ 8,17 ᭄ˈᅗᅮНњ %RRW乍ⱘϟ⃵ਃࡼᓩᇐⱘ佪䗝乍DŽা
᳝ %RRW1H[W ਃࡼ乍໘⧚ᅠˈᠡ㛑ℷᐌⱘՓ⫼ %RRW2UGHU ߫㸼DŽЎ䙓‫ܡ‬䞡໡ˈ%RRW0DQDJHU ೼ᇚ
᥻ࠊᴗѸ㒭乘ਃࡼ乍ࠡ䳔㽕ߴ䰸ℸ 9DULDEOHDŽ
%RRW&XUUHQW9DULDEOH гᰃϔϾ 8,17 ᭄ˈᅗᅮНњᔧࠡਃࡼᯊ᠔Փ⫼ⱘ %RRW乍DŽ
'ULYHU9DULDEOH ৿᳝ϔϾ (),B/2$'B237,21ˈ↣Ͼ 9DULDEOH ⱘৡᄫ䛑ᰃ⬅Ā'ULYHUā
ࡴϞ⡍ᅮⱘ᭄ᄫ㒘៤ⱘˈ↨བ 'ULYHU'ULYHUㄝㄝDŽ
'ULYHU2UGHU9DULDEOH ⬅ϔϾ 8,17 ᭄㒘㒘៤ˈ䆹᭄㒘ᵘ៤њ 'ULYHU9DULDEOH ⱘ⃵
ᑣ߫㸼DŽ᭄㒘ⱘ㄀ϔϾ‫ܗ‬㋴ᰃ㄀ϔ䘏䕥偅ࡼࡴ䕑乍ˈ㄀ѠϾ‫ܗ‬㋴ᰃ㄀Ѡ䘏䕥偅ࡼࡴ䕑乍ˈձ⃵
㉏᥼DŽᇍ (),'ULYHUV 㗠㿔ˈ%RRW0DQDJHU Ӯᡞ 'ULYHU2UGHU ߫㸼ᔧ‫خ‬咬䅸ࡴ䕑⃵ᑣձᑣⱘࡴ
䕑DŽ


Boot Option Variables ⱘ咬䅸㸠Ў

ܼሔ Variables ⱘ咬䅸⢊ᗕؐᰃ Firmware ॖଚ㞾Ꮕ䆒ᅮⱘDŽሑㅵབℸˈ೼থ⫳ϔѯᓖᐌ


ᚙ‫މ‬䅀བ Platform Ϟ≵᳝᳝ᬜⱘਃࡼ乍ᯊˈህ䳔㽕ϔϾ咬䅸ⱘᷛ‫ޚ‬㸠Ў߸᥂DŽ䖭⾡㸠Ў߸᥂೼
BootOrder Variable ϡᄬ೼៪ᣛ৥ϔϾᑊϡᄬ೼ⱘਃࡼ乍ⱘӏԩᯊ‫׭‬ህӮ㹿䇗⫼DŽ
ᔧϡᄬ೼᳝ᬜⱘਃࡼ乍ᯊˈBoot Manager ೼ᵮВᅠ᠔᳝ⱘ೎ᅮ EFI ၦҟ䆒໛ৢᵮВ᠔᳝
ⱘৃᦦᢨⱘ EFI ၦҟ䆒໛DŽ⬅Ѣ↣㒘ⱘ乎ᑣᰃϡ⹂ᅮⱘˈ᠔ҹ䖭ѯᮄⱘ咬䅸ਃࡼ乍ᑊϡӮᄬ‫ࠄټ‬
䴲ᯧ༅ᗻᄬ‫఼ټ‬䞠DŽ✊ৢ Boot Manager 䆩೒Ң↣Ͼਃࡼ乍ਃࡼDŽབᵰ䆒໛ᬃᣕ
SIMPLE_FILE_SYSTEM ProtocolˈህӮᠻ㸠ৃᦦᢨⱘၦҟਃࡼ㸠ЎDŽ৺߭, Firmware ህӮ䆩೒
䗮䖛 LOAD_FILE Protocol ᴹᓩᇐ䆒໛DŽ
䗮ᐌˈ䖭⾡咬䅸ਃࡼӮࡴ䕑᪡԰㋏㒳៪㓈ᡸ⿟ᑣDŽᔧࡴ䕑ⱘᰃ᪡԰㋏㒳ᅝ㺙⿟ᑣˈ೼䱣ৢ
ⱘਃࡼЁˈPlatform Firmware 䳔㽕䆒㕂ϔѯᖙ㽕ⱘ Environment Variablesˈ䰸ℸП໪ˈᅗ
ৃ㛑䖬㽕ḍ᥂‫݋‬ԧᚙ‫އމ‬ᅮᘶ໡៪䆒ᅮᏆⶹਃࡼ乍DŽ

ਃࡼᴎࠊ
EFI 㛑ҢϔϾՓ⫼ SIMPLE_FILE_SYSTEM Protocol ៪ LOAD_FILE Protocol ⱘ䆒໛ਃ
ࡼDŽϔϾᬃᣕ SIMPLE_FILE_SYSTEM Protocol ⱘ䆒໛ᖙ乏Ў䖭Ͼ䆒໛ᅲ՟࣪ϔϾ᭛ӊ㋏
㒳ˈҹՓ݊ৃਃࡼDŽབᵰϔϾ䆒໛ϡᬃᣕϔϾᅠᭈⱘ᭛ӊ㋏㒳ˈᅗৃ㛑ѻ⫳ϔϾ LOAD_FILE
Protocolˈᴹ‫ܕ‬䆌ᅗⳈ᥹ᅲ՟࣪ϔϾ imageDŽBoot manager ᇚӮ‫ܜ‬ᇱ䆩Փ⫼
SIMPLE_FILE_SYSTEM Protocol এਃࡼDŽ‫؛‬བ༅䋹ˈህӮՓ⫼ LOAD_FILE ProtocolDŽ

Ңㅔऩ᭛ӊ Protocol ਃࡼ

ᔧҢϔϾㅔऩ᭛ӊ ProtocolਃࡼᯊˈFilePathᇚҢϔϾ䆒໛䏃ᕘᓔྟˈ䖭Ͼ䆒໛䏃ᕘᣛ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

৥ᬃᣕSIMPLE_FILE_SYSTEM Protocolⱘ䆒໛DŽFilePathⱘϟϔ䚼ߚᇚӮᣛ৥᭛ӊৡ⿄ˈࣙ
ᣀ৿᳝ৃਃࡼimageⱘᄤⳂᔩDŽབᵰ᭛ӊৡ⿄ᰃϔϾぎⱘ䆒໛䏃ᕘˈ㽕೼ၦҟ䆒໛Ϟᡒࠄ᭛
ӊৡ⿄ˈᖙ乏Փ⫼䖭ḋⱘ㾘߭ˈ䖭Ͼ㾘߭ᰃᏺ᳝῵㊞᭛ӊৡ⿄ⱘৃᢨ䰸䆒໛ᅮНⱘDŽ(㾕
"Removable Media Boot Behavior"㡖)DŽ
EFI spec৿᳝EFI⡍᳝ⱘ᭛ӊ㋏㒳ⱘḐᓣDŽ✊㗠ˈfirmwareᖙ乏㽕ѻ⫳ϔϾ㛑⧚㾷EFI᭛
ӊ㋏㒳ⱘSIMPLE_FILE_SYSTEM Protocolˈӏԩ᭛ӊ㋏㒳䛑ৃҹ㹿䖭⾡
SIMPLE_FILE_SYSTEM Protocol᥹ষᢑ䈵DŽ
ৃᢨ䰸ၦҟⱘਃࡼ㸠Ў
೼ৃᢨ䰸ၦҟ䆒໛ϞˈFilePathϡৃ㛑৿᳝᭛ӊৡ⿄ঞᄤⳂᔩDŽᑇৄЁˈᄬ‫ټ‬೼䴲ᯧ༅
ᗻᄬ‫఼ټ‬ϞⱘFilePathϡৃ㛑੠ϔϾ䱣ᯊৃҹᬍবⱘၦҟֱᣕৠℹDŽϔϾৃᢨ䰸䆒໛ⱘ
FilePathᇚӮᣛ৥ᬃᣕSIMPLE_FILE_SYSTEM Protocolⱘ䆒໛DŽ䖭ϾFilePathᇚϡӮࣙ৿᭛
ӊৡ⿄੠ᄤⳂᔩDŽ
ϔϾ咬䅸᭛ӊৡˈࡴϞ䖭ḋⱘḐᓣ\EFI\BOOT\BOOT{ machine type short-name }DŽEFIˈ
⏏ࡴࠄϔϾৃᢨ䰸䆒໛FilePathˈ㋏㒳firmwareӮᇱ䆩Ң䖭ḋⱘFilePathএਃࡼDŽ݊Ёˈmachine
type short-nameᅮНњϔϾPE32+ imageⱘḐᓣ㒧ᵘDŽ↣ϔϾ᭛ӊাࣙ৿ϔϾEFI image㉏ൟˈ
ᑊϨˈ㋏㒳ৃ㛑ᬃᣕҢϔϾ៪໮Ͼ䖭ḋⱘimageḐᓣਃࡼDŽ㸼13DŽ2߫ߎEFI imageⱘ㉏ൟDŽ

㸼 13 2 EFI Image Types


Architecture File name convention PE Executable machine type*
IA-32 BOOTIA32.EFI 0x14c

Itanium architecture BOOTIA64.EFI 0x200

⊼ᛣ˖䖭⾡PE Executable Machine Typeࣙ৿೼COFF᭛ӊ༈ⱘMachineऎඳЁˈህ‫ڣ‬


Microsoft Portable Executable and Common Object File Format spec 6DŽ0⠜Ё᠔ᅮН
ⱘ䙷ḋDŽ
ㅔऩⱘՓ↣ϔϾৃ㛑ⱘᴎ఼㉏ൟ᳝ϔϾ\EFI\BOOT\BOOT{machine type short-name}DŽ
EFI᭛ӊˈ ϔϾၦҟৃ㛑ᬃᣕ໮Ͼ㒧ᵘDŽ

Ң LOAD_FILE Protocol ਃࡼ

ᔧҢLOAD_FILE ProtocolਃࡼˈFilePathᰃϔϾᣛ৥ᬃᣕLOAD_FILE Protocol䆒໛ⱘ䆒


໛䏃ᕘDŽImageӮҢᬃᣕLOAD_FILE Protocolⱘ䆒໛ϞⳈ᥹ࡴ䕑DŽFilePathⱘ࠽ԭ䚼ߚᇚӮࣙ
৿ℸ䆒໛⡍᳝ⱘֵᙃDŽEFI firmwareᡞ䖭Ͼ䆒໛⡍᳝ⱘ᭄᥂Ӵ㒭Ꮖࡴ䕑ⱘimageˈ ԚᰃϡӮ
⫼ᅗӀᴹࡴ䕑imageDŽབᵰFilePathⱘ࠽ԭ䚼ߚЎぎˈ ߭Ꮖࡴ䕑ⱘimage䋳䋷এᅲ⦄ᡒࠄℷ⹂
ⱘਃࡼ䆒໛ⱘ‫އ‬ㄪDŽ
LOAD_FILE Protocol㹿⫼ᴹ㒭ϡⳈ᥹ᬃᣕ᭛ӊ㋏㒳ⱘ䆒໛⫼DŽNetwork䆒໛䗮ᐌ೼䖭⾡
῵ᓣϟਃࡼˈ݊imageⱘᅲ՟࣪ϡ䳔㽕᭛ӊ㋏㒳DŽ
Network Booting
Network Booting೼PrebooteXecution Environment (PXE) BIOS Support㾘㣗Ё᳝᠔䆆
䗄ˈ䆹㾘㣗ᰃThe Wired for Manage- ment Baseline Specificationⱘϔ䚼ߚDŽPXEᅮНњ
UDPˈDHCPˈ and TFTP Net- work Protocolsˈ Booting Platformৃҹ⫼ᅗӀϢᱎ㛑System
Load Server䗮䆃DŽEFI䖬ᅮНњ⫼Ѣ໘⧚PXEⱘ⡍ᅮ᥹ষˈ䖭ѯ᥹ষࣙ৿ѢEFI㾘㣗᠔ᅮНⱘ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

PXE_BASE_CODE ProtocolЁDŽ
Future Boot Media
㞾ҢEFI೼᪡԰㋏㒳੠PlatformП䯈ᅮНњϔϾᢑ䈵ሖˈ 䱣ⴔᡔᴃⱘথሩˈ EFIⱘloader
ህৃҹ⏏ࡴᮄ㉏ൟⱘਃࡼၦҟDŽ䖭ḋˈOS Loaderህ≵᳝ᖙ㽕Ўᬃᣕᮄⱘᓩᇐ㉏ൟ㗠㹿䖿԰ߎ
ᬍࡼDŽϡ䖛ˈEFI Platform Servicesⱘᅲ԰ৃ㛑Ӯ‫خ‬ѯׂᬍˈԚ݅⫼ⱘInterfaceᑊϡӮᬍবDŽ
᪡԰㋏㒳䳔㽕Driverএᬃᣕᮄ㉏ൟⱘਃࡼၦҟˈҹ֓Ѣᅠ៤ҢEFI Boot Servicesࠄ᪡԰㋏㒳ᇍ䆹
ၦҟ᥻ࠊⱘ䖛⏵DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀कಯゴ
ᓩᇐ⌕⿟
ᷥᵫ䞠ߚߎϸᴵቨ䏃……
—Robert Frost, “The Road Less Taken”
㋏㒳䞡ਃ‫ܕ‬䆌ᕜ໮ৃ㛑ᗻˈ៪㗙䇈ˈᓩᇐ⿟ᑣⱘᠻ㸠䏃ᕘϡᰃ೎ᅮⱘDŽᇍϔ乫㒭ᅮⱘ CPUˈ
ᓩ䍋ᅗ䞡ਃⱘॳ಴᳝ᕜ໮ˈᑊϨ⦃๗⢊ᗕг᳝ᏂᓖDŽ䖭ѯॳ಴ࣙᣀ˖䮾ᄬᄬ‫ټ‬᳈ᮄ೎ӊ䇋∖˗
⬉⑤ㅵ⧚џӊᘶ໡䇋∖˗㋏㒳߱ྟ࣪ਃࡼ䇋∖˗ҹঞ݊ᅗৃ㛑ⱘᚙᔶDŽ䖭ϔゴᇚҟ㒡ϔѯৃ㛑
ⱘᓩᇐ⌕⿟ҹঞḚᶊ˄Framework˅ᰃᗢḋᴹ໘⧚䖭ѯџӊⱘDŽ

佪‫ˈܜ‬೼Ḛᶊ˄Framework˅Ёˈℷᐌⱘҷⷕ⌕⿟䳔㽕乎ᑣ㒣䖛ҹϟ޴Ͼ䰊↉˖
1. SEC
2. PEI
3. DXE
4. BDS
5. Runtime
6. Afterlife
䖭ϔゴӮҟ㒡ϔϾᣝ✻䖭Ͼ⌕⿟ⱘᓩᇐᮍḜˈ䇋খ㗗೒ 14.1DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 14 1 Ordering of Framework Execution Phases

PEI ෎⸔῵ഫ˄Foundation˅ᑊϡⶹ䘧䆹㋏㒳᠔䳔㽕ⱘᓩᇐ䏃ᕘDŽᅗ䗮䖛 PEIM ᴹ⹂ᅮᓩ


ᇐ῵ᓣ˄R0ˈR1ˈS3 ㄝ˅ ˈᑊḍ᥂ᓩᇐ῵ᓣᴹ‫Ⳍخ‬ᑨⱘࡼ԰DŽЎњ⹂ᅮᓩᇐ῵ᓣˈ↣ϔϾ PEIM
䛑ৃҹ䗮䖛 PEI Service SetBootMode()˄㾕 15 ゴ˅ᴹ䆒ᅮ῵ᓣDŽ⊼ᛣ˖PEIM ϡ㛑ḍ᥂ᓩᇐ
῵ᓣᴹᬍব݊㹿ߚ⌒˄dispatch˅ⱘ乎ᑣDŽ

Defined Boot Modes ᏆᅮНⱘᓩᇐ῵ᓣ


೼ϟϔ㡖Ӯ߫ߎৃ㛑ⱘᓩᇐ῵ᓣ੠݊ⳌᑨӬ‫ܜ‬㑻ⱘ⏙ऩDŽᔧ䳔㽕ᅮНᮄⱘ῵ᓣᯊˈḚᶊ㒧
ᵘ䙓‫ܡ‬ᅮНϔϾᯢ⹂ⱘछ㑻䏃ᕘˈᮄⱘਃࡼ῵ᓣ䳔㽕ࡴҹ⬠ᅮDŽ䖭ḋ‫ⱘخ‬ᖙ㽕ᗻ೼Ѣˈ䰆ℶᮄ
๲ⱘᓩᇐ῵ᓣϢᏆᅮНⱘᓩᇐ῵ᓣϔ䍋Ꮉ԰៪㗙ϸ㗙䍋‫ކ‬さDŽ

Priority of Boot Paths ᓩᇐ䏃ᕘⱘӬ‫ܜ‬㑻


೼ϔϾ㒭ᅮⱘ PEIM ‫ˈݙ‬ᓩᇐ῵ᓣⱘӬ‫ܜ‬㑻ᖙ乏ᰃৃ㾕ⱘˈབ೒ 14.2.ᓩᇐ῵ᓣⱘӬ‫ܜ‬㑻乎
ᑣᑨᔧབϟ˄Ң᳔催ࠄ᳔Ԣ˅˖
1. BOOT_IN_RECOVERY_MODE
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

2. BOOT_ON_FLASH_UPDATE
3. BOOT_ON_S3_RESUME
4. BOOT_WITH_MINIMAL_CONFIGURATION
5. BOOT_WITH_FULL_CONFIGURATION
6. BOOT_ASSUMING_NO_CONFIGURATION_CHANGES
7. BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS
8. BOOT_WITH_DEFAULT_SETTINGS
9. BOOT_ON_S4_RESUME
10. BOOT_ON_S5_RESUME
11. BOOT_ON_S2_RESUME

೒ 14 2 Priority of the boot modes

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㸼 14 1 Boot Path Assumptions


㋏㒳⢊ ‫؛‬ᅮᚙ‫މ‬
ᦣ䗄

‫ދ‬ਃࡼ
R0 ϡ㛑‫؛‬ᅮПࠡᄬ‫ⱘټ‬᭄᥂ᰃ᳝ᬜⱘ
˄Cold Boot˅
⛁ਃࡼ
R1 ˄Warm ৃҹ‫؛‬ᅮПࠡᄬ‫ⱘټ‬᭄᥂ᰃ᳝ᬜⱘ
Boot˅
Пࠡᄬ‫ⱘټ‬᭄᥂੠‫ݙ‬ᄬ䛑ᰃ᳝ᬜⱘDŽ೼‫ݙ‬ᄬ㹿Փ⫼Пࠡˈᅗ
ACPI Save to ⱘ䜡㕂ᖙ乏Ң䴲ᯧ༅ᗻᄬ‫˄఼ټ‬NVS˅䖬ॳDŽ೎ӊৃҹা᳈
RAM Resume ᬍПࠡ乘⬭ⱘ䚼ߚ‫ݙ‬ᄬDŽ乘⬭‫ݙ‬ᄬ᳝ϸ⾡㉏ൟ˖ϔ⾡ㄝৠѢ
S3
ᣖ䍋ࠄ‫ݙ‬ᄬὖ INT15hˈE820hⱘType4ᄬ‫ˈ఼ټ‬䖭㉏ᰃ乘⬭㒭೎ӊՓ⫼ⱘ˗
㽕 ᓎ䆂๲ࡴⱘ঺ϔ⾡ᰃˈ‫ܕ‬䆌᪡԰㋏㒳೼䖤㸠˄Runtime˅ᯊՓ
⫼ˈԚᰃৃҹ೼ᘶ໡ⱘᯊ‫׭‬㹿ᬍ‫ݭ‬DŽ
Save to Disk
Resumeˈ ҢPEIMⱘ㾦ᑺᴹⳟˈS4੠S5ᰃϔḋⱘDŽᅗӀⱘऎ߿ԧ⦄೼ৢ
S4ˈ
ĀSoft Offā 㓁ⱘ䰊↉DŽᭈϾ㋏㒳ᖙ乏䞡ᮄ߱ྟ࣪ˈԚᰃPEIMৃҹ‫؛‬ᅮП
S5
ᣖ䍋ࠄ⺕Ⲭ ࠡⱘ䜡㕂ᰃ᳝ᬜⱘ
ὖ㽕ˈ䕃݇䯁
䖭⾡ᓩᇐ῵ᓣৃҹ⑤ѢINITˈS3ˈ៪㗙݊ᅗᓩ䍋㋏㒳䞡ਃⱘ
෎Ѣ೎
ॳ಴DŽ՟བˈབᵰৠᯊ᳝S3੠೎ӊ᳈ᮄˈ䙷೎ӊ᳈ᮄӮ᳝᳈
ӊ
催ⱘӬ‫ܜ‬㑻DŽ‫݋‬ԧ㸠Ўপ‫އ‬Ѣᑇৄҷⷕˈ↨བ⬅‫ݙ‬ᄬ߱ྟ࣪
᳈ᮄⱘ
PEIMᴹ⹂ᅮ䞡ਃⱘॳ಴੠㽕ᠻ㸠ⱘⳌᑨࡼ԰˄гህᰃ䇈ˈお
ਃࡼ
コᰃ‫خ‬S3ⱘ᭄᥂䖬ॳ䖬ᰃ‫خ‬INITⱘ߱ྟ࣪˅

Reset Boot Paths ໡ԡᯊᓩᇐ䏃ᕘ


᥹ϟᴹⱘᇣ㡖ҟ㒡㋏㒳೼޴⾡ϡৠ㉏ൟⱘ໡ԡᯊⱘᓩᇐ䏃ᕘDŽ

Intel® Itanium® Processor Reset 㣅⡍ᇨᅝ㝒໘⧚఼໡ԡ

㣅⡍ᇨᅝ㝒ᶊᵘࣙ৿䎇໳ⱘ䩽ᄤ˄hooks˅ᴹ偠䆕໘⧚఼ॖଚথᏗⱘ PAL-A ੠ PAL-B ҷⷕDŽ


໘⧚఼㢃⠛‫ݙ‬䚼ⱘᖂҷⷕ೼ PG ֵো໡ԡᯊਃࡼˈᑊ䗮䖛ਃࡼ೎ӊो˄BFV˅‫ݙ‬೼ᶊᵘሖᅮНⱘ
ᣛ䩜ᡒࠄԡѢਃࡼ೎ӊो‫ ⱘݙ‬PAL-A˄the first layer of processor abstraction code˅DŽᖂҷ
ⷕ䋳䋷偠䆕໘⧚఼ॖଚᦤկⱘ PAL-A ҷⷕሖ᳾㹿ㆵᬍ䖛DŽབᵰ䗮䖛њ偠䆕ˈ᥻ࠊᴗህӮѸ㒭
PAL-A ሖˈPAL-A জӮএ偠䆕໘⧚఼ⱘ঺ϔሖᢑ䈵ҷⷕ˄PAL-B˅ˈ✊ৢ‫ݡ‬ᡞ᥻ࠊᴗѸ㒭 PAL-BDŽ
䰸њᇍЎᶊᵘ⡍᳝ⱘ偠䆕ˈSEC 䰊↉䖬䋳䋷ᡒࠄ PEI Foundation ⱘԡ㕂ˈᑊϨẔ偠ᅗⱘৃ䴴ᗻDŽ
೼ϔϾ෎Ѣ Itanium ⱘ㋏㒳‫ˈݙ‬BFV ⱘ೎ӊ῵ഫᖙ乏᳝㒧ᵘⱘ㒘㒛䍋ᴹˈҹ⒵䎇 PAL-A 㹿
ᬒ㕂೼ᆍ䫭ऎ˄Fault-tolerant region˅䖭Ͼ᳔Ԣ㽕∖DŽϡৠⱘ໘⧚఼᳝ϡৠⱘ PAL-A ҷⷕˈ
PAL-A ⫼ᴹ偠䆕 PAL-BˈԚᰃ PAL-B 䗮ᐌ㹿ᬒ㕂೼ϡᬃᣕᆍ䫭᳈ᮄ˄fault-tolerant updates˅
ⱘ೎ӊऎඳDŽ೼ᓔᴎⱘᯊ‫ˈ׭‬PAL-A ੠ PAL-B ⱘѠ䖯ࠊ㒘ӊˈᇍ᠔᳝ⱘৠϔ㡖⚍˄node˅Ϟ
ⱘ໘⧚఼䛑ᰃৃ㾕ⱘ˗≵᳝ᖙ㽕এᇍ㋏㒳ᶊᵘ䖯㸠߱ྟ࣪DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Non-Power-on Resets 䴲Ϟ⬉໡ԡ

䴲Ϟ⬉໡ԡৃҹ᳝ᕜ໮ॳ಴ᓩ䍋DŽϔѯ PEI ੠ DXE ㋏㒳᳡ࡵ໡ԡᭈϾᑇৄˈࣙᣀ᠔᳝ⱘ໘⧚఼


੠䆒໛DŽᕜ䞡㽕ⱘϔ⚍ᰃˈᓎゟϔ༫ᷛ‫ⱘޚ‬ᓩᇐ䏃ᕘᴹ໘⧚བϟⱘᚙᔶ˖
„ ໡ԡ໘⧚఼ҹᬍব乥⥛䆒ᅮ
„ ⹀ӊ䞡ਃҹᅠ៤㢃⠛㒘߱ྟ࣪
„ ᇍᓖᐌ໘⧚ⱘⳌᑨ
䖭⾡໡ԡг⫼Ѣ CVDR˄Configuration Values Driven through Reset˅ⱘ䜡㕂DŽ

Normal Boot Paths ℷᐌⱘᓩᇐ䏃ᕘ


Ӵ㒳ⱘ BIOS ᠻ㸠 POST ⱘᚙᔶ᳝˖‫ދ‬ਃࡼ˄G3 ࠄ S0˅˗⬉⑤ㅵ⧚ᘶ໡˗ϔѯ⡍⅞ⱘᚙ‫ˈމ‬
↨བ INITDŽEFI ϡҙ⎉Ⲫњ᠔᳝䖭ѯᚙᔶˈᑊϨᦤկ᳈Єᆠ˄richer˅ǃ᳈ᷛ‫ⱘޚ‬䖤㸠⦃๗DŽ
⦃๗ᬍবᯊˈ෎ᴀⱘҷⷕ⌕⿟г䳔㽕ᬍবDŽᓩᇐ䏃ᕘব䞣े⒵䎇њ䖭Ͼ㽕∖DŽᓩᇐ῵ᓣⱘ
߱ྟؐ⬅ϔѯ䕗ᮽⱘ PEIM ᅮНˈԚᰃᅗ㛑㹿ৢ㓁ⱘ PEIM ᳈ᬍDŽ᠔᳝ⱘ㋏㒳䛑ᖙ乏ᬃᣕϔϾ෎
ᴀⱘ S0 ᓩᇐ䏃ᕘDŽ‫݌‬ൟⱘᚙ‫މ‬ᰃˈϔϾ㋏㒳ᢹ᳝ϔ㋏߫ⱘᓩᇐ䏃ᕘˈࣙᣀ S0 ᓩᇐ䏃ᕘˈS-State
ᓩᇐ䏃ᕘˈϔᴵ៪໮ᴵ⡍⅞ⱘᓩᇐ䏃ᕘDŽ
໮ᴵᓩᇐ䏃ᕘⱘᶊᵘৃҹᏺᴹབϟⱘད໘˖
„ PEI Foundation ϡ䳔㽕ⶹ䘧⡍ᅮ㋏㒳ⱘ㽕∖ˈ↨བ MP ੠৘⾡⬉⑤⢊ᗕDŽ䖭ḋৃҹ೼
ҹৢ‫ⱘ⌏♉خ‬ᠽሩDŽ
„ ᬃᣕ໮ᴵ䏃ᕘাᰃ๲໻њ PEI Foundation ⱘ໻ᇣ
„ 䳔㽕ᬃᣕ໮ᴵ䏃ᕘⱘ PEIM ߚᢙњ㋏㒳ⱘ໡ᴖᑺ
⊼ᛣ˖ਃࡼ῵ᓣᆘᄬ఼೼䖛⏵ࠄ DXE 䰊↉ᯊˈব៤њϔϾব䞣DŽDXE 䰊↉гৃҹ᳝ϔѯ乱໪ⱘ
ׂᬍヺᴹᬍবᓩᇐ䏃ᕘˈ㗠ϡᰃҙҙሔ䰤Ѣ PEI 䰊↉DŽ䖭ѯ๲ࡴⱘ modifier ৃҹ㸼ᯢ㋏㒳ᰃ৺
໘ѢᎹॖ῵ᓣˈᴎㆅ䰆ⲫˈ≵᳝ AC ⬉⑤ˈ៪㗙‫ܕ‬䆌咬䅸ਃࡼDŽ
䰸њᓩᇐ䏃ᕘⱘ㉏ൟˈmodifier bits гৃҹᄬ೼DŽᔧӏԩϔϾ PEIM Ẕ⌟ࠄ㞾Ꮕⱘ᭄᥂᳝
䇃ˈᖙ㽕ⱘᘶ໡ׂ佄㹿䆒㕂DŽ

Basic G0-to-S0 and S0 Variation Boot Paths ෎ᴀⱘ G0 ࠄ S0 ҹঞ S0 㸡⫳ᓩᇐ䏃ᕘ

෎ᴀⱘ S0 ᓩᇐ䏃ᕘᰃ Boot with full configurationDŽ䖭⾡䆒ᅮਞ䆝 PEIM 㽕‫ܼخ‬䚼ⱘ䜡㕂DŽ


㋏㒳ᖙ乏ᬃᣕ෎ᴀⱘ S0 ᓩᇐ䏃ᕘDŽ
ḚᶊᶊᵘгᅮНњ޴Ͼৃ䗝ⱘ S0 㸡⫳ᓩᇐ䏃ᕘˈᇍ㸡⫳䏃ᕘⱘᬃᣕձ䌪Ѣҹϟ޴⚍˖
„ ৃᬃᣕⱘ⡍ᗻⱘ໮ḋᗻ
„ ᑇৄᰃᓔᬒⱘ䖬ᰃᇕ䯁ⱘ
„ ⹀ӊᑇৄ
՟བˈϔϾᇕ䯁ⱘ㋏㒳៪㗙ϔϾᬃᣕᴎㆅ䰆ⲫⱘ㋏㒳ˈৃҹᬃᣕ䖭ḋϔᴵᓩᇐ䏃ᕘ˖‫؛‬ᅮ
ҢϞ⃵ᓔᴎࠄ䖭⃵ᓔᴎ≵᳝ӏԩ䜡㕂ব࣪ˈҢ㗠䅽㋏㒳䖙䗳ਃࡼDŽ咬䅸ϡᬃᣕ S0 㸡⫳ᓩᇐ䏃ᕘDŽ
བϟᰃᏆᅮНⱘϔѯ㸡⫳䏃ᕘ˖
„ Boot with minimal configuration˖া䜡㕂ਃࡼ㋏㒳᠔ᖙ䳔ⱘ⹀ӊ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

„ Boot assuming no configuration changes˖Փ⫼Ϟϔ⃵ᓔᴎⱘ䜡㕂᭄᥂


„ Boot with full configuration plus diagnostics˖䰸њ⹀ӊⱘܼ䚼䜡㕂໪ˈ䖬㽕ᠻ
㸠䆞ᮁ⿟ᑣ
„ Boot with default settings˖Փ⫼咬䅸ⱘ᭄᥂এএ䆒ᅮ⹀ӊ

S-State Boot Paths S-State ᓩᇐ䏃ᕘ

Ң S3ˈS4ˈS5 ᘶ໡ⱘᯊ‫ˈ׭‬ᓩᇐ䏃ᕘབϟ˖
„ S3˄ᣖ䍋ࠄ‫ݙ‬ᄬᘶ໡˅˖ᬃᣕ S3 ⱘᑇৄᖙ乏ֱᄬ੠䖬ॳ‫ݙ‬ᄬ੠ϔѯ݇䬂ⱘ⹀ӊ䜡㕂DŽ
„ S4˄ᣖ䍋ࠄ⺕Ⲭ˅˖ϔѯᑇৄг䆌㽕ᠻ㸠㓽ⷁࠄ PEI ੠ DXE 䰊↉
„ S5˄䕃݇䯁˅˖ϔѯᑇৄг䆌Ꮰᳯ S5 off ਃࡼ੠ℷᐌᓔᴎϡϔḋˈ՟བˈ䴲⬉⑤ᣝ䪂
ৃҹ૸䝦㋏㒳DŽ
៥Ӏ㽕‫ݡ‬䆺㒚ഄ㾷䞞ϔϟ S3 ᘶ໡ˈ಴Ўᅗ䳔㽕 G0 ࠄ S0 ᓩᇐ䏃ᕘ੠ S3 ᘶ໡䏃ᕘⱘড়԰DŽ
G0 ࠄ S0 ᓩᇐ䏃ᕘ䳔㽕ᇚ S3 ᘶ໡᠔䳔㽕ⱘ⹀ӊ㓪⿟ֵᙃֱᄬ䍋ᴹDŽ䖭ѯֵᙃ㹿ֱᄬ೼⹀ӊ㒧
ᵰֱᄬ㸼ˈᑊՓ⫼乘ᅮНⱘ᭄᥂㒧ᵘᠻ㸠 I / O ៪ᄬ‫ܹݭ఼ټ‬DŽ ᭄᥂㹿ֱᄬ೼ㄝᬜѢ INT15h E820
type 4˄೎ӊֱ⬭‫ݙ‬ᄬ˅ⱘϔഫऎඳ៪ϔഫ乘⬭ⱘ೎ӊ䆒໛ऎDŽ೼‫ݙ‬ᄬ㹿䖬ॳПৢˈS3 ᘶ໡䏃
ᕘⱘҷⷕৃҹ䆓䯂䖭ഫऎඳDŽ

Recovery Paths ᘶ໡䏃ᕘ


བᵰ㋏㒳Ẕ⌟ࠄᘶ໡ᰃᖙ乏ⱘˈ䙷МПࠡᦣ䗄ⱘ᠔᳝ਃࡼ䏃ᕘ䛑ৃҹ㹿ׂᬍ៪༅ᬜⱘDŽᘶ
໡ᰃϔϾ㋏㒳೎ӊ䆒໛㹿⸈ണ㗠䞡ᮄᓎゟⱘ䖛⿟DŽ䖭⾡⸈ണৃ㛑᳝໮⾡ᴎࠊᓩ䍋DŽ໻䚼ߚԡѢ
䴲ᯧ༅ᗻᄬ‫ټ‬䆒໛˄flashˈdisk˅Ϟⱘ೎ӊोҹഫⱘᔶᓣ㹿ㅵ⧚DŽབᵰ㋏㒳೼ϔϾഫ៪䇁Нᛣ
НϞⱘഫ᳈ᮄᯊᮁ⬉ˈ䖭ഫᄬ‫ৃ఼ټ‬㛑༅ᬜDŽ঺ϔᮍ䴶ˈᄬ‫ټ‬䆒໛ৃ㛑㹿ϔϾ䫭䇃ⱘ⿟ᑣ៪⹀
ӊ⸈ണDŽ㋏㒳䆒䅵㗙ᖙ乏෎ѢҪӀ㛑໳ᛇࠄⱘ䖭ѯৃ㛑থ⫳џӊⱘ੠㒧ᵰᴹ‫އ‬ᅮ᠔㛑ᬃᣕⱘᘶ
໡ሖ⃵DŽ
ҹϟᰃ㋏㒳䆒䅵㗙ৃ㛑䗝ᢽϡᬃᣕᘶ໡ⱘϔѯॳ಴˖
„ ϔϾ㋏㒳೎ӊोᄬ‫ټ‬ҟ䋼ৃ㛑ϡᬃᣕ᳈ᬍᔧ㹿ࠊ䗴དৢDŽᅗৃ㛑ᰃࡳ㛑㉏ԐѢ ROM
ⱘ䆒໛DŽ
„ ໻䚼ߚᘶ໡ᴎࠊⱘᅲ⦄䳔㽕乱໪ⱘ೎ӊोぎ䯈ˈ䖭ᇍѢϔѯ⡍⅞ᑨ⫼ৃ㛑ᯖ䌉DŽ
„ ϔϾ㋏㒳ৃ㛑᳝䎇໳ⱘ೎ӊोぎ䯈ᑊϨ೎ӊो೼⹀ӊ⡍ᗻϞৃҹᅲ⦄ᕏᑩⱘᆍ䫭ˈ䖭
ḋᘶ໡ᴎࠊህ≵᳝ᖙ㽕DŽ

Discovery থ⦄

থ⦄䳔㽕ᘶ໡ৃҹ⬅ϔϾ PEIM˄՟བˈẔ⌟ϔϾĀᔎࠊᘶ໡āⱘ䏇䕀˅៪㗙 PEI Foudation


ᴹᅲ⦄DŽPEI Foudation ৃ㛑থ⦄ϔϾ⡍⅞ⱘ PEIM ≵᳝䗮䖛ℷ⹂ⱘ偠䆕៪㗙ᭈϾ೎ӊ㹿⸈ണDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

General Recovery Architecture ᐌ㾘ᘶ໡ԧ㋏

ᘶ໡ⱘᅮНህᰃ㽕ֱ⬭䎇໳ⱘ㋏㒳೎ӊҹ֓㋏㒳ৃҹਃࡼࠄᅗৃҹ‫ࠄخ‬ҹϟϸ⚍ⱘ䰊↉˖
„ Ң㹿䗝ᢽ໪ೈ䆒໛϶༅ⱘ᭄᥂䇏পϔӑ໛ӑ
„ 䞡ᮄ⫼䖭ѯ᭄᥂㓪‫ݭ‬೎ӊो
ৃᘶ໡೎ӊⱘֱᄬᰃㅵ⧚೎ӊोᄬ‫ټ‬ᮍ䴶ⱘϔϾࡳ㛑ˈ䖭ᰃ೼ᴀкП໪᱂䘡ᄬ೼ⱘϔϾ㾖
⚍DŽ䖭↉ᦣ䗄ⱘⳂⱘᰃᏠᳯ PEIMS ੠݊ᅗ䳔㽕ᘶ໡ⱘ೎ӊो‫ݙ‬ᆍ㽕㹿ᷛ䆄DŽ೎ӊोᄬ‫ټ‬ԧ㋏ᖙ
乏ֱᄬᷛ䆄䚼ߚˈ៪ՓᅗӀϡৃ㹿ᬍব˄ৃ㛑䳔㽕⹀ӊᬃᣕ˅ˈ៪⫼ϔ⾡ᆍ䫭ⱘछ㑻䖛⿟ᴹֱᡸ
ᅗӀDŽ⊼ᛣབᵰϔϾ PEIM ᰃᘶ໡ᖙ乏ⱘ៪঺ϔϾ PEIM ձ䴴ᅗᴹᘶ໡ˈ䙷ᅗᖙ乏ᬒ೼ϔϾᆍ䫭
ऎඳDŽ䖭Ͼԧ㋏㒧ᵘৠḋг‫؛‬ᅮᕜᆍᯧ݀ᑇⱘএ߸ᮁાѯ೎ӊोᤳണDŽ
✊ৢ PEI 䇗ᑺ఼ℷᐌ䖤㸠DŽབᵰᅗ䙁䘛ࠄᏆ㒣ᤳണⱘ PEIM˄՟བˈ᥹ᬊࠄϔϾ䫭䇃ⱘ hash
ؐ˅ˈᅗ㞾Ꮕᖙ乏ᬍবਃࡼ῵ᓣএᘶ໡DŽϔᮺ㹿䆒㕂៤ᘶ໡῵ᓣˈ݊ᅗⱘ PEIMS ᖙ乏ϡ㛑ᬍব
㋏㒳ࠄ݊ᅗ⢊ᗕDŽ೼ PEI 䇗ᑺ݊থ⦄㋏㒳໘Ѣᘶ໡῵ᓣˈᅗӮ䞡ਃˈা䇗ᑺ䙷ѯᘶ໡䳔㽕ⱘ
PEIMSDŽϔϾ PEIM гৃҹẔ⌟♒䲒ᴵӊ✊ৢѻ⫳ϔϾᔎࠊᘶ໡џӊএ䗮ⶹ PEI 䇗ᑺ఼এ䖯㸠ϔ
Ͼᘶ໡䇗ᑺDŽϔϾ PEIM ৃҹ䗮䖛੠⦄೼ⱘਃࡼ῵ᓣ䖯㸠៪᪡԰
BOOT_IN_RECOVERY_MODE_MASK ԡᴹ䄺ਞ PEI ෎⸔῵ഫএᓔྟᘶ໡DŽ✊ৢ PEI ෎⸔῵ഫ䞡
ਃՓਃࡼ῵ᓣ䖯ܹ BOOT_IN_RECOVERY_MODE ✊ৢ䇗ᑺҹ BOOT_IN_RECOVERY_MODE
Ўᔧࠡଃϔ῵ᓣⱘᓔྟ䰊↉DŽ
ϔϾ PEIM ৃҹ㹿ᓎゟএ໘⧚䚼ߚᘶ໡Ꮉ԰ᴹ߱ྟ࣪ᬃᣕᘶ໡Ꮉ԰ⱘ໪ೈ䆒໛˄ࣙᣀҪӀ
ԡѢⱘᘏ㒓˅ ˈ✊ৢҢ໪ೈ䆒໛এ䇏পᮄ䬰‫ڣ‬ᴹछ㑻೎ӊोDŽ
PEI ✊ৢ䖯ܹ DXE 䰊↉ˈ಴Ў DXE 㹿䆒䅵ᴹ໘⧚Ϣ໪ೈ䆒໛ⱘ䗮ֵDŽ䖭⾡䖯ܹ乱໪ⱘད໘
ህᰃᰃབᵰ DXE থ⦄ϔϾ䆒໛ᤳണˈᅗৃ㛑ϡ⫼ᡞ᥻ࠊᴗѸ㒭 PEI 䰊↉ᴹᓔྟᘶ໡DŽ
བᵰ PEI ෎⸔῵ഫ≵᳝ϔϾ݇Ѣ䇗ᑺ‫ݙ‬ᆍⱘ߫㸼ˈᅗབԩⶹ䘧೼೎ӊो䞠ϔϾ᮴ᬜⱘऎඳ
ᰃ৺ࣙ৿ϔϾ PEIM˛PEI ෎⸔῵ഫ೼ᅗ᧰㋶ PEIM ᯊᅗৃҹথ⦄໻䚼ߚⱘᤳണˈ䖭ⳟ䍋ᴹ‫ڣ‬ᰃ
ϔϾ䰘ࡴ㒧ᵰDŽ಴ℸˈབᵰ PEI ෎⸔῵ഫ೼ᅠ៤ᅗⱘ䇗ᑺ䖛⿟ৢᑊ≵᳝থ⦄䎇໳ⱘ䴭ᗕ㋏㒳ᄬ
‫ټ‬ぎ䯈এᓔྟ DXE 䰊↉ˈ✊ৢᅗӮ䖯ܹࠄᘶ໡䰊↉DŽ

Special Boot Path Topics ⡍⅞ਃࡼ䏃ᕘ


ᴀゴ࠽ϟⱘ䚼ߚᇚ䅼䆎ᇍ᠔᳝ⱘ໘⧚఼៪ᇍ⡍⅞ⱘ intel ᅝ㝒໘⧚఼ৃ⫼ⱘ⡍⅞ਃࡼ䏃ᕘDŽ

Special Boot Paths ⡍⅞ਃࡼ䏃ᕘ

ҹϟᰃ೼ Framework ᶊᵘЁⱘ⡍⅞ਃࡼ䏃ᕘDŽ݊Ёϔѯ䏃ᕘᰃৃ䗝ⱘˈ㗠঺ϔѯᰃ⫼Ѣ


⡍⅞໘⧚఼㋏߫ⱘDŽ
„ ᔎࠊᘶ໡䏃ᕘ˖ϔϾ䏇䕀៪ϔϾ㉏ԐⱘᴎࠊᣛᯢњϔϾᔎࠊⱘᘶ໡
„ intel ᅝ㝒ᶊᵘਃࡼ䏃ᕘ˖㾕ϟ㡖
„ 㛊ಞछ㑻˖䖭⾡ਃࡼ῵ᓣৃҹ⫼ѢϔϾЁᮁǃS3ǃ៪݊ᅗ䞡ਃᴎ఼ⱘᮍᓣDŽ՟བˈབ
ᵰᰃ S3ˈ䖭Ͼ㛊ಞᇚҷ᳓ S3 䞡ਃDŽ㉏ԐѢ‫ݙ‬ᄬ߱ྟ࣪ PEIM ⱘᑇৄҷⷕⱘӏࡵህᰃ‫އ‬
ᅮϔϾ㊒⹂ⱘॳ಴ᑊϨᴹᠻ㸠ℷ⹂ⱘ㸠Ўˈ䖭ህᰃⳌᇍѢЁᮁ㸠Ўⱘ S3 ⢊ᗕᘶ໡

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Special Intel Itanium® Architecture Boot Paths

䖭Ͼᶊᵘ䳔㽕ҹϟⱘ⡍⅞ਃࡼ䏃ᕘ˖
„ Ёᮁৢਃࡼ˖ϔϾЁᮁথ⫳њ
„ MCA ৢਃࡼ˖ϔϾᴎ఼Ẕ⌟ԧ㋏˄MCA˅џӊথ⫳
intel ᅝ 㝒 ໘ ⧚ ఼ ᢹ ᳝ ޴ Ͼ ⣀ ⡍ ⱘ ਃ ࡼ 䏃 ᕘ ˈ ᅗ Ӏ ৃ ҹ ૸ 䝦 ԡ Ѣ ㋏ 㒳 ᢑ 䈵 ሖ ܹ ষ ⚍
SALE_ENTRY ⱘ䇗ᑺ఼DŽ໘⧚఼Ёᮁ੠ MCA ᰃϸϾਃࡼᅝ㝒㋏㒳 sec ҷⷕ/䇗ᑺ఼ⱘᓖℹџӊDŽ
efi security ῵ഫᇍѢ䰸њথ⫳೼⹀ਃࡼⱘᘶ໡Ẕ⌟໪᠔᳝ⱘҷⷕ䏃ᕘᰃ䗣ᯢⱘDŽPEIM ៪ DXE
偅ࡼ໘⧚䖭ѯџӊᰃᶊᵘ㑻䆒䅵ⱘᑊϨϡᇚ᥻ࠊᴗ䖨ಲḌᖗ䇗ᑺ఼DŽᅗӀ䇗⫼ᅗӀ৘㞾ᶊᵘⱘ
ԡѢ᪡԰㋏㒳ⱘ໘⧚⿟ᑣDŽ

Intel Itanium® Architecture Access to the Boot Firmware


Volume intel ᅝ㝒ᶊᵘ䆓䯂ਃࡼ೎ӊो

೒ 14.3 ᰒ⼎њ intel ᅝ㝒໘⧚఼ᠻ㸠ⱘ䞡ਃ䏃ᕘDŽ೒ 14.4 ᰒ⼎њਃࡼ⌕⿟DŽ

೒ 14 3 Intel® Itanium® Architecture Resets

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 14 4 Intel® Itanium® Processor Boot Flow (MP versus UP on Other CPUs)

೼ intel ᅝ㝒ᶊᵘ䞠ˈ໘⧚఼ࠊ䗴㗙ᦤկⱘԡѢਃࡼ೎ӊोⱘᖂⷕਃࡼ PAL ҷⷕⱘ㄀ϔሖDŽ


ҷⷕ᳔ᇣ࣪߱ྟ࣪໘⧚఼✊ৢথ⦄ᑊ䡈߿ PAL ҷⷕⱘ㄀Ѡሖ˄⿄԰ PAL-B˅DŽ PAL-A ੠ PAL-B
ⱘԡ㕂ৃҹ㹿থ⦄䗮䖛ᶹᡒ೼ 4G ऎඳ䰘䖥ⱘ ROM Ёⱘᶊᵘᣛ⼎఼៪㗙ᶹᡒ೼ ROM Ёⱘ೎ӊ
᥹ষ㸼˄FIT˅ᣛ⼎఼DŽPAL ሖՓ⫼ϔϾऩ⣀ⱘৡি SALE_ENTRY ⱘܹষ⚍Ϣ OEM ਃࡼ೎ӊѸ
⌕DŽ
intel ᅝ㝒ᶊᵘᅮНњҹϞⱘ߱ྟ࣪ᦣ䗄DŽ঺໪ˈᅝ㝒㋏㒳Փ⫼ Framework ᶊᵘᖙ乏‫خ‬ҹ
ϟࡼ԰˖
„ ϔϾĀ⡍⅞āⱘ PEIM ᖙ乏ԡѢ BFV˄ਃࡼ೎ӊो˅ᴹᦤկ݊ᅗ೎ӊोⱘᏗሔֵᙃDŽ
PEI ෎⸔῵ഫᇚԡѢ BFV˄ਃࡼ೎ӊो˅ⱘ SALE_ENTRY ⱘܹষ⚍DŽintel ᅝ㝒ᶊᵘ PEIM
ৃ㛑ԡѢ BFV˄ਃࡼ೎ӊो˅៪݊ᅗⱘ೎ӊोˈԚᰃϔϾ⡍⅞ⱘ PEIM ᖙ乏ԡѢ BFV
˄ਃࡼ೎ӊो˅ᴹᦤկ݊ᅗ೎ӊोⱘਃࡼֵᙃDŽ
„ BFV˄ਃࡼ೎ӊो˅ⱘϔϾ⡍⅞㒧⚍ᖙ乏ৃҹ㹿䖤㸠೼䖭Ͼ㒧⚍ⱘ໘⧚఼䆓䯂DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೼↣Ͼ㒧⚍ⱘ᠔᳝ⱘ໘⧚఼ਃࡼᑊϨᠻ㸠 PAL ҷⷕ✊ৢ䖯ܹ PEI ෎⸔῵ഫDŽBFV˄ਃ


ࡼ೎ӊो˅ⱘϔϾ⡍⅞㒧⚍ᖙ乏ৃҹ㹿䖤㸠೼䖭Ͼ㒧⚍ⱘ໘⧚఼䆓䯂DŽ䖭Ͼऎ߿ৠḋ
ᛣੇⴔϔѯ೼ intel ᅝ㝒ᶊᵘਃࡼ䏃ᕘϞ PEIM ৃҹ㹿໮໘⧚఼䆚߿DŽ
„ ೼ਃࡼᯊˈ೼ BFV˄ਃࡼ೎ӊो˅Ϟⱘ㹿 PAL-AǃPAL-BǃFIT ㄝѠ䖯ࠊ᭛ӊ㒘㒛ⱘ೎
ӊ῵ഫᖙ乏ᇍ೼ϔϾ㒧⚍Ϟⱘ᠔᳝໘⧚఼ৃ㾕DŽ䖭ѯѠ䖯ࠊ᭛ӊ೼㋏㒳㒧ᵘ≵᳝䖯㸠
ӏԩ߱ྟ࣪ᯊᖙ乏ᰃৃ㾕ⱘDŽ

//*******************************************************
// EFI_BOOT_MODE
//*******************************************************
typedef UINT32 EFI_BOOT_MODE;
#define BOOT_WITH_FULL_CONFIGURATION 0x00
#define BOOT_WITH_MINIMAL_CONFIGURATION 0x01
#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES 0x02
#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03
#define BOOT_WITH_DEFAULT_SETTINGS 0x04
#define BOOT_ON_S4_RESUME 0x05
#define BOOT_ON_S5_RESUME 0x06
#define BOOT_ON_S2_RESUME 0x10
#define BOOT_ON_S3_RESUME 0x11
#define BOOT_ON_FLASH_UPDATE 0x12
#define BOOT_IN_RECOVERY_MODE 0x20
0x21 – 0xF..F Reserved Encodings
㸼 14 2 Boot Mode Register
REGISTER BIT(S) VALUES DESCRIPTIONS
MSBit-0 000000b Boot with full configuration
000001b Boot with minimal configuration
000010b Boot assuming no configuration changes from last boot
000011b Boot with full configuration plus diagnostics
000100b Boot with default settings
000101b Boot on S4 resume
000110b Boot in S5 resume
000111b-001111b Reserved for boot paths that configure memory

010000b Boot on S2 resume


010001b Boot on S3 resume
010010b Boot on flash update restart
010011b-011111b Reserved for boot paths that preserve mem- ory context

100000b Boot in recovery mode


100001b-111111b Reserved for special boots

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Architectural Boot Mode PPIs ᶊᵘਃࡼ῵ᓣ PPI

೼ PEI ゴ㡖䞠ˈPPI ⱘᗱᛇ೼䖭Ͼ᪡԰䰊↉㹿԰ЎϔϾणৠ῵ഫ㹿ҟ㒡DŽPEI ῵ഫৃҹⶹᰧ


ਃࡼ῵ᓣ䗮䖛 GetBootMode ᳡ࡵ㹿䇗ᑺˈԚᰃϔϾ㋏㒳䆒䅵㗙ৃ㛑ϡᛇ䅽ϔϾ PEIM 䖤㸠䰸
䴲ᰃ೼ϔϾ⡍ᅮⱘਃࡼ῵ᓣDŽৃҹҢ৘⾡ϡৠࠊ䗴㗙ⱘਃࡼ῵ᓣᢑ䈵ߎϔϾਃࡼ῵ᓣ PPI ⱘߚ
ሖDŽ৘⾡ਃࡼ῵ᓣৃҹ㹿䆒㕂៤ϔϾᣝӬ‫ܜ‬㑻ᥦ߫乎ᑣⱘሖ⃵DŽPPI ੠ᅗӀ৘㞾ⱘ GUID ೼
Required Architectural PPI ЁᅮНˈ೼ PEI 䰊↉䖭ѯ PPI ৃҹԡѢ PEI Ḍᖗ᥹ষ੠ৃ䗝ⱘᶊᵘ
PPI ЁDŽ䖭Ͼሖ⃵ࣙᣀϔϾЏ PPI ੠ϔѯ䕙ࡽ PPIˈЏ PPI Ӯথ㸠ϔϾձ䌪Ѣ䗖ᔧ PEIM ⱘ PPIDŽ
ᇍѢ䙷ѯ᳔㒜ৃҹⶹ䘧ਃࡼ῵ᓣⱘ PEIM ᴹ䇈ˈЏਃࡼ῵ᓣ PPI ৃҹ㹿԰ЎϔϾձ䌪DŽ

㸼 14 3 Architectural Boot Mode PPIs


PPI Name Required or PPI Definition in
Optional? Section...

Master Boot Mode PPI Required Architectural PPIs:


Required Architectural PPIs
Boot in Recovery Mode Optional Architectural PPIs: Optional
PPI Architectural PPIs

Recovery ᘶ໡

䖭ϔ↉Џ㽕䅼䆎ᑇৄ೎ӊᘶ໡DŽᘶ໡ᰃ⫼ᴹᦤկϔϾ᳈催ⱘ RASUM˄ৃ䴴ᗻǃᅲ⫼ᗻǃৃ
⫼ᗻǃৃㅵ⧚ᗻ˅ⱘৃ䗝ᮍᓣDŽᘶ໡ᰃϔϾ㋏㒳೎ӊ䆒໛㹿⸈ണ㗠䞡ᮄᓎゟⱘ䖛⿟DŽ䖭⾡⸈ണ
ৃ㛑᳝໮⾡ᴎࠊᓩ䍋DŽ໻䚼ߚԡѢ䴲ᯧ༅ᗻᄬ‫ټ‬䆒໛˄՟བ䮾ᄬ੠⹀Ⲭ˅Ϟⱘ೎ӊोҹഫⱘᔶ
ᓣ㹿ㅵ⧚DŽབᵰ㋏㒳೼ϔϾഫ៪䇁НᛣНϞⱘഫ᳈ᮄᯊᮁ⬉ˈ䖭ഫᄬ‫ৃ఼ټ‬㛑༅ᬜDŽ঺ϔᮍ䴶ˈ
ᄬ‫ټ‬䆒໛ৃ㛑㹿ϔϾ䫭䇃ⱘ⿟ᑣ៪⹀ӊ⸈ണDŽ㋏㒳䆒䅵㗙ᖙ乏෎ѢҪӀ㛑໳ᛇࠄⱘ䖭ѯৃ㛑থ
⫳џӊⱘ੠㒧ᵰᴹ‫އ‬ᅮ᠔㛑ᬃᣕⱘᘶ໡ሖ⃵DŽ
ҹϟᰃ㋏㒳䆒䅵㗙ৃ㛑䗝ᢽϡᬃᣕᘶ໡ⱘϔѯॳ಴˖
„ ϔϾ㋏㒳೎ӊोᄬ‫ټ‬ҟ䋼ৃ㛑ϡᬃᣕ᳈ᬍᔧ㹿ࠊ䗴དৢDŽᅗৃ㛑ᰃࡳ㛑㉏ԐѢ rom
ⱘ䆒໛DŽ
„ ໻䚼ߚᘶ໡ᴎࠊⱘᅲ⦄䳔㽕乱໪ⱘ೎ӊोぎ䯈ˈ䖭ᇍѢϔѯ⡍⅞ᑨ⫼ৃ㛑ᯖ䌉DŽ
„ ϔϾ㋏㒳ৃ㛑᳝䎇໳ⱘ೎ӊोぎ䯈ᑊϨ೎ӊो೼⹀ӊ⡍ᗻϞৃҹᅲ⦄ᕏᑩⱘᆍ䫭ˈ䖭
ḋᘶ໡ᴎࠊህ≵᳝ᖙ㽕DŽ

Discovery থ⦄

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

থ⦄䳔㽕ᘶ໡ৃҹ⬅ϔϾ PEIM˄՟བˈẔ⌟ϔϾĀᔎࠊᘶ໡āⱘ䏇䕀˅៪㗙 PEI Foudation


ᴹᅲ⦄DŽPEI ෎⸔῵ഫৃ㛑থ⦄ϔϾ⡍⅞ⱘ PEIM ≵᳝䗮䖛ℷ⹂ⱘ偠䆕៪㗙ᭈϾ೎ӊ㹿⸈ണDŽ

⊼ᛣ˖೼䖭⾡㾖⚍ϟˈ㋏㒳ഄ⠽⧚ᗻ䞡ਃᑊ≵᳝থ⫳DŽPEI 䇗ᑺ఼ҙҙ⏙䰸⢊ᗕֵᙃ੠䞡ਃᅗ㞾
ᏅDŽ
ϔϾ PEIM ৃҹ㹿ᓎゟএ໘⧚䚼ߚᘶ໡Ꮉ԰ᴹ߱ྟ࣪ᬃᣕᘶ໡Ꮉ԰ⱘ໪ೈ䆒໛˄ࣙᣀҪӀ
ԡѢⱘᘏ㒓˅ ˈ✊ৢҢ໪ೈ䆒໛এ䇏পᮄ䬰‫ڣ‬ᴹछ㑻೎ӊोDŽ
PEI ✊ৢ䖯ܹ DXE 䰊↉ˈ಴Ў DXE 㹿䆒䅵ᴹ໘⧚Ϣ໪ೈ䆒໛ⱘ䗮ֵDŽ䖭⾡䖯ܹ乱໪ⱘད໘
ህᰃᰃབᵰ DXE থ⦄ϔϾ䆒໛ᤳണˈᅗৃ㛑ϡ⫼ᡞ᥻ࠊᴗѸ㒭 PEI 䰊↉ᴹᓔྟᘶ໡DŽ
བᵰ PEI ෎⸔῵ഫ≵᳝ϔϾ݇Ѣ䇗ᑺ‫ݙ‬ᆍⱘ߫㸼ˈᅗབԩⶹ䘧೼೎ӊो䞠ϔϾ᮴ᬜⱘऎඳ
ᰃ৺ࣙ৿ϔϾ PEIM˛PEI ෎⸔῵ഫ೼ᅗ᧰㋶ PEIM ᯊᅗৃҹথ⦄໻䚼ߚⱘᤳണˈ䖭ⳟ䍋ᴹ‫ڣ‬ᰃ
ϔϾ䰘ࡴ㒧ᵰDŽ಴ℸˈབᵰ PEI ෎⸔῵ഫ೼ᅠ៤ᅗⱘ䇗ᑺ䖛⿟ৢᑊ≵᳝থ⦄䎇໳ⱘ䴭ᗕ㋏㒳ᄬ
‫ټ‬ぎ䯈এᓔྟ DXE 䰊↉ˈ✊ৢᅗӮ䖯ܹࠄᘶ໡῵ᓣDŽ







ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀कѨゴ
3(, ߱ྟ࣪
ᇣህᰃ㕢
---- E.F. Schumacher

೼ᑇৄ䖤㸠ᳳ䯈 3(, 䰊↉᳝ϸϾЏ㽕ⱘӏࡵ˖⹂ᅮ䞡ᮄਃࡼⱘᴹ⑤੠ЎⳌ㒻䖤㸠ⱘ ';( 䰊


↉ᦤկᇥ䞣ⱘ೎ᅮ‫ݙ‬ᄬDŽĀᇥⱘāˈĀ᳔ᇣ䰤ᑺⱘāˈㄝᴃ䇁㒣ᐌ⫼Ѣ 3(, ҷⷕˈ಴Ў⹀ӊ䌘
⑤ⱘ㑺ᴳ䰤ࠊњ㓪⿟ⱘ⦃๗DŽ⡍߿ഄˈ3(, 䰊↉Ў໘⧚఼ǃ㢃⠛㒘੠㋏㒳ᵓᦤկњᷛ‫ࡴⱘޚ‬䕑੠
䇗⫼⡍⅞߱ྟ䜡㕂⿟ᑣⱘᮍ⊩DŽ3(, 䰊↉থ⫳೼ 6(& 䰊↉ৢˈ䖤㸠䆹䰊↉ҷⷕⱘ佪㽕Ⳃⱘᰃ߱ྟ
࣪ད䎇໳໮ⱘ㋏㒳ˈ‫ܕ‬䆌 ';( 䰊↉㛑໳䖤㸠DŽ᳔䍋ⷕˈ3(, 䰊↉㽕䋳䋷‫އ‬ᅮ㋏㒳ਃࡼⱘ䏃ᕘǃ߱
ྟ࣪੠ᦣ䗄ϔϾ᳔ᇣ᭄䞣ⱘ㋏㒳‫ݙ‬ᄬঞࣙ৿ ';()RXQGDWLRQ ੠ ';( 㒧ᵘण䆂ⱘ )9DŽབ᮴ᖙ㽕ˈ
࣓๲ᅲԧˈ᳔ᇥ䞣ⱘࡼ԰ᑨ䆹㹿㊒⹂ⱘࡴ䕑ࠄ䖭Ͼ䰊↉ᠻ㸠ˈϡ໮ϡᇥ߮߮དDŽ

԰⫼ඳ

3(,䰊↉䋳䋷Ўৢ㓁䰊↉ᦤկϔϾ〇ᅮⱘ෎⸔㗠߱ྟ࣪䎇໳໮ⱘ㋏㒳DŽᅗг䋳䋷Ң༅ᬜⱘ೎ӊ
‫ټ‬ᄬぎ䯈Ẕ⌟੠ᘶ໡ᑊᦤկ䞡䍋ॳ಴˄ਃࡼ῵ᓣ˅DŽ

⦄Ҟⱘ䅵ㅫᴎϔ㠀䛑೼ϔϾ䴲ᐌॳྟⱘ⢊ᗕᠻ㸠ˈ㒉㾖ਃࡼ೎ӊˈ՟བ %,26 ៪ḚᶊDŽ໘⧚


఼ৃ㛑䳔㽕᳈ᮄᅗӀⱘ‫ݙ‬䚼ᖂⷕ˗㢃⠛㒘˄㢃⠛㒘ᦤկњ໘⧚఼੠㋏㒳݊ᅗЏ㽕఼ӊП䯈ⱘ᥹
ষ˅䳔㽕Ⳍᔧ໮ⱘ߱ྟ࣪DŽ3(, 䰊↉ህᰃ䋳䋷߱ྟ࣪䖭ѯ෎ᴀⱘᄤ㋏㒳DŽ3(, 䰊↉ᠧㅫᦤկϔϾ
ㅔऩⱘ෎⸔㒧ᵘˈ䗮䖛ᅗϔѯ᳝䰤ⱘЎњ䕀⿏ࠄ᳈‫ܜ‬䖯ⱘ ';( 䰊↉ⱘӏࡵ㛑໳㹿ㅔऩഄᅠ៤DŽ
3(, 䰊↉া䋳䋷ᑇৄਃࡼ䳔㽕ⱘ䙷ѯᇣ䚼ߚӏࡵ˗ᤶ㗠㿔Пˈᅗᑨᔧা䳔㽕ሹ㸠䙷ѯЎਃࡼ ';(
᠔䳔ⱘ䙷䚼ߚ᳔ᇣⱘӏࡵDŽ಴Ў⹀ӊⱘᬍ䖯ˈ䖭ѯӏࡵЁⱘ䚼ߚৃ㛑Ң 3(, 䰊↉⿏ߎᴹDŽ

෎ᴀॳ⧚˖

䆒䅵 3(, ᴀ䋼Ϟህᰃ䆒䅵ϔϾᖂൟ⠜ⱘ ';(ˈᅗӀ᳝ᕜ໮Ⳍৠⱘ䯂乬DŽ3(, 䰊↉ࣙ৿޴Ͼ


䚼ߚ˖
ƵϔϾ 3(, ෎⸔˗
ƵϔϾ៪໮Ͼ 3(, ߱ྟ࣪῵ഫ
3(, ෎⸔ⱘⳂᷛᰃЎ⡍⅞ⱘ໘⧚఼ԧ㋏㒧ᵘֱ⬭Ⳍ݇ⱘᐌ䞣ˈЎᬃᣕҢϡৠկᑨଚᦤկⱘ⡍
⅞໘⧚఼ˈ㢃⠛㒘ˈᑇৄ੠݊ᅗⱘ఼ӊࡴܹ῵ഫDŽ㢹≵᳝῵ഫ䯈ⱘⳌѦ݇㘨䖭ѯࡴܹⱘ῵ഫ䗮
ᐌϡ㛑㹿㓪ⷕˈህㅫৃҹˈࡴܹᅗӀᇚг䍋ϡࠄ԰⫼DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

3(, ϡ‫ (;'ˈ(;' ڣ‬䰊↉ᄬ೼ড়⧚᭄䞣ৃ⫼ⱘ೎ᗕ㋏㒳‫ݙ‬ᄬˈ3(, 䰊↉ҙ᳝᳝䰤ⱘЈᯊ‫ݙ‬ᄬ


ᄬ೼ᑊϨ䖭ѯЈᯊ‫ݙ‬ᄬ೼೎ᗕ㋏㒳‫ݙ‬ᄬ㹿߱ྟ࣪ৢৃ㛑೼ 3(, 䰊↉Ё㹿䞡ᮄ䜡㕂⫼‫خ‬Ҫ⫼DŽℷ
಴བℸˈ3(, 䰊↉≵᳝ ';( 䰊↉䙷ḋЄᆠⱘ⡍ᕕDŽϟ䴶ᰃᅗӀП䯈⡍ᕕϡৠⱘ᳔ᯢᰒ՟ᄤ˖
Ƶ';( ᳝Єᆠⱘ ORDGHGLPDJH ᭄᥂ᑧ੠Ϣ㒥ᅮ೼ LPDJH Ϟⱘण䆂
Ƶ3(, ≵᳝‫ (;' ڣ‬偅ࡼ῵ൟ䖭ḋЄᆠⱘ῵ഫሖ⃵㒧ᵘDŽ

ὖ䗄

3(, 䰊↉⬅ϔѯ )RXQGDWLRQ ҷⷕ੠‫ ڣ‬3(,0 䖭ḋⱘ⡍⅞偅ࡼ㒘៤ˈ3(,0 ৃᅮࠊᑇৄ 3(, 䰊


↉᠔䳔ⱘ᪡԰DŽ)RXQGDWLRQ ҷⷕ䋳䋷Ўᦦܹⱘ 3(,0 ᣝ乎ᑣੑҸ䇗䜡ᑊᦤկ෎ᴀⱘ᳡ࡵDŽ3(,0
㉏ԐѢ ';( 偅ࡼˈϔ㠀ᇍᑨѢ఼ӊⱘ߱ྟ࣪DŽ3(,0 乘ᳳᰃ఼ӊկᑨଚᦤկৃ㛑ҹॳҷⷕᔶᓣ㒳
ϔᅲ㸠ⱘ 3(,0ˈ䖭ḋᅶ᠋㛑ᖿ䗳ഄ䇗䆩ᭈড়䗴៤ⱘ䯂乬DŽ

ᅲ⦄ 3(, 䰊↉↨݊ᅗ )RXQGDWLRQ ᳈໮ഄձ䌪Ѣ໘⧚఼ⱘ㒧ᵘDŽ⡍߿ᰃˈ໘⧚఼ᦤկ䍞໮݊


߱ྟ࣪៪᥹䖥߱ྟ⢊ᗕⱘ䌘⑤ˈ3(, ⦃๗ህӮবᕫ䍞ЄᆠDŽৠḋഄˈϟ䴶᳝޴Ͼ݇Ѣ㒧ᵘ䳔∖⊼
ᛣџ乍ⱘ䅼䆎䚼ߚˈԚᰃˈ䖭ᰃ໘⧚఼㒧ᵘⱘϔѯ⡍⅞䚼ߚˈ಴ℸϡᰃᅠᭈⱘᅮНDŽ

3(, 䰊↉㛑໳Ңᯊ䯈੠ぎ䯈ⱘϸϾ㾦ᑺⳟᕙDŽ೒  ᦤկњਃࡼ䖛⿟ⱘᘏԧ㒧ᵘDŽ೒ 


ᰃ 3(, Ңぎ䯈Ϟⳟⱘ㒧ᵰDŽ䖭ᓴ೒ᦣ䗄њḚᶊЁ৘఼ӊⱘሖ⃵DŽ䖭ᓴ೒䗮ᐌ㹿䇈៤ᰃĀ+āൟ㒧
ᵘDŽ3(,ᡬ㹋Ā+āⱘϟञ䚼ߚDŽҢᯊ䯈ⱘ㾦ᑺⳟህᰃㄝࠄ 3(,)RXQGDWLRQ ੠ᅗⳌ݇ⱘ῵ഫᠻ
㸠ⱘᯊ‫׭‬DŽ೒  Ёᷛ䆄ⱘᰃ೒  ⱘϔ䚼ߚˈ䖭䚼ߚህࣙ৿ⴔ 3(,DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ℸ䰊↉㽕∖

ϟ䴶ᦣ䗄њ 3(, 䰊↉㛑៤ࡳᅠ៤᠔ᖙ㽕ⱘ䚼ߚ˖

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Јᯊⱘ 5$0

3(,)RXQGDWLRQ 㽕∖೼㋏㒳‫ݙ‬ᄬ㹿ᅠܼ߱ྟ࣪ࠡ 6(& 䰊↉ᑨ߱ྟ࣪ད᳔ᇣ᭄䞣ⱘ᱖ᄬᓣ 5$0


⫼Ѣ 3(, 䰊↉᭄᥂ᄬ‫ټ‬DŽ䖭Ͼ᱖ᄬᓣ 5$0 ᑨ䆹㛑‫ڣ‬ᐌ㾘 5$0 䙷ḋ㹿䆓䯂՟བ˖ࠡッᘏ㒓䗮䖛
ᄬ‫਼ټ‬ᳳ䆓䯂DŽ㋏㒳㹿ᅠܼ߱ྟ࣪དৢˈЈᯊ 5$0 ৃ㛑Ӯ㹿䞡ᮄ߱ྟ࣪㒭߿ҎՓ⫼DŽ‫݌‬ൟഄˈ
㹿ᦤկ⫼԰Јᯊ 5$0 ⱘᰃ໘⧚఼ⱘ‫ݙ‬䚼 &DFKHDŽ

ਃࡼ )9˄%)9˅

ਃࡼ೎ӊोࣙ৿њ 3(,)RXQGDWLRQ ੠ 3(,0 ῵ഫDŽ%)9 ᖙ䳔ߎ⦄೼ϡ䳔㽕೎ӊ乘‫ܜ‬ᑆ⍝ⱘ㋏


㒳‫ݙ‬ᄬぎ䯈ᑊϨ‫݌‬ൟഄࣙ৿‫݋‬᳝໘⧚఼㒧ᵘⱘ໡ԡⶶ䞣DŽ

%)9 ⱘ‫ݙ‬ᆍ䙉ᕾ (),IODVK᭛ӊ㋏㒳ⱘḐᓣDŽ3(, )RXQGDWLRQ 䙉ᕾ (),IODVK᭛ӊ㋏㒳


ⱘḐᓣ೼ %)9 Ёᇏᡒ 3(,0DŽᑇৄЁϔϾ⡍⅞ⱘ 3(,0 ৃ㛑Ӯᇚ㋏㒳Ё݊Ҫ )9 ⱘԡ㕂䗮ⶹ㒭 3(,
)RXQGDWLRQˈ䖭ህ‫ܕ‬䆌 3(,)RXQGDWLRQ এ݊Ҫ )9 Ёᡒ 3(,0DŽ3(,)RXQGDWLRQ੠ 3(,0ੑৡ䗮
䖛 (),IODVK᭛ӊ㋏㒳Ёⱘ㒳ϔ ,'DŽ
5HFRYHU\˄ᘶ໡˅㽕∖ 3(,)RXQGDWLRQ ੠ϔѯ 3(,0᮶㛑䫕ᅮ೼ϔϾϡ㛑㹿᳈ᮄⱘ %)9 Ёг㛑
Փ⫼ϔ⾡ᆍ䫭ᴎࠊ㹿᳈ᮄDŽ(),IODVK᭛ӊ㋏㒳ᦤկњߎ䫭 5HFRYHU\˄ᘶ໡˅˗བᵰ㋏㒳㒜ℶ
೼ӏԩϔϾ⚍ˈϡㅵᰃ乘‫ܜ‬᳈ᮄདⱘ 3(,0 ៪ᰃ᳔ᮄ᳈ᮄདⱘ 3(,0䛑㛑ᅠܼഄ᳝ᬜˈᑊϨ 3(,
)RXQGDWLRQ 㛑⹂ᅮાϾᰃ᳝ᬜⱘDŽ

ᅝܼᗻ‫ܗ‬㋴

6(& 䰊↉ᦤկњϔϾ⫼ᴹᠻ㸠偠䆕᪡԰ⱘ᥹ষࠄ 3(,)RXQGDWLRQDŽЎњᓊ㓁ḍ䚼ֵӏˈ3(,


)RXQGDWLRQ ᇚ⫼䖭ϾᴎࠊএՓ৘Ͼ 3(,0 ᳝ᬜDŽ

ὖᗉ

ϟ䴶޴Ͼ䚼ߚᦣ䗄њ䆒䅵 3(, 䰊↉ⱘϔѯὖᗉDŽ

3(,)RXQGDWLRQ

3(,)RXQGDWLRQᰃϔϾ⫼↣Ͼ໘⧚఼㒧ᵘ㓪䆥៤ߑ᭄ⱘϔϾㅔऩৃᠻ㸠ⱘѠ䖯ࠊ᭛ӊDŽᅗ
ሹ㸠ϸϾЏ㽕ⱘࡳ㛑˖
Ƶ䇗ᑺ 3(,0
Ƶᦤկϔ㒘䗮⫼ⱘḌᖗ᳡ࡵ㒭 3(,0 Փ⫼DŽ

3(,䇗ᑺ఼ⱘᎹ԰ᰃ᳝ᑣഄӴ䗦᥻ࠊᴗ㒭 3(,0DŽ䗮⫼Ḍᖗ᳡ࡵᰃ䗮䖛ϔϾ᳡ࡵ⿟ᑣ㸼ᦤկˈ
䖭Ͼ㸼䗮ᐌ⿄‫ خ‬3(, ᳡ࡵ⿟ᑣ㸼DŽ䖭ѯ᳡ࡵ⿟ᑣЏ㽕‫خ‬བϟџᚙ˖
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ƶ䕙ࡽ3(,0 Ϣ 3(,0 䗮䆃DŽ


Ƶᢑ䈵࣪ㅵ⧚Јᯊ 5$0
Ƶᦤկབϟ䗮⫼ߑ᭄䕙ࡽ 3(,0˖
೼ ))6 Ёᶹᡒ݊ᅗ᭛ӊ
᡹ਞ⢊ᗕⷕ
ЎӴ䗦⢊ᗕ㒭ḚᶊⱘϟϔϾ䰊↉‫ޚخ‬໛DŽ

ᔧ 6(& 䰊↉ᅠ៤ˈ6(& 䇗⫼ 3(,)RXQGDWLRQ ᑊᦤկ޴Ͼᏺখ᭄ⱘ 3(,)RXQGDWLRQ˖


Ƶ%)9ⱘ໻ᇣ੠ԡ㕂ˈ಴ℸˈ3(,)RXQGDWLRQⶹ䘧ࠄા䞠এᡒ߱䆩䆒㕂དⱘ 3(,0DŽ
Ƶ3(, 䰊↉㛑⫼ⱘ᳔ᇣ᭄䞣Јᯊ 5$0
ƵϔϾಲ䇗偠䆕᳡ࡵˈ⫼ᴹ‫ܕ‬䆌 3(,)RXQGDWLRQ 偠䆕೼䇗ᑺ 3(,0 Пࠡ䖭ѯ 3(,0 Ꮖ㒣㹿⹂
䅸থ⦄њ

3(,)RXQGDWLRQ 䕙ࡽ 3(,0 П䯈ѦⳌ䗮ֵDŽ3(,)RXQGDWLRQЎ᠔᳝ 3(,0 㓈ᡸϔϾᏆ⊼‫ⱘݠ‬


᥹ষ᭄᥂ᑧˈ೒  ᠔⼎DŽ䖭ѯ᥹ষ㹿ি‫ خ‬3(,0 ࠄ 3(,0 П䯈ⱘ᥹ষ˄33,˅DŽ3(,)RXQGDWLRQ
ᦤկњ‫ܕ‬䆌 3(,0 ⊼‫ ݠ‬33,ᑊϨᔧ঺ϔϾ 3(,0 ᓎゟњ 33, ᯊӮ䗮ⶹ˄ড作˅ⱘ᥹ষDŽ

3(,䇗ᑺ఼⬅ϔϾऩϔ䰊↉㒘៤DŽ೼䇗ᑺ䰊↉ 3(,)RXQGDWLRQ Ẕᶹ᠔᳝ࣙ৿೼ )9 Ё㉏ൟ


Ў 3(,0 ⱘ᭛ӊDŽᅗ೼↣Ͼ೎ӊ᭛ӊЁẔᶹձ䌪ᗻ㸼䖒ᓣᴹ‫އ‬ᅮ䖭Ͼ 3(,0 ᰃ৺ৃҹ䖤㸠DŽ⫼Ѣ
3(,0 ⱘѠ䖯ࠊ㓪ⷕᴵӊ߸ᮁ㸼䖒ᓣϢ ';( 䰊↉偅ࡼⳌ݇㘨ⱘᴵӊ߸ᮁ㸼䖒ᓣᰃϔḋⱘDŽ

3(, ߱ྟ࣪῵ഫ

3(,0 ৃࣙ৿໘⧚఼ˈ㢃⠛㒘ˈ䆒໛ˈ៪㗙݊ᅗ⡍⅞ᑇৄࡳ㛑ⱘৃᠻ㸠Ѡ䖯ࠊ᭛ӊDŽ3(,0 ৃ
ᢑ䈵៤ৃᦤկ 3(,0 ៪ 3(,)RXQGDWLRQ Ϣ 3(,0 ៪⹀ӊ䯈䗮ֵⱘ᥹ষDŽ3(,0ᰃऩ⣀㓪䆥៤ⱘѠ
䖯ࠊ῵ഫˈᅗ‫݌‬ൟഄ偏⬭೼ 520 ЁϨ≵᳝㹿य़㓽DŽৃ㛑ᄬ೼ϔᇣ䚼ߚ 3(,0 Ўњᗻ㛑ॳ಴೼ 5$0
Ё䖤㸠ˈ䖭ѯ 3(,0 ҹय़㓽Ḑᓣᬒ೼ 520 ЁDŽᬒ೼ 520 Ёⱘ 3(,0 ᰃ‫ݙ‬㕂ᓣৃᠻ㸠ⱘ῵ഫˈ䖭ѯ
῵ഫৃ㛑ᰃ⬅ԡ㕂⣀ゟҷⷕ៪ԡ㕂Ⳍ݇ҷⷕϢ䞡ᅮԡֵᙃϔ䍋㒘៤ⱘDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

3(,᳡ࡵ⿟ᑣ

3(,)RXQGDWLRQ೼㋏㒳ЁᓎゟϔϾৃ䅽᠔᳝ 3(,0 ৃ㾚࣪ⱘ㋏㒳㸼ˈ䖭Ͼ㸼㹿ੑৡЎ 3(,


6HUYLFHV7DEOHDŽϔϾ 3(,᳡ࡵ⿟ᑣৃҹ㹿ᅮН៤ϔϾߑ᭄ˈੑҸˈ៪㗙݊ᅗࡳ㛑ˈᔧ䳔㽕߱
ྟ࣪៤ા⾡᳡ࡵᯊˈ3(,)RXQGDWLRQ ህ㛑ᡞᅗ㸼⦄ߎᴹDŽ಴ЎⳈࠄ 3(, 䰊↉ⱘ᳿ッℸ䰊↉≵᳝
ৃ⫼ⱘ೎ᅮᄬ‫ˈ఼ټ‬᠔ҹ 3(, 䰊↉㛑㹿߯ᓎⱘ᳡ࡵ⿟ᑣⱘ㣗ೈϡ㛑‫ ڣ‬3(, ৢ䰊↉ϔḋЄᆠDŽ಴
Ў೼㓪䆥ⱘᯊ‫׭‬ϡⶹ䘧 3(,)RXQGDWLRQ ੠݊Јᯊ‫ݙ‬ᄬⱘԡ㕂ˈ᠔ҹϔϾᣛ৥ 3(,6HUYLFHV7DEOH
ⱘᣛ䩜㹿ᬒ䖯↣Ͼ 3(,0 ੠ 33, ЁDŽ3(,)RXQGDWLRQᦤկњϟ䴶޴⾡㉏ൟⱘ᳡ࡵ˖
Ƶ33,᳡ࡵㅵ⧚ 33, ֗䖯 3(,0 ῵ഫ䯈ⱘ䇗⫼DŽ೼Јᯊ 5$0 Ё㓈ᡸ᥹ষ㹿ᅝ㺙੠㹿䎳䏾ֵ
ᙃⱘ᭄᥂ᑧDŽ
Ƶਃࡼ῵ᓣ᳡ࡵ˖ㅵ⧚㋏㒳ⱘਃࡼ῵ᓣ˄6ˈ6ˈℷᐌਃࡼˈ䆞ᮁˈㄝ˅DŽ
Ƶ+2%᳡ࡵᓎゟি +DQG2II%ORFNV ⱘ᭄᥂㒧ᵘˈ䖭⫼ѢӴ䗦ֵᙃ㒭ᭈϾḚᶊЁⱘϟϔ
Ͼ䰊↉DŽ
Ƶ)LUPZDUH9ROXPH᳡ࡵ೼ )ODVK ⱘ )9 Ёᠿᦣ৘ ))6 ᇏᡒ 3(,0 ੠݊ᅗ೎ӊ᭛ӊDŽ
Ƶ3(,0HPRU\᳡ࡵ೼೎ᅮᄬ‫఼ټ‬㹿থ⦄ⱘࠡৢˈᦤկᄬ‫఼ټ‬ㅵ⧚᳡ࡵ⿟ᑣ䲚DŽ
Ƶ⢊ᗕⷕ6HUYLFHV㒳ϔⱘ䖯ሩ੠䫭䇃ҷⷕ᡹ਞ᳡ࡵ⿟ᑣˈ⫼ᴹҢ  ষ៪Іষ϶ㅔऩᄫ
ヺ䇗䆩⫼DŽ
Ƶ5HVHW6HUYLFHVᦤկϔϾ㒳ϔⱘᮍᓣ䞡䍋㋏㒳DŽ

3(,0 ࠄ 3(,0 䯈ⱘ᥹ষ˄33,˅

3(,0 ৃҹ䗮䖛 33, ᥹ষ䇗⫼݊ᅗ 3(,0DŽЎњ‫ܕ‬䆌῵ഫⱘ⣀ゟᓔথ੠᥹ষ䯈≵᳝ৡᄫ‫ކ‬さˈ


䖭ѯ᥹ষՓ⫼ *8,' 㒭㞾ᏅੑৡDŽ*8,' ᰃϔϾ  ԡⱘؐˈ೼ਃࡼ᳡ࡵЁ⫼Ѣऎߚ᳡ࡵ⿟ᑣ੠㒧
ᵘDŽ33, 㹿ᅮН៤㒧ᵘˈᅗৃҹࣙ৿ߑ᭄ˈ᭄᥂ˈ៪㗙䖭ϸ㗙ⱘ㘨ড়ԧDŽ3(,)RXQGDWLRQㅵ⧚
њ⊼‫ ݠ‬33, ⱘ᭄᥂ᑧˈ3(,0 ᖙ乏㽕Փ⫼ᅗᴹ⊼‫ ݠ‬33,DŽ3(,0 ᛇ㽕Փ⫼ϔϾ‫݋‬ԧⱘ 33, ৃҹᶹ䆶
3(,)RXQGDWLRQ ᴹᡒࠄҪ᠔䳔㽕ⱘ᥹ষDŽϸ⾡㉏ൟⱘ 33, ᰃ˖
Ƶ᳡ࡵ⿟ᑣ
Ƶ䗮ⶹ

33, ᳡ࡵ⿟ᑣ‫ܕ‬䆌䖭Ͼ 3(,0 㒭঺໪ϔϾ 3(,0 ᦤկߑ᭄៪᭄᥂Փ⫼DŽ33, 䗮ⶹ‫ܕ‬䆌⊼‫ݠ‬ϔϾ


3(,0 ಲ䇗ˈᔧ঺ϔϾ 33, 㹿 3(,)RXQGDWLRQ ⊼‫ݠ‬DŽ

ㅔऩⱘේ

೼೎ᅮ㋏㒳ᄬ‫఼ټ‬㹿ᅝ㺙ࠡˈSHL)RXQGDWLRQՓ⫼Јᯊ 5$0 ᦤկϔϾㅔऩⱘේᄬ‫ټ‬DŽ3(,0


ৃҹ䇋∖ҢේЁߚ䜡ᄬ‫ټ‬ऩ‫ˈܗ‬Ԛᰃ≵᳝ҢේЁ䞞ᬒ‫ݙ‬ᄬⱘᴎࠊᄬ೼DŽϔᮺ೎ᅮᄬ‫఼ټ‬㹿ᅝ㺙
དˈේህӮ㹿䞡ᮄᅮԡࠄ೎ᅮ㋏㒳‫ݙ‬ᄬЁˈԚᰃ 3(,)RXQGDWLRQ ϡӮ໘⧚ේЁᄬ೼ⱘ᭄᥂DŽ಴
ℸˈᔧⳂᷛᰃේЁ݊ᅗ᭄᥂ᯊᶤ 3(,0 ϡ㛑ᇚᣛ䩜ᄬܹℸේЁDŽℷབ䫒㸼DŽ

Ӵ䗦ϟএⱘֵᙃഫ˄+2%V˅

+2%6 ᰃ )UDPHZRUG 㒧ᵘЁҢ 3(, 䰊↉Ӵ䗦㋏㒳⢊ᗕֵᙃࠄ ';( 䰊↉ⱘ㒧ᵘᴎࠊDŽ+2% ᰃ‫ݙ‬


ᄬЁㅔ࣪ⱘ᭄᥂㒧ᵘ˄ऩ‫ˈ˅ܗ‬ᅗࣙ৿ϔϾ༈੠᭄᥂䚼ߚDŽ༈ⱘᅮНᇍ᠔᳝ +2% 䛑ᰃ㒳ϔⱘϨ
‫ܕ‬䆌ӏԩҷⷕՓ⫼䖭ϾᅮНএњ㾷ϸϾᴵℒ˖

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ƶ᭄᥂䚼ߚⱘ㒧ᵘ
Ƶ+2% ᘏ໻ᇣ

೎ᅮ‫ݙ‬ᄬ㹿ᅝ㺙དৢˈ+2%೼‫ݙ‬ᄬЁ㹿乎ᑣഄߚ䜡ˈ3(,0 ৃҹ⫼ࠄ䖭ѯ +2%DŽϔ㋏߫Ḍ


ᖗ᳡ࡵ֗៤њ䖭Ͼ‫ݙ‬ᄬЁ +2% ⱘ乎ᑣ߫㸼ˈᐌ㹿⿄‫ خ‬+2% ߫㸼DŽ+2% ߫㸼Ёⱘ㄀ϔϾ +2% ᖙ乏
ᰃ 3+,7+2%ˈᅗᦣ䗄њ 3(, 䰊↉᠔Փ⫼ⱘ‫ݙ‬ᄬ੠䖭ᳳ䯈᠔থ⦄ਃࡼ῵ᓣDŽ

া᳝ 3(, 䰊↉ⱘ‫ܗ‬ӊᠡ‫ܕ‬䆌๲ࡴ៪᳈ᬍ +2%DŽϔᮺ +2% ߫㸼㹿Ӵ䗦ࠄ ';(ˈ';(‫ܗ‬ӊা㛑


ᇍᅗ᳝ᬜഄ䇏DŽ';( 䰊↉ЁҢা䇏 +2% ߫㸼Ё䇏ࠄⱘ㸡⫳⠽ᰃᦵ᠟ֵᙃˈ՟བˈਃࡼ῵ᓣˈᖙ
䳔ҹϔ⾡㒳ϔⱘᮍᓣ໘⧚˗བᵰ ';( ᇚ䗴៤ϔϾ UHFRYHU\ ᴵӊˈᅗᇚϡӮ᳈ᮄਃࡼ῵ᓣˈ㗠
ᰃՓ⫼ϔ⾡⡍⅞㉏ൟⱘ໡ԡ䇗⫼ᴹҷ᳓ᠻ㸠ࡼ԰DŽ+2% ߫㸼ࣙ৿ 3(, 䰊↉Ӵ䗦ࠄ ';( 䰊↉ᯊ᠔
ࣙ৿ⱘ㋏㒳⢊ᗕ᭄᥂ˈԚϡҷ㸼 ';( 䰊↉ᳳ䯈㋏㒳ᔧࠡⱘ⢊ᗕDŽ';( 䰊↉ⱘ఼ӊᑨՓ⫼ ';(
ᅮНⱘ䙷ѯ᳡ࡵҷ᳓䗮䖛ߚᵤ +2% ߫㸼ᴹ㦋ᕫᔧࠡ㋏㒳ⱘ⢊ᗕDŽ԰Ўᣛᇐᮍ䩜߭ᳳᳯ 3(, ੠
';( 䰊↉П䯈ᇚӓ✻ϔϾ⫳ѻ㗙੠ϔϾ⍜䌍㗙ⱘ῵ൟӴ䗦ֵᙃDŽᤶ㗠㿔Пˈे೼ 3(, 䰊↉ϔϾ
3,(0 Ӯѻ⫳ϔϾ +2%ˈᑊϨ ';( 偅ࡼ㛑Փ⫼䙷Ͼ +2% ᑊᇚϢ䙷Ͼ +2% Ⳍ݇㘨ⱘֵᙃӴ䗦㒭 ';(
䰊↉Ё݊ᅗ䳔㽕䖭Ͼֵᙃⱘ఼ӊDŽ';( 偅ࡼᦤկ㒭݊ᅗ ';( ఼ӊⱘ +2% ֵᙃ᠔Փ⫼ⱘᮍ⊩ᑨӓ
✻ ';( 㒧ᵘ᠔ᅮНⱘᴎࠊDŽ

᪡԰

3(, 䰊↉ⱘ᪡԰ࣙ৿˖䇗⫼ 3(,)RXQGDWLRQˈ乎ᑣഄ䇗ᑺ᠔᳝ⱘ 3(,0ˈথ⦄੠䇗⫼ϟϔϾ䰊


↉DŽ3(,)RXQGDWLRQ ߱ྟ࣪ᳳ䯈ˈ3(,)RXQGDWLRQ ߱ྟ࣪䙷ѯ䳔㽕㒭 3(,0 ᦤկ䗮⫼᳡ࡵⱘ
‫ݙ‬䚼᭄᥂ऎඳ੠ߑ᭄DŽ3(,0 䇗ᑺᳳ䯈ˈ3(, 䇗ᑺ఼䘡ग़᠔᳝᠔᳝ⱘ )9ˈḍ᥂ IODVK᭛ӊ㋏㒳
ᅮНথ⦄ 3(,0DŽ✊ৢˈབᵰϟ䴶ⱘᴵӊ⒵䎇ⱘ䆱 3(, 䇗ᑺ఼䇗ᑺ᠔᳝ⱘ 3(,0˖
Ƶ3(,0 䖬≵᳝㹿䇗⫼䖛DŽ
Ƶ3(,0 ᭛ӊᏆ㒣㹿ℷ⹂ⱘḐᓣ࣪དDŽ
Ƶ3(,0 ৃֵ䌪
Ƶ3(,0 ⱘձ䌪ᗻᴵӊ⒵䎇DŽ

䇗ᑺᅠϔϾ 3(,0 ৢˈ3(, 䇗ᑺ఼㒻㓁೼ )9 Ёᶹᡒ݊ᅗⱘ 3(,0ˈⳈࠄˈ˄᮶˅থ⦄ⱘ᠔᳝ 3(,0


䛑㹿䇗⫼䖛ˈৠᯊг≵᳝㛑໳㹿䇗⫼ⱘ 3(,0ˈ಴Ў≵᳝ϔϾ 3(,0 㛑⒵䎇Ϟ䗄㽕∖DŽϔᮺ䖭Ͼ
ᴵӊ㹿⒵䎇ˈ3(, 䇗ᑺ఼ⱘᎹ԰ህᅠ៤њˈ✊ৢᅗ䇗⫼ϔϾ˄㉏Ԑ˅33, 㒧ᵘᴹਃࡼᭈϾḚᶊ
ⱘϟϔϾ䰊↉ˈ';( ߱ྟ࣪⿟ᑣࡴ䕑䖭Ͼ 33,˄,3/˅DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

'HSHQGHQF\㸼䖒ᓣ

ᠻ㸠 3(,0 ⱘ乎ᑣ䗮䖛䆘Ԅ↣Ͼ 3(,0 Ⳍ݇㘨ⱘᴵӊ߸ᮁ㸼䖒ᓣᴹ‫އ‬ᅮDŽ䖭ϾѠ䖯ࠊ㸼䖒ᓣ


ᦣ䗄њ↣Ͼ 3(,0 䖤㸠᠔ᖙ㽕ⱘᴵӊˈᅗᔎ䇗њ 3(,0 ⱘᔅᑣ࣪DŽ೼䖭Ͼᔅᑣ࣪Ёˈ3(,0 ৃҹ㹿
ҹӏԩ乎ᑣ߱ྟ࣪DŽ

೼ 'HSHQGHQF\ 㸼䖒ᓣЁখ㗗˄ᓩ⫼˅33, ੠᭛ӊৡЁⱘ *8,'DŽ'HSHQGHQF\ 㸼䖒ᓣᰃ᪡԰Ё


ϔϾ᳝ҷ㸼ᗻⱘ䇁⊩ˈᅗ㛑໳೼໮᭄ 'HSHQGHQF\ Ёᠻ㸠ˈᴹ߸ᮁ 3(,0 ᰃ৺ৃҹ䖤㸠DŽ3(,
)RXQGDWLRQҢ‫ݙ‬䚼䖤㸠ⱘ 3(,0 ড৥Ԅㅫ 'HSHQGHQF\ 㸼䖒ᓣᑊ⊼‫ ݠ‬33,DŽ䙷ѯԄㅫ᪡԰ৃҹ೼
'HSHQGHQF\˄ࣙᣀ䘏䕥Ϣ䘏䕥៪ǃ䘏䕥䴲੠ПࠡǃПৢⱘ乎ᑣ᪡԰˅Ϟᅠ៤DŽ

偠䆕䡈߿

3(,IRXQGDWLRQᇍѢᅝܼᗻ≵᳝೎ᅮᔶᓣⳌডᅝܼᗻ‫އ‬ᅮᰃᅝᥦ㒭ᑇৄ⡍⅞఼ӊⱘDŽϸ
Ͼؐᕫ⊼ᛣⱘ݇Ѣᅝܼᗻᢑ䈵࣪ⱘ఼ӊᰃ 6HFXULW\33, ੠偠䆕 33,DŽ偠䆕 33, ⱘⳂⱘᰃẔᶹ↣
Ͼ㒭ќⱘ 3(,0 ⱘ䡈߿⢊ᗕDŽ⫼೼䙷䞠ⱘᴎࠊࣙ৿᭄ᄫㅒৡ偠䆕ˈㅔऩⱘ᷵偠੠ˈ៪㗙ϔѯ݊ᅗ
2(0 ⡍⅞ᴎࠊDŽ䖭Ͼ偠䆕ⱘ㒧ᵰ䖨ಲࠄ 3(,)RXQGDWLRQᅗ䕂⌕Ӵ䗕㒧ᵰ㒭 6HFXULW\
33,6HFXULW\33, ‫އ‬ᅮᰃ৺ᓊ䖳ᠻ㸠 3,(0 ៪㗙⦄೼ᠻ㸠DŽ঺໪ˈ6HFXULW\33, ᦤկ㗙ৃҹ䗝
ᢽѻ⫳ϔӑᏆ䇗ᑺ 3(,0 ⱘ䆕ᯢ᮹ᖫܹষ៪㗙ᦤկϔѯ݊ᅗᅝܼᗻᓖᐌџӊDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ᠻ㸠 3(,0

ᔧ 3(,0 㹿 3(,)RXQGDWLRQ 䇗⫼ᯊህӮ䎥এᠻ㸠DŽ↣Ͼ 3(,0 া㛑㹿䇗⫼ϔ⃵ˈᑊϨᖙ乏ᅠ


៤ᅗ㞾ᏅⱘᎹ԰˄䇗⫼੠ᅝ㺙݊ᅗ 33,ˈ‫ܕ‬䆌݊ᅗ 3(,0 ೼ᖙ㽕ⱘᯊ‫׭‬㛑໳䇗⫼ࠄᅗ˅DŽབᵰᖙ
㽕ⱘᯊ‫ ׭‬3(,0 гৃҹ⊼‫ݠ‬ϔϾ䗮ⶹ FDOOEDFN⫼Ѣ݊ᅗⱘ 3(,0 Ꮖ㒣䖤㸠ᅠৢˈ䖭Ͼ 3(,0 䳔㽕
‫⃵ݡ‬㦋ᕫ᥻ࠊᴗDŽ

থ⦄‫ݙ‬ᄬ

থ⦄‫ݙ‬ᄬᰃ 3(, 䰊↉ЁϔϾ䞡㽕ⱘ㒧ᵘџӊDŽᔧϔϾ 3(,0 ៤ࡳഄথ⦄ǃ߱ྟ࣪੠⌟䆩њϔ


Ͼ䖲㓁㣗ೈⱘ㋏㒳‫ݙ‬ᄬᯊˈᅗӮᡞ䖭Ͼ 5$0 ᡹ਞ㒭 3(,)RXQGDWLRQᔧ䙷Ͼ 3(,0 䗔ߎᯊˈ3(,
)RXQGDWLRQ ᡞ 3(, Փ⫼ⱘЈᯊ‫ݙ‬ᄬ䕀⿏ࠄⳳᅲ㋏㒳 5$0 Ёˈ䖭⍝ঞࠄϟ䴶ϸϾӏࡵ˖
Ƶ3(,)RXQGDWLRQ ᖙ乏ᡞЈᯊ 5$0 ЁՓ⫼ⱘේᷜ䕀ᤶࠄ೎ᅮⱘ㋏㒳‫ݙ‬ᄬDŽ
Ƶ3(,)RXQGDWLRQ ᖙ乏ᡞ 3(,0˄ࣙᣀ +2%˅ߚ䜡དⱘㅔऩේ䕀⿏ࠄⳳℷⱘ㋏㒳 5$0 ЁDŽ

ϔᮺ䖭Ͼ䖛⿟ᅠ៤њˈ3(,)RXQGDWLRQ ህӮᅝ㺙ϔϾ DUFKLWHFWXUDO33, 䗮ⶹӏԩⳌ݇ⱘ˄ᛳ


݈䍷ⱘ˅3,(0ˈਞ䆝ᅗӀⳳℷⱘ㋏㒳‫ݙ‬ᄬᏆ㒣ᓎゟདњDŽ䖭Ͼ䗮ⶹ‫ܕ‬䆌 3(,0 ೼‫ݙ‬ᄬᓎゟདП
ࠡ˄UDQWREHFDOOHGEDFN˅㹿ಲি಴ℸᅗӀ㛑ᅠ៤ᖙ㽕ⱘӏࡵüü՟བˈ೼ᅲ䰙ⱘ㋏㒳‫ݙ‬
ᄬЁЎ ';( 䰊↉ᓎゟ +2%DŽ

,QWHOᅝ㝒໘⧚఼ 03 㗗㰥џ乍

䖭䚼ߚ㒭ߎњ ,QWHO,WDQLXQ ໘⧚఼ 03 ㋏߫㋏㒳೼ 3(, 䰊↉᠔䳔㽕ⱘ⡍⅞㗗㰥DŽ෎Ѣᅝ㝒ⱘ㋏


㒳䞠ˈ᠔᳝໘⧚఼೼㋏㒳䍋ࡼ໘ৠᯊᠻ㸠⬅໘⧚఼կᑨଚᦤկⱘ 3$/ ߱ྟ࣪ҷⷕDŽ✊ৢˈ໘⧚
఼㹿ϔϾ䇋∖䇗⫼ࠄ )UDPHZRUNⱘ䍋ࡼҷⷕЁᴹẔᶹ UHFRYHU\DŽ䍋ࡼҷⷕ㒭↣Ͼ⌏ࡼⱘ໘⧚఼
ߚ䜡໻䞣ⱘЈᯊ‫ݙ‬ᄬᑊ䆒㕂ේᷜ੠೼ߚ䜡Јᯊ‫ݙ‬ᄬЁ䞡฿ᣛ䩜DŽЈᯊ‫ݙ‬ᄬৃ㛑ᰃ໘⧚఼ &DFKH
ⱘϔ䚼ߚ˄&$5˅ˈ䖭Ͼ㛑㹿䇗⫼ 3$/ 䜡㕂DŽਃࡼҷⷕ✊ৢ೼↣Ͼ໘⧚఼Ϟᓔྟ䇗ᑺ৘Ͼ 3(,0DŽ
䖤㸠೼໮໘⧚఼῵ᓣϟⱘࠡᳳⱘ 3(,0 Ӯ䗝ᢽϔϾ໘⧚఼԰Ўਃࡼ㒥ᅮ໘⧚఼˄%63˅ᴹ䖤㸠ਃ
ࡼ䰊↉ⱘ 3(,0DŽ

%63 㒻㓁䖤㸠 3(,0 Ⳉࠄᅗᡒࠄ೎ᅮ‫ݙ‬ᄬ੠ 3(,)RXQGDWLRQ ⱘ‫ݙ‬ᄬᓎゟདЎℶDŽ✊ৢˈ%63


૸䝦᠔᳝ⱘ໘⧚఼ᴹ‫އ‬ᅮᅗӀⱘ KHDOWK੠ 3$/ ‫ݐ‬ᆍ⢊ᗕDŽབᵰ䖭ѯẔᶹ䛑≵᳝ᥜᴗ೎ӊ໡ॳˈ
৘໘⧚఼ᇚ䖨ಲࠄ 3$/ ‫خ‬᳈໮ⱘ໘⧚఼߱ྟ࣪಴ℷᐌਃࡼDŽ

೼෎Ѣᅝ㝒ⱘ㋏㒳Ёϡㅵ ,1,7៪ 0&$ џӊথ⫳Ϣ৺ˈ)UDPHZRUNਃࡼҷⷕ✻ḋ㹿㾺থDŽ೼


䖭ѯᴵӊϟˈ3$/ ҷⷕ϶ߎ⢊ᗕⷕˈৠᯊϔϾ㓧‫ކ‬ऎ䇗⫼᳔ᇣ⢊ᗕ㓧‫ކ‬ऎDŽϔϾ⡍⅞ⱘ )UDPHZRUN
ᣛ䩜ᣛ৥䰘ⴔ೼䖭Ͼ᳔ᇣ⢊ᗕ㓧‫ކ‬ऎЁⱘ ,1,7 ੠ 0&$ ҷⷕऎˈᅗࣙ৿њ೼ ,1,7 ੠ 0&$ Ϟᠻ㸠

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

HYHQW ⱘ䆺㒚䌘᭭DŽ䖭Ͼ㓧‫ކ‬ऎгֱᣕњਃࡼҷⷕ೼㒭䖭ѯ⡍⅞⹀ӊџӊ‫އخ‬ᅮᯊ᠔䳔㽕ⱘ䞡㽕
ব䞣ؐDŽ

5HFRYHU\

ᘶ໡ᰃᔧ೎ӊ㹿⸈ണᯊ䞡ᮄᓎゟϔϾ㋏㒳೎ӊ䆒໛ⱘ䖛⿟DŽ䖭Ͼ䫭䇃˄༅ᬜ˅ৃ⬅ϡৠⱘ
ᴎࠊᓩ䍋DŽ໻໮᭄ )9 ೼䴲ᯧ༅ᗻᄬ‫ټ‬䆒໛Ёҹഫⱘൟᓣ㹿ㅵ⧚DŽᔧϔϾ %ORFN ៪ VHPDQWLFDOO\
ERXQGEORFNV ℷ೼᳈ᮄⱘᯊ‫㋏׭‬㒳ᥝ⬉ˈ䖭Ͼ‫ټ‬ᄬ఼ৃ㛑Ӯবᕫ᮴ᬜDŽ঺ϔᮍ䴶ˈ೎ӊ䆒໛ৃ
㛑ᰃ⬅Ѣ㓪⿟䫭䇃៪㗙⹀ӊ䫭䇃ᓩ䍋༅ᬜⱘDŽ‫؛‬䆒 3(, ೼ᆍ䫭 EORFNЁ䖬ᰃ⌏ⴔⱘˈᅗ㛑ᬃᣕ
ϔϾ UHFRYHU\῵ᓣⱘ䇗ᑺDŽ

3(,0 ៪ 3(,)RXQGDWLRQ 㞾䑿㛑໳থ⦄ᰃ৺䳔㽕 UHFRYHU\᳝Ͼ 3(,0 㛑ẔᶹĀᔎࠊ໡ॳā


䏇㒓ˈ՟བˈẔᶹ UHFRYHU\ 䳔∖DŽ3(,)RXQGDWLRQৃ㛑㛑থ⦄ᶤϾ⡍⅞ⱘ 3(,0 ϡᰃᙄᔧഄ᳝
ᬜˈ៪㗙ᭈϾ )9 Ꮖ㒣বᕫ᮴ᬜњDŽ

5HFRYHU\ ৢⱘὖᗉᰃ᳝䎇໳ⱘ㋏㒳೎ӊ㹿ֱ⬭ˈҹ㟇Ѣ㋏㒳ৃҹਃࡼࠄϔϾৃҹ䇏ࠄҢ᠔
䗝ᢽ໪ೈ䆒໛Ё϶༅ⱘ᭄᥂ࡃᴀⱘ⚍ˈ✊ৢ⫼䙷ѯࡃᴀ᭄᥂ᇍ )9 㓪⿟DŽ

UHFRYHU\೎ӊⱘֱᄬᰃ )9 ᄬ‫఼ټ‬ㅵ⧚ᮍᓣⱘϔϾߑ᭄DŽ೼ (),IODVK ᭛ӊ㋏㒳ЁˈUHFRYHU\


᠔䳔∖ⱘ 3(,0 ህ㹿ᷛ䆄៤䙷ḋDŽ)9 Ё⫼Ѣ‫ټ‬ᄬⱘ㒧ᵘԧᖙ乏乘⬭Ꮖᷛ䆄ⱘᴵℒˈ᮶ৃҹᡞᅗᷛ
䆄៤ϡ㛑ব᳈ⱘ˄ৃ㛑䳔㽕⹀ӊⱘᬃᣕ˅гৃҹ⫼ϔϾᆍ䫭᳈ᮄ䖯⿟ֱᡸᅗӀDŽ

ࠄ UHFRYHU\῵ᓣ㹿থ⦄ৢˈ3(, 䇗ᑺ఼ᠡ㛑ℷᐌⱘ㒻㓁ϟএDŽབᵰ 3(, 䇗ᑺ఼䘛ࠄ 3(,0


Ꮖ㒣㹿⸈ണ˄՟བˈ䗮䖛᥹ᬊϔϾ䫭䇃ⱘ᮴⫼ֵᙃ˅ˈᅗᖙ乏ᬍব UHFRYHU\ ⱘਃࡼᮍᓣDŽϔᮺ
ⳳℷᓔྟ UHFRYHU\݊ᅗⱘ 3(,0 ϡ㛑ᬍবᅗӀⱘ⢊ᗕDŽ3(, 䇗ᑺ఼Ꮖ㒣থ⦄㋏㒳Ꮖ໘Ѣ UHFRYHU\
῵ᓣৢˈᅗᇚ䞡ᮄਃࡼ㞾Ꮕˈҙҙএ䇗ᑺ䙷ѯ UHFRYHU\ ᠔䳔㽕ⱘ 3(,0DŽᅗгৃ㛑ᰃϔϾএẔ⌟
♒䲒ᗻᴵӊⱘ 3(,0 ៪㗙ᰃϔϾᔎࠊᗻ UHFRYHU\ Ẕ⌟ⱘ 3(,0ˈᑊϨ䗮ⶹ 3(,䇗ᑺ఼˄䖭Ͼ 3(,0˅
㽕㒻㓁ᠻ㸠ϔϾ UHFRYHU\ 䇗ᑺDŽᔧϔϾ 3(,0 ೼ UHFRYHU\ ၦҟϞᡒࠄ)9 Ϩ ';()RXQGDWLRQ
Ꮖ㒣Ң䙷Ͼ )9 Ϟ㹿ਃࡼৢˈ5HFRYHU\ 䇗ᑺᠡㅫᅠ៤DŽ೼䙷Ͼ ';()9 Ёⱘ偅ࡼ㛑໳ᅠ៤ᘶ໡䖛
⿟DŽ

6 䖨ಲ

3(, 䰊↉ 6 䖨ಲϡৠѢ݊ᅗℷᐌਃࡼⱘ޴Ͼ෎ᴀᮍᓣDŽϟ䴶ᰃϡৠП໘˖
Ƶ‫ݙ‬ᄬ䚼ߚ㹿ᘶ໡៤ⴵ⳴ࠡⱘ⢊ᗕ㗠ϡᰃ߱ྟ࣪ᅗDŽ
Ƶ㋏㒳‫ݙ‬ᄬᔦሲѢ 26ˈϡ㛑㹿 3(,)RXQGDWLRQ ៪㗙 3(,0 Փ⫼DŽ
Ƶ䖨ಲⱘᯊ‫ (;' ׭‬䰊↉ϡ㛑㹿䇗ᑺˈ಴Ўᅗᇚ⸈ണ‫ݙ‬ᄬDŽ
Ƶ3(,0 ᇚℷᐌഄ䇗ᑺ ';( 䰊↉ҷ᳓Փ⫼⡍⅞ⱘ +DUGZDUH6DYH7DEOH এᘶ໡෎ᴀ⹀ӊࠄਃ
ࡼᯊⱘ䜡㕂DŽᘶ໡ᅠ⹀ӊৢˈ3(,0 ᇚ᥻ࠊᴗѸ㒭 26 ᦤկⱘ䖨ಲⶶ䞣DŽ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ƶℷᐌਃࡼᳳ䯈 ';( ੠݊ৢ㓁䰊↉೼ )UDPHZRUN 乘⬭ⱘ‫ݙ‬ᄬ៪ )9 Ёֱᄬњ䎇໳ⱘֵᙃˈկ


26 ⫼Ѣᘶ໡⹀ӊ䆒໛ⱘ⢊ᗕDŽ䖭ϾֱᄬⱘֵᙃህԡѢ +DUGZDUH6DYH7DEOHDŽ

㋏㒳⼎՟

ᔧẔᶹϔϾ‫݋‬ԧⱘᑇৄᯊ᠔᳝ 3(, Ⳍ݇ⱘὖᗉ㛑㹿㓐ড়DŽϟ䴶ⱘ߫㸼ҷ㸼ϔϾ‫݋‬᳝᠔᳝Ⳍ݇㋏


㒳㒘ӊⱘ  ㋏㒳DŽ䖭ϾⳌৠⱘ㋏㒳г೼೒ DŽ Ёሩ⼎ˈᅗࣙ৿њ৘⾡ᅲ䰙ⱘ VLOLFRQ 㒘ӊDŽ
䖭ѯ㒘ӊ೼ৢ䴶ⱘ೒Ё᳝ᇍᑨⱘ 3(,0 এᢑ䈵࣪㒘ӊⱘ߱ྟ࣪੠݊᳡ࡵ⿟ᑣDŽ䖭ѯ &RPSRQHQW Ё
ⱘ↣ϔϾˈ೼޴Ͼ 3(,0 Ёৃ㛑᳝ϔϾ㹿ߚ䜡এᢑ䈵࣪䆹⡍ᅮ FRPSRQHQW ⱘ㸠ЎDŽ䖭ѯ FRPSRQHQW
ৃࣙ৿ⱘ՟ᄤ᳝˖
Ƶ3HQWLXQ ໘⧚఼ 3(,0˖߱ྟ࣪ &38,2᳡ࡵ⿟ᑣ
Ƶ3&, 䜡㕂 3(,0˖3&, 䜡㕂 33,
Ƶ,&+3(,0˖,&+߱ྟ࣪੠ 681%8633,
Ƶ‫ݙ‬ᄬ߱ྟ࣪ 3(,0˖䗮䖛 60%8633, 䇏 63'ˈ߱ྟ࣪‫ݙ‬ᄬ᥻ࠊ఼ˈ᡹ਞ 3(, ৃ⫼ⱘ‫ݙ‬ᄬ
Ƶᑇৄ 3(,0˖)ODVK0RGH ⱘ߯ᓎˈẔ⌟ਃࡼ῵ᓣ
Ƶ';(,3/˖⫼Ѣᓎゟ䍋 ';( ⱘ⡍⅞᳡ࡵˈ䇗⫼ 6 ៪㗙ᘶ໡⌕⿟





ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 33, џ՟

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

߯ᓎϔϾ 33, 䳔㽕⊼ᛣⱘഄᮍᰃˈ33, ‫ڣ‬ϔϾ (),SURWRFROᅗ᳝᳡ࡵ⿟ᑣ៤ਬ੠˄៪˅䴭


ᗕ᭄᥂DŽ33, 䗮䖛ϔϾ *8,' োੑৡᑊϨ᭄᳝Ͼ՟⿟DŽ՟བˈ60%8633,㛑ᅲ⦄೼ ,&+݊ᅗկᑨ
ଚ䲚៤೼ 6,2៪݊ᅗ‫ܗ‬ӊЁⱘ 680%86᥻ࠊ఼DŽ೒  䯤䗄њ ,QWHOफḹЁ 60%8633,ⱘϔ
Ͼ՟⿟DŽ

೒ ᬃᣕ 33,᳡ࡵ⿟ᑣⱘҷⷕ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀क݁ゴ
䲚៤೼ϔ䍋೎ӊӓⳳ
ϧᆊህᰃϔϾ⢃њҪ䙷Ͼ⣁ᇣ乚ඳ᠔᳝ৃҹ⢃ⱘ䫭䇃ⱘҎDŽ
—Niels Bohr

೼ࠡ䴶ⱘゴ㡖䞠ˈ೎ӊ߱ྟ࣪ⱘϡৠ䰊↉Ꮖ㒣ҟ㒡њDŽ঺໪ˈ䖬ᦣ䗄њ೼ⳂᷛᑇৄϞৃҹ
ᅲ⦄ⱘϔѯ῵ഫ˄㒘ӊ˅ DŽ䖬᳝ˈᕜᯢᰒⱘˈ໻໮᭄ⱘ EFI ೎ӊ᥹ষᑊ≵᳝Ⳉ᥹Ϣ⹀ӊᠧѸ䘧ˈ
প㗠ҷПⱘᰃϢㅵ⧚⹀ӊⱘᑩሖ㒘ӊѸѦDŽӴ㒳Ϟᴹ䇈ˈ೎ӊᓔথϡৃ㛑⾏ᓔ⬉䏃ӓⳳ఼(ICE)
៪㗙⹀ӊ䇗䆩఼㗠䖯㸠ⱘDŽ㗗㰥ࠄ EFI ⱘ೎ӊЁা᳝䴲ᐌᇥⱘ㒘ӊⳈ᥹Ϣ⹀ӊᠧѸ䘧ˈ៥Ӏህৃ
ҹ೼ϔϾᷛ‫ⱘޚ‬᪡԰㋏㒳⦃๗‫ݙ‬ᇍ೎ӊЁⱘ㒱໻໮᭄㒘ӊ䖯㸠ӓⳳᓔথDŽ
೼ EFI ⱘৃᠻ㸠ᅲ՟Ёˈ᳝ϔϾি‫“خ‬NT32”ⳂᷛᑇৄDŽ˄Ⳃᷛᑇৄᰃ EFI 㓪䆥ᯊ‫ⱘ׭‬ϔϾ䗝
乍ˈϔ㠀䛑ৃҹ‫خ‬Ў⣀ゟⱘ flashˈ⚻‫ ࠄݭ‬bios ЁএDŽԚᰃ䖭Ͼ nt32 ϡᰃ⫼ᴹ⚻‫ˈⱘݭ‬㗠ᰃϔ
Ͼӓⳳ఼DŽ˅೼䖭Ͼ⦃๗Ёˈ៥Ӏৃҹᡞ໻໮᭄೎ӊ῵ഫ԰ЎϔϾᑨ⫼⿟ᑣ೼᪡԰㋏㒳Ёᠻ㸠ϔ
ḋᴹ䖤㸠ˈᑊϨৃҹᕜᮍ֓䖯㸠ᓔথ੠䇗䆩Ꮉ԰DŽ໻໮᭄ⱘ೎ӊҷⷕ᳔߱ህᰃ߽⫼䖭Ͼ⦃๗ϟ
ⱘ㓪䆥఼䇗䆩఼೼≵᳝ⳳᅲ⹀ӊⱘᚙ‫މ‬ϟ‫ݭ‬៤ⱘDŽᔧ✊䖭Ͼӓⳳ⦃๗г᳝݊ሔ䰤ᗻˈ↩コ䖬᳝
ϔѯ῵ഫᖙ乏Ϣ⹀ӊѸѦˈ䖭ѯ῵ഫᕜ䲒೼ӓⳳ⦃๗Ёᅲ⦄ˈ៥Ӏ೼ᴀゴⱘৢ䴶Ӯ䖯㸠Ⳍ݇ⱘ
䅼䆎DŽ೒ 16.1 ᰒ⼎ϔϾ೎ӊӓⳳ⦃๗ϟⱘ EFI Shell 䖤㸠೼ᶤϾ᪡԰㋏㒳⦃๗ЁⱘᚙᔶDŽ

೒ 16 1 An Emulation Environment Contained within an Operating System Environment

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㰮ᢳᑇৄ

NT32 ᑇৄϡ䳔㽕ⶹᰧ⹀ӊ㒚㡖ˈ㗠ᰃՓ⫼᪡԰㋏㒳ⱘᑨ⫼⿟ᑣ᥹ষᴹᅲ⦄ᇍ⹀ӊᑇৄⱘᢑ
䈵DŽ೒ 16.2 ᰒ⼎њ䖭ϾᑇৄᰃབԩਃࡼⱘDŽᅗ԰Ўℷᐌਃࡼ䖯⿟ⱘϔ䚼ߚˈ᳔㒜ҹਃࡼᑨ⫼⿟
ᑣⱘᮍᓣਃࡼ೎ӊӓⳳᑇৄDŽᇍ໮᭄ᓔথ㗙ᴹ䇈ˈ߯ᓎ੠ᠻ㸠䖭Ͼ NT32 ӓⳳ⦃๗বᕫ䴲ᐌㅔ
ऩˈϡ䖛ᰃ೼ϔϾᷛ‫⹀ⱘޚ‬ӊᑇৄϞਃࡼϔϾ❳ⶹⱘ᪡԰㋏㒳ˈ✊ৢ䈵߯ᓎ੠ᠻ㸠᱂䗮ⱘᑨ⫼
⿟ᑣϔḋᴹਃࡼ䖭Ͼӓⳳ⦃๗DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 16 2 The Normal Boot Process Launching an Operating System that Will Launch the Emulation
Environment

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 16 3 The Firmware Emulation Environment Itself


೒ 16.3 ᠔⼎ⱘᯊ䯈㸼ᰒ⼎њ᠔ӓⳳⱘ೎ӊ⦃๗ⱘ䖤㸠ᯊᑣˈᅗৃҹࣙᣀ೎ӊ⦃๗ᠻ㸠ⱘ᠔
᳝䰊↉DŽᔧ✊೼ӓⳳ⦃๗ϟϡ䳔㽕䖯㸠⹀ӊ߱ྟ࣪ˈᶤѯ᪡԰াᰃ㹿ӓⳳ㗠ᏆDŽ↨བ‫ݙ‬ᄬⱘ߱
ྟ࣪೼ⳳᅲⱘᑇৄϞᇚ↨ӓⳳ⦃๗ϟ䳔㽕᳈໮ⱘ᪡԰DŽ

ӓⳳ೎ӊⱘ৘Ͼ䰊↉

ӓⳳ⦃๗᳝ҹϟ޴Ͼϡৠⱘ䰊↉
Ўӓⳳ⦃๗ᓎゟ WinNThunkDŽ
䖭Ͼ䰊↉ѻ⫳ϔ⾡ৃ㛑ˈे䗮䖛೎ӊ䚼ߚ㛑⍝ঞࠄϔѯ“⹀ӊ”䚼ߚDŽ䖭ᰃ䗮䖛㘨ড়੠ˈ᪡
԰㋏㒳ᑩሖ api 䇗⫼Ⳍ㘨㋏ⱘৃ㾕ⱘ೎ӊ䚼ߚˈᴹᅲ⦄ⱘDŽ
೒ 16.4 ᦤկњ㢹ᑆϾ೎ӊⱘᵘӊϢ᪡԰㋏㒳ᴀഄ䇗⫼Ⳍ݇㘨ⱘ՟ᄤ↨བ㽕߯ᓎϔϾ᭛ӊˈ
៥Ӏৃҹ߯ᓎϔϾ೎ӊ䇗⫼᥹ষ˄՟བ WinNTCreateFile˅এ䇗⫼᪡԰㋏㒳ⱘৡЎ”CreateFile”
ⱘ㋏㒳䇗⫼DŽϟ䴶ⱘ՟ᄤҷⷕ㾷䞞њབԩᇚ೎ӊ䇗⫼᥹ষ䖲᥹ࠄ Windows ⱘ㋏㒳䇗⫼Ϟˈ㉏
Ԑⱘᴎࠊৃҹ㉏Ԑഄᑨ⫼ࠄӏԩ᪡԰㋏㒳ϞDŽ

typedef struct {
UINT64 Signature;

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

//
// Win32 Process APIs
//
WinNtGetProcAddress GetProcAddress;
WinNtGetTickCount GetTickCount;
WinNtLoadLibraryEx LoadLibraryEx;
WinNtFreeLibrary FreeLibrary;
WinNtSetPriorityClass SetPriorityClass;
WinNtSetThreadPriority SetThreadPriority;
WinNtSleep Sleep;
WinNtSuspendThread SuspendThread;
WinNtGetCurrentThread GetCurrentThread;
WinNtGetCurrentThreadId GetCurrentThreadId;
WinNtGetCurrentProcess GetCurrentProcess;
WinNtCreateThread CreateThread;
WinNtTerminateThread TerminateThread;
WinNtSendMessage SendMessage;
WinNtExitThread ExitThread;
WinNtResumeThread ResumeThread;
WinNtDuplicateHandle DuplicateHandle;

//
// Wint32 Mutex primitive
//
WinNtInitializeCriticalSection InitializeCriticalSection;
WinNtEnterCriticalSection EnterCriticalSection;
WinNtLeaveCriticalSection LeaveCriticalSection;
WinNtDeleteCriticalSection DeleteCriticalSection;
WinNtTlsAlloc TlsAlloc;

WinNtTlsFree TlsFree;
WinNtTlsSetValue TlsSetValue;
WinNtTlsGetValue TlsGetValue;
WinNtCreateSemaphore CreateSemaphore;
WinNtWaitForSingleObject WaitForSingleObject;
WinNtReleaseSemaphore ReleaseSemaphore;

//
// Win32 Console APIs
//
WinNtCreateConsoleScreenBuffer CreateConsoleScreenBuffer;
WinNtFillConsoleOutputAttribute FillConsoleOutputAttribute;
WinNtFillConsoleOutputCharacter FillConsoleOutputCharacter;
WinNtGetConsoleCursorInfo GetConsoleCursorInfo;

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

WinNtGetNumberOfConsoleInputEvents GetNumberOfConsoleInputEvents;
WinNtPeekConsoleInput PeekConsoleInput;
WinNtScrollConsoleScreenBuffer ScrollConsoleScreenBuffer;
WinNtReadConsoleInput ReadConsoleInput;
WinNtSetConsoleActiveScreenBuffer SetConsoleActiveScreenBuffer;
WinNtSetConsoleCursorInfo SetConsoleCursorInfo;
WinNtSetConsoleCursorPosition SetConsoleCursorPosition;
WinNtSetConsoleScreenBufferSize SetConsoleScreenBufferSize;
WinNtSetConsoleTitleW SetConsoleTitleW;
WinNtWriteConsoleInput WriteConsoleInput;
WinNtWriteConsoleOutput WriteConsoleOutput;

//
// Win32 File APIs
//
WinNtCreateFile CreateFile;
WinNtDeviceIoControl DeviceIoControl;
WinNtCreateDirectory CreateDirectory;
WinNtRemoveDirectory RemoveDirectory;
WinNtGetFileAttributes GetFileAttributes;
WinNtSetFileAttributes SetFileAttributes;
WinNtCreateFileMapping CreateFileMapping;
WinNtCloseHandle CloseHandle;
WinNtDeleteFile DeleteFile;
WinNtFindFirstFile FindFirstFile;
WinNtFindNextFile FindNextFile;
WinNtFindClose FindClose;
WinNtFlushFileBuffers FlushFileBuffers;
WinNtGetEnvironmentVariable GetEnvironmentVariable;
WinNtGetLastError GetLastError;
WinNtSetErrorMode SetErrorMode;
WinNtGetStdHandle GetStdHandle;
WinNtMapViewOfFileEx MapViewOfFileEx;
WinNtReadFile ReadFile;
WinNtSetEndOfFile SetEndOfFile;
WinNtSetFilePointer SetFilePointer;
WinNtWriteFile WriteFile;
WinNtGetFileInformationByHandle GetFileInformationByHandle;
WinNtGetDiskFreeSpace GetDiskFreeSpace;
WinNtGetDiskFreeSpaceEx GetDiskFreeSpaceEx;
WinNtMoveFile MoveFile;
WinNtSetFileTime SetFileTime;
WinNtSystemTimeToFileTime SystemTimeToFileTime;

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

//
// Win32 Time APIs
//
WinNtFileTimeToLocalFileTime FileTimeToLocalFileTime;
WinNtFileTimeToSystemTime FileTimeToSystemTime;
WinNtGetSystemTime GetSystemTime;
WinNtSetSystemTime SetSystemTime;
WinNtGetLocalTime GetLocalTime;
WinNtSetLocalTime SetLocalTime;
WinNtGetTimeZoneInformation GetTimeZoneInformation;
WinNtSetTimeZoneInformation SetTimeZoneInformation;
WinNttimeSetEvent timeSetEvent;
WinNttimeKillEvent timeKillEvent;

//
// Win32 Serial APIs
//
WinNtClearCommError ClearCommError;
WinNtEscapeCommFunction EscapeCommFunction;
WinNtGetCommModemStatus GetCommModemStatus;
WinNtGetCommState GetCommState;
WinNtSetCommState SetCommState;
WinNtPurgeComm PurgeComm;
WinNtSetCommTimeouts SetCommTimeouts;

WinNtExitProcess ExitProcess;
WinNtSprintf SPrintf;
WinNtGetDesktopWindow GetDesktopWindow;
WinNtGetForegroundWindow GetForegroundWindow;
WinNtCreateWindowEx CreateWindowEx;
WinNtShowWindow ShowWindow;
WinNtUpdateWindow UpdateWindow;
WinNtDestroyWindow DestroyWindow;
WinNtInvalidateRect InvalidateRect;
WinNtGetWindowDC GetWindowDC;
WinNtGetClientRect GetClientRect;
WinNtAdjustWindowRectAdjustWindowRect;
WinNtSetDIBitsToDevice SetDIBitsToDevice;
WinNtBitBlt BitBlt;
WinNtGetDC GetDC;
WinNtReleaseDC ReleaseDC;
WinNtRegisterClassEx RegisterClassEx;
WinNtUnregisterClass UnregisterClass;

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

WinNtBeginPaintBeginPaint;
WinNtEndPaint EndPaint;
WinNtPostQuitMessage PostQuitMessage;
WinNtDefWindowProc DefWindowProc;
WinNtLoadIcon LoadIcon;
WinNtLoadCursor LoadCursor;
WinNtGetStockObject GetStockObject;
WinNtSetViewportOrgEx SetViewportOrgEx;
WinNtSetWindowOrgEx SetWindowOrgEx;
WinNtMoveWindow MoveWindow;
WinNtGetWindowRect GetWindowRect;
WinNtGetMessage GetMessage;
WinNtTranslateMessage TranslateMessage;
WinNtDispatchMessage DispatchMessage;
WinNtGetProcessHeap GetProcessHeap;
WinNtHeapAllocHeapAlloc;
WinNtHeapFree HeapFree;
} EFI_WIN_NT_THUNK_PROTOCOL;

೒ 16 4 Thunk Protocol that Associates Some Firmware Names with Operating System APIs
˄䆥㗙⊼˖ҹϞAPIेЎ೒16.4ˈ೼ℸᇚ݊䕀ᤶЎ᭛ᄫ˅

Ўӓⳳᑇৄ߯ᓎ⡍ᅮⱘ EFI ⹀ӊ᥹ষ῵ഫ


೼೒ 16.5 Ёˈ៥Ӏᇚ EFI_SERIAL_IO_PROTOCOL ᥹ষϢ᪡԰㋏㒳᠔ᦤկⱘ䇗⫼㘨㋏䍋ᴹDŽ
೼䖭Ͼ՟ᄤЁˈ䖭Ͼ‫݋‬ԧⱘᑇৄߑ᭄ᇚ㹿ᣛ৥῵ᢳ⦃๗DŽ

೒16 5 Establishing an EFI API to Call Platform Specific Operations


ᑇৄⳌ݇ⱘߑ᭄˄՟བӓⳳᑇৄ˅䋳䋷໘⧚Ϟሖᇍ EFI ᥹ষⱘ䇗⫼ˈ✊ৢ䗮䖛ࠡ䴶߯ᓎⱘ
WinNTThunk ᥹ষ䇗⫼Ⳍᑨⱘ᪡԰㋏㒳᥹ষDŽ
೼೒ 16.6 Ё㒭ߎњ೼ϔϾ EFI ᥹ষ໘⧚ߑ᭄Ёৃ㛑ߎ⦄ⱘϔѯ WinNTThunk 䇗⫼DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 16 6 Example Calls to the WinNtThunk Protocol

೒ 16.7 ᰒ⼎њࣙ৿೼᪡԰㋏㒳ǃ೎ӊӓⳳ㒘ӊЁⱘ䕃ӊ䘏䕥ҹঞᅗӀП䯈ⱘѸѦˈ䖭ѯৃ
ҹߚЎϝϾЏ㽕ⱘ䚼ߚ
ᕙᓔথⱘ೎ӊ῵ഫ
෎⸔೎ӊҷⷕ
೎ӊࠄ᪡԰㋏㒳ⱘ䕀ᤶሖҷⷕ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 16 7 Firmware Emulation Software Logic Flow

Ⳉ᥹䆓䯂⹀ӊ
䗮䖛ࠡ䴶ⱘ՟ᄤˈ៥ӀᏆ㒣њ㾷ࠄᑩሖⱘ೎ӊৃҹ߽⫼᪡԰㋏㒳ⱘ䇗⫼DŽϡ䖛ӓⳳ⦃๗ᴀ
䋼Ϟᴹ䇈াᰃ᪡԰㋏㒳ⱘϔϾᑨ⫼⿟ᑣ㗠Ꮖˈᅗ᮴⊩Փ⫼᪡԰㋏㒳ⱘ᠔᳝䇗⫼DŽ໻໮᭄᪡԰㋏
㒳Ў䰆ℶᑨ⫼⿟ᑣⱘ䫭䇃ᇐ㟈ᭈϾ᪡԰㋏㒳ዽ⑗ˈ໻䛑䞛⫼њᇚ⫼᠋ぎ䯈੠‫ݙ‬Ḍぎ䯈ߚ䱨ⱘ䆒
䅵ˈ䖭⾡䆒䅵Փᕫ᪡԰㋏㒳೼Ẕ⌟ࠄ䫭䇃ᯊˈৃҹㅔऩഄᡞߎ䯂乬ⱘ⫼᠋䖯⿟ᴔᥝ㗠ϡᕅડ᪡
԰㋏㒳ⱘ݊ԭ䚼ߚDŽ
៥Ӏৃҹ೼ḋ՟ᅲ⦄ЁᓩܹϔѯᠽሩᴹЎӓⳳ⦃๗ᦤկ᳈ᔎⱘ㛑࡯DŽ↨བৃҹᵘ䗴ϔϾ᪡
԰㋏㒳‫ݙ‬Ḍ偅ࡼᴹ䆓䯂ᶤѯϡ㛑Փ⫼ⱘ㋏㒳ߑ᭄ˈ䖭ḋ‫خ‬Ӯ㒩ᓔϔѯ᪡԰㋏㒳‫ݙ‬ᓎⱘᅝܼᴎࠊˈ
བᵰϡᇣᖗⱘ䆱ৃ㛑Ӯ䗴៤㋏㒳ⱘዽ⑗DŽՓ⫼‫ݙ‬Ḍ偅ࡼⱘӓⳳ⦃๗ৃҹ䗮䖛偅ࡼᴹ㦋প䖤㸠ᑇ
ৄⱘᶤѯ⹀ӊ䌘⑤ˈ‫ݡ‬䗮䖛᥹ষᮍᓣᦤկ㒭Ϟሖ䇗⫼ˈ೼ӓⳳ⦃๗‫ݙ‬㒭Ϟሖᦤկ᳈໮ⱘ⹀ӊ䌘
⑤DŽ
೒ 16.8 ᰒ⼎њ㢹ᑆϾ῵ഫⱘⳌѦ݇㋏

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

೒ 16 8 Software Flow for Hardware Enhanced Firmware Emulation

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

㄀कϗゴ
&RPSDWLELOLW\6XSSRUW0RGXOH &60 
সࠊ䖕ᯧˈ䅽⏵ᮐᮄ
—Alfred Tennyson

FrameworkFramework ᅮНњᮄⱘ೎ӊ(firmware)῵ൟˈᑊᓩ䖯њ䴲ᐌ໮ⱘӬ⚍ˈབᬃ
ᣕ῵ഫ࣪ǃ໮ಶ䯳ᑊ㸠ᓔথˈᵕ໻ഄ㓽ⷁњѻક᥼৥Ꮦഎⱘᯊ䯈DŽԚᰃˈFramework ≵᳝ᅮН
Ӵ㒳 OS 䳔㽕ⱘ᥹ষ(Ӵ㒳ⱘЁᮁ䇗⫼)DŽ⬅Ѣ䖭Ͼॳ಴ˈFramework 㽕ֱ䆕໻䞣 legacy 䕃ӊ
Option ROM ҡ✊㛑ℷᐌᎹ԰‫݋‬᳝ᵕ໻ᣥ៬DŽ
Framework ⱘ䆒䅵䳔㽕⹂ֱ໻䞣 legacy ⿟ᑣ㛑ᑇ⒥⿏ỡ੠䖤㸠DŽlegacy 䕃ӊ䖤㸠䳔㽕
䇗⫼Ӵ㒳 BIOS ᦤկⱘЁᮁ᳡ࡵˈЎњՓ Framework 㛑ᦤկ㉏ԐⱘЁᮁ᳡ࡵˈCSM ᑨ䖤㗠⫳DŽ
CSM ᅠ៤ᇚ EFI ϟ䴶ⱘⳌֵ݇ᙃ䕀ᤶ៤Ӵ㒳 BIOS ϟⱘֵᙃˈᑊᦤկ೼᪡԰㋏㒳ᓩᇐ੠䖤
㸠䖛⿟Ё᠔䳔ⱘӴ㒳 BIOS Ёᮁ᳡ࡵDŽℸ໪ˈCSM 䖬ՓӴ㒳ⱘ Option ROM ৃҹ೼ EFI ⦃๗ϟ
䖤㸠ˈㅔ㿔ПˈCSM Փ EFI ‫݋‬໛њ‫ݐ‬ᆍӴ㒳 BIOS ⱘ㛑࡯DŽ

CSM:Ӵ㒳੠䴽ᮄⱘḹṕ

䅵ㅫᴎѻϮЁϔ乍ᮄᡔᴃⱘᓩ䖯੠᥼ᑓᕔᕔ䛑䳔㽕ϔϾ䖛⏵਼ᳳDŽFramework ⱘᓩܹг䳔
㽕ϔᅮᯊ䯈ˈ៪䆌ᕜⷁˈ៪䆌ᕜ䭓DŽCSM ῵ഫ԰Ў EFI BIOS ੠Ӵ㒳 BIOS П䯈ⱘḹṕˈᰒ㨫㓽
ⷁњ䖭Ͼ䖛⏵ᯊ䯈DŽCSM ῵ഫՓᕫ EFI ϟৃҹ䇗⫼Ӵ㒳 BIOS ⱘ৘⾡Ёᮁ᳡ࡵˈ಴ℸৃҹᓩᇐ
৘⾡Ӵ㒳᪡԰㋏㒳ˈབ DOSˈWindows2000ˈWindows XP ㄝDŽৠḋˈCSM гᬃᣕҢӴ㒳
Option ROM ᥻ࠊϟⱘ䆒໛ᓩᇐ EFI ॳ⫳᪡԰㋏㒳(EFI-aware 0S)DŽCSM ⱘߎ⦄Փᕫ IBV ৃҹ
ᇚӴ㒳 BIOS ੠ EFI BIOS ᮴㓱ᇍ᥹ˈ㗠ϡ䳔㽕϶ᓗӴ㒳 BIOS ϟⱘᕜ໮ࡳ㛑੠៤ᵰDŽ಴ℸˈⳈ᥹
៪䯈᥹ഄˈCSM ೼Ӵ㒳 BIOS ৥ EFI BIOS 䖛⏵䖛⿟Ёᡂⓨⴔ㟇݇䞡㽕ⱘ㾦㡆DŽ
CSM ߽⫼ Framework ᅠ៤⹀ӊᑇৄ߱ྟ࣪ǃ䆒໛ᵮВঞ㋏㒳ਃࡼ䏃ᕘⱘ䗝ᢽDŽEFI Ё⏏
ࡴњ CSM ⱘ㒘ӊüüEFI ‫ݐ‬ᆍ῵ഫ(EfiCompatibility)ˈҹᬃᣕӴ㒳᪡԰㋏㒳੠Ӵ㒳ⱘ Option
ROMsDŽEfiCompatibility ῵ഫǃIBV ᦤկⱘ Compatibility16BIOS ῵ഫǃCompatibility16SMM
῵ഫϔ䍋ᵘ៤њᭈϾ CSMDŽ೼Ӵ㒳 BIOS ৥ EFI BIOS 䕀ব䖛⿟ЁˈᬃᣕӴ㒳 Option ROMs ⱘ
ᯊ䯈Ӯ↨Ӵ㒳 OS ⱘᯊ䯈䭓(ॳ಴ᰃ EFI ॳ⫳ⱘ᪡԰㋏㒳᳝ৃ㛑ӮҢ䖤㸠Ӵ㒳 Option ROM ⱘ䆒
໛Ёᓩᇐ)DŽ⬅Ѣ CSM ᰃ῵ഫ࣪㒘ӊˈབᵰϡ䳔㽕ˈৃҹ䕏ᵒҢᭈϾ EFI Ё⿏䰸DŽ೒ 17.1 ሩ⼎
њ೼ Framework ϟ CSM ῵ഫⱘᎹ԰ॳ⧚˖

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

EFI ᠻ㸠䖛⿟Ёˈ೼ BDS(Boot Device Select)䰊↉Пࠡাᅠ៤ᇥ䚼ߚⱘ㋏㒳߱ྟ࣪੠䜡㕂ˈ


ϡᰒ⼎੠ᠻ㸠 Option ROMDŽা᳝ࠄњ BDS 䰊↉ˈḍ᥂ҹϟϝ⾡ֵᙃ⹂ᅮᰃ৺䳔㽕䇗⫼ CSM
῵ഫ˖
Ƶ Ⳃᷛ᪡԰㋏㒳
Ƶ 䗝ᢽਃࡼⱘ䆒໛
Ƶ 䆒໛ⱘ߱ྟ࣪ㄪ⬹
⬅ѢӴ㒳᪡԰㋏㒳(non-EFI-aware)䳔㽕䇗⫼Ӵ㒳 BIOS ᦤկⱘЁᮁ᳡ࡵDŽ೼ EFI BIOS Ёᖙ
乏䇗⫼ CSM ῵ഫҹᬃᣕӴ㒳᪡԰㋏㒳ҹঞ೼ᓩᇐӴ㒳᪡԰㋏㒳䖛⿟Ё䳔㽕ᠻ㸠ⱘӴ㒳 Option
ROMDŽ
བᵰϔϾ OS ਃࡼ䆒໛ᴀ䑿ձ䌪ѢӴ㒳 Option ROMˈϡㅵⳂᷛ᪡԰㋏㒳ᰃӴ㒳᪡԰㋏㒳
䖬ᰃ EFI ॳ⫳ⱘ᪡԰㋏㒳ˈ 䛑䳔㽕䇗⫼ CSM ῵ഫ(䖭гᰃϞ᭛ЎҔМ䇈Ā೼Ӵ㒳 BIOS ৥ EFI BIOS
䕀ব䖛⿟ЁˈᬃᣕӴ㒳 Option ROMs ⱘᯊ䯈Ӯ↨Ӵ㒳 OS ⱘᯊ䯈䭓āⱘॳ಴)DŽ
བᵰ㋏㒳ⱘਃࡼㄪ⬹ᰃ߱ྟ࣪᠔᳝ⱘ䆒໛ˈা㽕݊Ё᳝ϔϾ䴲ᓩᇐ䆒໛(non-boot device)
⍝ঞࠄӴ㒳 Option ROMˈ䛑ᖙ乏ᠻ㸠 CSM ῵ഫҹᬃᣕ䆹䆒໛DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

CSM ᶊᵘ

CSM ῵ഫՓᕫ EFI BIOS ‫݋‬໛њࡴ䕑ᓩᇐӴ㒳᪡԰㋏㒳੠ᠻ㸠Ӵ㒳 Option ROM ⱘ㛑࡯DŽ


ᅗЏ㽕ࣙᣀҹϟѨϾ㒘ӊ˖
Ƶ EFI ‫ݐ‬ᆍ῵ഫ(EfiCompatibilityˈㅔ⿄ CSM32)

Ƶ Ӵ㒳 BIOS ‫ݐ‬ᆍ῵ഫ (Compatibility16BIOSˈㅔ⿄ CSM16)

Ƶ Ӵ㒳 SMM 偅ࡼ‫ݐ‬ᆍ῵ഫ (Compatibility16SMM)

Ƶ ֱᡸ῵ᓣ/ᅲ῵ᓣߛᤶ῵ഫ (Thunk and ReverseThunk)

Ƶ Ӵ㒳 Option ROM
Ϟ䗄ѨϾ㒘ӊЁˈ䰸Ӵ㒳 Option ROM ৃ㛑⣀ゟѢ EFI firmware П໪ˈ݊ԭ㒘ӊ䛑㹿ࣙ
৿೼ EFI firmware 䞠䴶DŽ
CSM Џ㽕᳝ϸ⾡ᑨ⫼എ᱃˖㄀ϔ⾡ˈᓩᇐӴ㒳 OS˗㄀Ѡ⾡ˈҢ䖤㸠Ӵ㒳 Option ROM ⱘ
䆒໛Ёᓩᇐ EFI ॳ⫳ⱘ OSDŽᓩᇐӴ㒳᪡԰㋏㒳ᰃӴ㒳ⱘᑨ⫼ˈϮ⬠ⱘৃ㛑䍟࢓ᰃᔧӴ㒳 OS 㹿
EFI ॳ⫳ⱘ OS ᳓ҷৢˈҡ䳔㽕ᬃᣕӴ㒳 Option ROMDŽ᳈ᯢ⹂ഄ䇈ˈ䗮䖛Ӵ㒳 Option ROM
ᓩᇐ EFI ॳ⫳ⱘ OS ࡳ㛑ᰃᭈϾӴ㒳 OS ᓩᇐࡳ㛑ⱘᄤ䲚DŽEFI ᶊᵘ‫ߚܙ‬㗗㰥њ䖭Ͼ䖛⏵ࡳ㛑ˈ
ᑊϨབᵰ䳔㽕ˈ‫ܕ‬䆌೼᳾ᴹᇚ݊⿏䰸DŽ

EFI ‫ݐ‬ᆍ῵ഫ(CSM32)

EFI ‫ݐ‬ᆍ῵ഫ䖤㸠೼ 32 ԡֱᡸ῵ᓣϟˈ੠ EFI ᴀ䑿䖯㸠ѸѦˈ䇗⫼ᠻ㸠⬅ CSM16 ᦤկⱘ


16 ԡᅲ῵ᓣϟⱘߑ᭄᥹ষঞӴ㒳 BIOS Ёᮁ᳡ࡵDŽCSM32 ῵ഫ⬅ Framework ᦤկˈЏ㽕ࣙᣀ
ҹϟಯ⾡㉏ൟⱘ EFI 偅ࡼ˖
Ƶ ⹀ӊᑇৄ᮴݇ⱘ偅ࡼ

Ƶ ᑇৄ᮴݇ⱘӴ㒳㒘ӊ偅ࡼˈབӴ㒳ⱘ 8259 ৃ㓪⿟Ёᮁ᥻ࠊ఼偅ࡼ

Ƶ 㢃⠛㒘Ⳍ݇ⱘ偅ࡼˈབ ICH7

Ƶ ⹀ӊᑇৄⳌ݇偅ࡼˈབ PCI Ёᮁ䏃⬅偅ࡼ

Ӵ㒳 BIOS ‫ݐ‬ᆍ῵ഫ(CSM16)

CSM16 ῵ഫ䖤㸠೼ 16 ԡᅲ῵ᓣϟˈᦤկӴ㒳 BIOS Ёᮁ᳡ࡵ䇗⫼DŽЏ㽕⬅ INT13ǃINT19ǃ


INT15 ㄝЁᮁ᳡ࡵ⿟ᑣ㒘៤DŽ䰸Ёᮁ᳡ࡵ⿟ᑣ໪ˈCSM16 䖬ࣙᣀ੠ CSM32 ѸѦⱘ᥹ষ⿟ᑣDŽ
CSM16 ϔ㠀⬅ IBV ᦤկDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ӵ㒳 SMM ‫ݐ‬ᆍ῵ഫ(Compatibility16SMM)

Compatibility16SMM ᦤկӴ㒳ⱘ SMM ᳡ࡵˈ԰Ў EFI SMM 偅ࡼⱘ㸹‫ˈܙ‬ᰃৃ䗝ⱘˈ⬅


IBV ៪ OEM ॖᆊᦤկDŽ

ֱᡸ῵ᓣ/ᅲ῵ᓣߛᤶ῵ഫ (Thunk and ReverseThunk)

䆹῵ഫᦤկњֱᡸ῵ᓣ/ᅲ῵ᓣⳌѦ䕀ᤶⱘ偅ࡼDŽCSM32 䗮䖛 Thunk ⿟ᑣҢ EFI 32 ԡֱᡸ


῵ᓣߛᤶࠄӴ㒳ⱘ 16 ԡᅲ῵ᓣˈCSM16 䗮䖛 ReverseThunk Ң 16 ԡᅲ῵ᓣߛᤶಲ 32 ԡֱᡸ
῵ᓣDŽ䆹῵ഫ⬅ Framework ᦤկDŽ

Ӵ㒳 Option ROM (Legacy Option ROM)

Ӵ㒳 Option ROM 㱑✊ϡ㹿ࣙ৿೼ CSM ῵ഫПЁˈԚҢᭈϾ BIOS ㋏㒳ሖ䴶ᴹⳟˈᅗᰃ


ϔϾ䴲ᐌ䞡㽕ⱘ㒘ӊˈᅗ੠ CSM ῵ഫ㘨ড়Ꮉ԰ˈ݅ৠᅠ៤њӴ㒳 OS ⱘࡴ䕑ᓩᇐDŽ
Option ROM ϔ㠀⬅䆒໛ॖᆊᦤկˈ᳝ϸ⾡ᮍᓣ˖ϔ⾡ᰃ䲚៤ᠧࣙࠄ EFI firmware 䞠䴶ˈ
঺ϔ⾡ᰃᬒ೼ᇍᑨ䆒໛ⱘ ROM 䞠DŽ

EFI ‫ݐ‬ᆍ῵ഫ(CSM32)

CSM32 Џ㽕⬅ҹϟ޴໻ण䆂㒘៤˖

Ƶ Legacy BIOS Protocol

Ƶ Legacy BIOS Platform Protocol

Ƶ Legacy Region Protocol

Ƶ Legacy 8259 Protocol

Ƶ Legacy Interrupt Protocol


Legacy BIOS Protocol ᰃ CSM Ё᳔Џ㽕ⱘण䆂ˈϢ⹀ӊᑇৄ᮴݇DŽLegacy BIOS
Platform Protocol ᰃᑇৄⳌ݇ⱘˈChipset ⳌৠԚ⹀ӊᑇৄϡৠˈ䆹ण䆂‫ݙ‬䚼偅ࡼᅲ⦄Ӯ᳝Ꮒ
ᓖDŽLegacy Region Protocol ᰃ chipset Ⳍ݇ⱘˈ⫼Ѣᇍ‫ݙ‬ᄬऎඳ 0xc0000-0xFFFFF ⱘ䇏‫ݭ‬
᥻ࠊDŽLegacy Region Protocol 䖬ৃҹ䗝ᢽᇍ 0xc0000-0xFFFFF ᶤϔᣛᅮഄഔ↉䖯㸠᥻ࠊˈ
ҹ䰆ℶᇍ݊ҪĀ⏋ᴖāഄഔ↉(aliased address)䗴៤䇃‫ݭ‬DŽLegacy 8259 Protocol ੠⹀ӊᑇ
ৄǃchipset 䛑᮴݇ˈৃҹ೼ 32 ԡֱᡸ῵ᓣ៪㗙 16 ԡᅲ῵ᓣϟᇍ 8259 ৃ㓪⿟Ёᮁ᥻ࠊ఼䖯㸠
᥻ࠊǃᅲ⦄Ёᮁሣ㬑ǃ⬉ᑇ㾺থ៪䖍⊓㾺থᎹ԰῵ᓣ㓪⿟DŽlegacy interrupt Protocol ߭ձ䌪
Ѣ‫݋‬ԧⱘ chipsetˈ⫼ᴹ㒭 PCI 䆒໛ߚ䜡Ёᮁ䏃⬅DŽ
䰸Ϟ䴶ҟ㒡ⱘ޴Ͼण䆂ᦤկⱘࡳ㛑໪ˈEFI ‫ݐ‬ᆍ῵ഫ䖬ࣙᣀ䆌໮῵ᢳӴ㒳Ёᮁ᳡ࡵⱘ偅ࡼˈ
བ UGA 䆒໛Ёᮁ INT10ˈ䬂ⲬЁᮁ INT16 ҹঞഫ䆒໛ⱘ I/0 䆓䯂Ёᮁ᳡ࡵDŽ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ϔѯ Option ROM 䖤㸠ᯊ䳔㽕Փ⫼ INT10ˈ಴ℸ UGA 偅ࡼ䳔㽕䖤㸠೼ VGA ῵ᓣҹᬃᣕ


INT10DŽ䆹偅ࡼᇚ EFI ϟⱘ᥻ࠊৄ䕧ߎ᭄᥂䕀࣪៤ᇍᑨⱘ VGA ḐᓣDŽ䆹偅ࡼ෎Ѣҹϟ‫؛‬䆒˖᠔
᳝ⱘ INT10 Ёᮁ᳡ࡵࡳ㛑䛑Ꮖᅲ⦄ˈгህᰃ䇈 Option ROM ৃҹⳈ᥹䆓䯂 VGA ᠔᳝ᆘᄬ఼ঞ
ᰒᄬDŽUGA 䆒໛ᬃᣕ VGA ῵ᓣᑊϨḍ᥂㽕∖ UGA ੠ VGA ϸ⾡῵ᓣৃҹⳌѦߛᤶDŽ
೼䖯ܹӴ㒳ਃࡼ䏃ᕘ䰊↉Пࠡˈ⬅Ѣ CSM16 ≵᳝䇗⫼ˈϡ㛑໘⧚ USB 䬂ⲬⱘЁᮁ᳡ࡵ䇋
∖ˈ಴ℸ䳔㽕೼ EFI ϟ῵ᢳ INT16 Ёᮁ᳡ࡵDŽᇚ INT16 Ёᮁ᳡ࡵ䕀ᤶ៤ EFI ᳡ࡵˈ᥹ᬊ᭄᥂ৢҹ
INT16 ⱘḐᓣ䖨ಲDŽ
೼ EFI 䰊↉䖬䳔㽕 block I/O 偅ࡼˈҹ֓ᇍ䕃Ⲭǃ⹀Ⲭㄝ BAID(BIOS Aware IPL Device)
䆒໛䖯㸠 I/O 䇏‫ݭ‬䆓䯂DŽ䆹偅ࡼᇚ EFI ϟⱘഫ䆒໛ⱘ I/O 䇏‫ݭ‬䇋∖䕀ᤶ៤Ӵ㒳 BIOS ϟ INT13 䇋
∖ˈᑊᇚ㒧ᵰ䖨ಲࠄ EFI ⦃๗DŽℸ໪ˈᇍѢ⬅Ӵ㒳 Option ROM ᥻ࠊⱘ䆒໛ˈབ SCSI Option ROM
᥻ࠊⱘ SCSI 䆒໛ˈ䳔㽕ϔϾ⣀ゟⱘ Block I/O 䇏‫ݭ‬偅ࡼDŽ

Legacy Bios Driver

Legacy Bios Driver ᰃᭈϾ CSM ⱘЏ῵ഫˈ݊ԭ䛑ᰃ䜡༫ᬃᣕ῵ഫDŽLegacy Bios Driver


ⱘЏ㽕ࡳ㛑ࣙᣀ˖
Ƶ ߱ྟ࣪ᅗᴀ䑿ঞࡴ䕑 CSM16 ῵ഫ

Ƶ ⹂ᅮਃࡼ䆒໛

Ƶ ࡴ䕑 CSM32 Ёⱘ݊Ҫ偅ࡼ⿟ᑣ

Ƶ ࡴ䕑ֱᡸ῵ᓣ/ᅲ῵ᓣߛᤶ῵ഫ

Ƶ ߱ྟ࣪੠ CSM16 ѸѦⱘ᥹ষ

Ƶ ᇏᡒǃࡴ䕑ঞ䇗⫼ᵓ䕑/䴲ᵓ䕑ⱘ Option ROM

Ƶ ࡴ䕑ᓩᇐ OS
Legacy BIOS Driver ߚᵤᔧࠡ㋏㒳ⱘ᭄᥂ˈ䇗⫼ EFI ᦤկⱘ APIs ᬊ䲚 CSM16 ᠔䳔ⱘ
㋏㒳ֵᙃˈᑊᇚ䖭ѯֵᙃ䕀࣪៤ CSM16 ⱘ᭄᥂㒧ᵘDŽCSM16 ߽⫼䖭ѯ᭄᥂㒧ᵘ߱ྟ࣪ԡѢ㋏
㒳‫ݙ‬ᄬ 0x400-0x500 ⱘӴ㒳 BIOS ᭄᥂ऎ(BDA)ǃᠽሩ BIOS ᭄᥂ऎ(EBDA)੠ CMOSDŽ
Legacy BIOS Protocol 䖬ӮՓ⫼䖭ѯ᭄᥂ᴹ䞡䆒䙷ѯӴ㒳䆒໛ⱘ䌘⑤DŽ.
EFI ᇍ⹀ӊ䆒໛ⱘᵮВǃ䜡㕂ᰃ↨䕗ㅔऩǃԢ㑻ⱘˈϡᇍ䇌བІ㸠ষ៪ᑊ㸠ষㄝӴ㒳䆒໛
ߚ䜡Ёᮁߚ䜡DŽԚ CSM16 㽕∖䖭ѯӴ㒳䆒໛‫݋‬᳝ℷ⹂ⱘЁᮁˈ಴ℸ Legacy BIOS Driver 䳔
㽕ᇍ䖭ѯӴ㒳䆒໛䖯㸠䞡ᮄ䜡㕂ҹ⒵䎇䖭Ͼ㽕∖DŽLegacy BIOS Driver ᳝ϸ⾡ᅲ⦄䗝ᢽ˖ㅔ
ऩ⠜੠ᅠܼ⠜DŽᇍѢ䙷ѯ䗮䖛Ӵ㒳 Option ROM ᓩᇐ EFI ॳ⫳᪡԰㋏㒳ⱘᑨ⫼ˈৃҹ䗝ᢽㅔऩ
⠜DŽ㗠ᇍѢ䳔㽕ᓩᇐӴ㒳᪡԰㋏㒳ⱘᑨ⫼ˈ߭䗝ᢽᅠܼ⠜DŽ

Legacy BIOS Protocol

Legacy BIOS Protocol ੠ Legacy BIOS Driver ⱘ߱ྟ࣪⿟ᑣᵘ៤њᭈϾ CSM ⱘ෎⸔DŽ


Legacy BIOS Protocol ⬅ҹϟϔ㋏߫ߑ᭄㒘៤˖
BootUnconventionalDevice()ߑ᭄⫼ѢҢ䴲Ӵ㒳䆒໛ᓩᇐ㋏㒳ˈབ PARTIESDŽ
CheckPciRom()ߑ᭄⫼ѢẔᶹ PCI 䆒໛Ёᰃ৺᳝Ӵ㒳 Option ROMˈҹঞẔᶹ䆹䆒໛ᰃ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

৺া᳝Ӵ㒳 Option ROM 㗠≵᳝ EFI Option ROMDŽℸ໪ˈ䖬ӮẔᶹӴ㒳᪡԰㋏㒳ਃࡼ䆒໛᳝


ᬜᗻDŽ
CopyLegacyRegion()ߑ᭄⫼Ѣ EFI ϟᣋ䋱᭄᥂ࠄߑ᭄ GetLegacyRegion()ᣛᅮⱘऎ
ඳDŽ
FarCall86()Փ 32 ԡֱᡸ῵ᓣϟⱘ⿟ᑣՓ⫼䭓䇗ᴹ䇗⫼ 16 ԡᅲ῵ᓣϟⱘ⿟ᑣDŽ䆹ߑ᭄䗮
䖛䇗⫼ Thunk ⿟ᑣߛᤶࠄ 16 ԡᅲ῵ᓣˈᇚ䕧ܹখ᭄ᣛᅮⱘ᭄᥂ऎ䕑ܹ CPU ᆘᄬ఼ˈ✊ৢՓ
⫼䭓䇗DŽ䭓䇗⫼䖨ಲৢˈՓ⫼ CPU ᆘᄬ఼ⱘؐ᳈ᮄ᭄᥂ऎˈᑊߛᤶಲ 32 ԡֱᡸ῵ᓣDŽ
GetBbsInfo()‫ܕ‬䆌໪䚼偅ࡼ䆓䯂 CSM32 Ёⱘ BBS ᭄᥂㒧ᵘDŽ䆹ߑ᭄Џ㽕㹿 BIOS setup
⿟ᑣ䇗⫼DŽ
GetLeagcyRegion()‫ܕ‬䆌೼‫ݙ‬ᄬऎඳ 0xe0000-0xFFFFF ഄഔ↉ߚ䜡‫ݙ‬ᄬDŽ
Int86()Փ 32 ԡֱᡸ῵ᓣ⿟ᑣ䇗⫼ 16 ԡ䕃Ёᮁ⿟ᑣˈ↨བ INT 16DŽ䆹ߑ᭄䗮䖛䇗⫼
Thunk ⿟ᑣߛᤶࠄ 16 ԡᅲ῵ᓣˈᇚ䕧ܹখ᭄ᣛᅮⱘ᭄᥂ऎ䕑ܹ CPU ᆘᄬ఼ˈ✊ৢᠻ㸠Ⳍᑨⱘ
䕃Ёᮁ⿟ᑣDŽЁᮁ⿟ᑣ䖨ಲৢˈՓ⫼ CPU ᆘᄬ఼ⱘؐ᳈ᮄ᭄᥂ऎˈᑊߛᤶಲ 32 ԡֱᡸ῵ᓣDŽ
InstallPciRom() ߑ ᭄ ⱘ ࡳ 㛑 ᰃ ᇚ Ӵ 㒳 Option ROM 㺙 䕑 ࠄ ‫ ݙ‬ᄬ ऎ ඳ
0xc0000-0xFFFFFDŽ
LegacyBoot()⫼ᴹᓩᇐӴ㒳 OSˈᅲ⦄њ CSM ⱘ໻䚼ߚЏ㽕ࡳ㛑ˈ⬅ѢᓩᇐӴ㒳 OS ⱘ
ϔѯ㽕∖ˈᠻ㸠䆹ߑ᭄ৃ㛑Ӯ݇䯁 EFI Ⳍ݇ࡳ㛑DŽ䆹ߑ᳔᭄㒜䇗⫼ CSM16 ῵ഫҹᠻ㸠Ӵ㒳
INT19 Ёᮁ᳡ࡵˈབᵰҢ䗝ᅮⱘ䆒໛ਃࡼ᪡԰㋏㒳༅䋹ˈCSM16 Ӯᇚ᥻ࠊᴗ䖨ಲ㒭䆹ߑ᭄ˈ
䖭⾡ᚙ‫މ‬ϟˈབᵰॳᴹⱘ EFI ⦃๗ᰃֱ⬭ⱘˈ៪㗙೼ EFI ਃࡼ੠Ӵ㒳ਃࡼᮍᓣⳌѦߛᤶᯊ EFI
⦃๗ৃҹ㹿ᘶ໡ˈ߭ߑ᭄ LegacyBoot()Ӯᇚ᥻ࠊᴗ䖨ಲ㒭䇗⫼㗙DŽ
PrepareToBootEfi()ߑ᭄Џ㽕ᅠ៤ EFI ॳ⫳᪡԰㋏㒳ⱘᓩᇐ⦃๗‫ޚ‬໛DŽᠻ㸠ࣙᣀ㒭Ӵ㒳ᓩ
ᇐ䆒໛ߚ䜡偅ࡼো೼‫ ⱘݙ‬LegacyBoot()ߑ᭄ⱘ䚼ߚࡳ㛑DŽ
ShadowAllLegacyOproms()ߑ᭄ࡴ䕑䖤㸠᠔᳝Ӵ㒳 Option ROMsˈ䖤㸠 Option Rom
ПࠡӮौ䕑䆒໛ॳ᳝ⱘ EFI 偅ࡼˈ಴ℸˈབᵰ䳔㽕ˈᠻ㸠ᅠ䆹ߑ᭄ৢᖙ乏䞡ᮄ䖲᥹ EFI 偅ࡼࠄ
䆒໛ϞDŽ
UpdateKeyboardLedStatus()ߑ᭄⫼ᴹᡞ EFI ϟⱘ䬂Ⲭ LED ⢊ᗕֵᙃৠℹࠄӴ㒳 BIOS
᭄᥂ऎDŽ䆹ߑ᭄ϡᇍ䬂Ⲭ䖯㸠᪡԰ˈ㗠䇗⫼ CSM16 Ё⍝ঞ䬂Ⲭ LED ⢊ᗕⱘߑ᭄ᴹ㓈ᡸ䬂Ⲭ♃
ⱘ⢊ᗕֵᙃDŽ

Legacy BIOS Platform Protocol

Legacy BIOS Platform Protocol ৃҹḍ᥂⹀ӊᑇৄⱘ‫݋‬ԧ䜡㕂ঞ OEM 㽕∖ᇍ CSM 䖯


㸠ᅶ᠋࣪ᅮࠊˈ݊Ёࣙ৿њ໮Ͼߑ᭄ҹᬃᣕᇍ CSM 䖯㸠ᅶ᠋ᅮࠊDŽ
GetPlatformHandle()᧰㋶ᣛᅮᅲԧⱘ᠔᳝হᶘ(handles)ˈᑊ䖨ಲᣝ✻Ӭ‫ܜ‬㑻ߚ㉏ⱘ⡍
ᅮ㉏ൟⱘহᶘ䯳߫DŽϡৠ㉏ൟⱘহᶘࣙᣀ VGA 䆒໛হᶘǃIDE ᥻ࠊ఼হᶘǃISA ᘏ㒓᥻ࠊ఼হ
ᶘҹঞ USB 䆒໛হᶘㄝDŽ
GetPlatfromInfo()ߑ᭄⫼ᴹ㦋পᑇৄ⡍ᅮⱘѠ䖯ࠊⳂᷛ᭛ӊ៪᭄᥂ˈࣙᣀ MP tableˈ
OEM ⡍ᅮⱘ 16 ԡ៪ 32 ԡⱘ᯴‫ڣ‬᭛ӊǃTPM Ѡ䖯ࠊ᭛ӊㄝDŽ
GetRoutingTable()ߑ᭄ЎЁᮁ䏃⬅㸼㦋পᑇৄⳌ݇ⱘ PCI Ёᮁ䏃⬅ֵᙃDŽ
PlatformHooks()ߑ᭄ᠻ㸠ᑇৄⳌ݇ⱘϔѯࡼ԰ˈབᅠ៤ᠿᦣ Option ROM Пࠡⱘϔѯ⡍
⅞໘⧚ˈ᯴ᇘ⠽⧚䆒໛᮴݇ⱘ Option ROM(PXE 偅ࡼঞ BIS)ˈҹঞ Option ROM ߱ྟ࣪ৢ
ⱘϔѯ໘⧚ㄝDŽ
PrepareToBoot()ߑ᭄ᅠ៤Ӵ㒳᪡԰㋏㒳ⱘᓩᇐDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

SmmInit()ߑ᭄Ẕᶹ EFI ೎ӊो(firmware volumes)Ёᰃ৺᳝ 16 ԡ῵ᓣϟⱘ SMM 偅


ࡼ῵ഫ(Compatibility16SMM)DŽབᵰᡒࠄˈՓ⫼ EFI SMM 偅ࡼ⊼‫ ݠ‬CSM16 SMM ῵ഫDŽ೼
EFI ೎ӊोЁৃ㛑ᄬ೼໮Ͼ 16 ԡ SMM 偅ࡼ῵ഫˈ៪ᅠܼ≵᳝DŽ
TranslatePirq()ߑ᭄ᇚЁᮁ㒓ֵᙃ‫ࠄݭ‬ᇍᑨⱘ㢃⠛㒘Ёᮁ䏃⬅ᆘᄬ఼Ёˈৠᯊ䖨ಲᣛᅮ䆒
໛ৃ⫼ⱘЁᮁোDŽ

Legacy Region Protocol

Legacy Region Protocol ᰃ㢃⠛㒘Ⳍ݇ⱘˈ⫼ᴹᇍ‫ݙ‬ᄬऎඳ 0xc0000-0xFFFFF 䖯㸠䇏


‫ࠊ᥻ݭ‬DŽ
Decode()ߑ᭄ᅠ៤ᇍ㢃⠛㒘ⱘ߱ྟ࣪ˈՓ㛑៪⽕ℶᇍ䆹‫ݙ‬ᄬऎඳⱘ㾷ⷕDŽ
Lock()ߑ᭄ᇚᣛᅮऎඳ䆒Ўা䇏(‫ֱݭ‬ᡸ)
BootLock()ߑ᭄೼ᓩᇐӴ㒳 OS Пࠡ䇗⫼ˈ䆹ߑ᭄ᇚᣛᅮऎඳ䆒Ў‫ֱݭ‬ᡸҹ䰆ℶ䇃᪡԰݊
ҪĀ⏋ᴖāഄഔ↉(aliased adress)
Unlock()ߑ᭄ᇚᣛᅮ‫ݙ‬ᄬऎ䆒Ўৃ䇏ৃ‫ݭ‬,ৠᯊৃҹ䰆ℶ䇃᪡԰݊ҪĀ⏋ᴖāഄഔ↉
(aliased adress)

Legacy 8259 Protocol

䆹ण䆂੠‫݋‬ԧ chipset ᮴݇ˈ೼ 32 ԡֱᡸ῵ᓣঞ 16 ԡᅲ῵ᓣϟᅠ៤ᇍ 8259 ৃ㓪⿟᥻ࠊ


఼ⱘ᥻ࠊDŽ⬅ҹϟߑ᭄㒘៤˖
SetVectorBase()ߑ᭄߱ྟ࣪ЏǃҢ 8259 ৃ㓪⿟Ёᮁ᥻ࠊ఼ⱘЁᮁ৥䞣෎ഔDŽ೼ EFI ⦃
๗ϟˈЏ 8259 ᥻ࠊ఼ⱘЁᮁ৥䞣෎ഔ䆒Ў 0x1A0(INT68),Ң 8259 ᥻ࠊ఼ⱘЁᮁ৥䞣෎ഔ
䆒Ў 0x1C0(INT70)DŽ೼ 16 ԡᅲ῵ᓣϟˈЏ 8259 ᥻ࠊ఼ⱘЁᮁ৥䞣෎ഔ䆒Ў 0x20(INT08)ˈ
Ң 8259 ᥻ࠊ఼ⱘЁᮁ৥䞣෎ഔ䆒Ў 0x1C0(INT70)DŽ32 ԡֱᡸ῵ᓣϟЏ 8259 ᥻ࠊ఼ⱘЁ
ᮁ৥䞣෎ഔ䆒Ўϡৠৃҹ䰆ℶЁᮁ੠ CPU ᓖᐌ㹿㽚ⲪDŽ
GetMask()ߑ᭄⫼ᴹ㦋প EFI ⦃๗ϟ៪ 16 ԡᅲ῵ᓣϟᔧࠡЏ/Ң 8259 ᥻ࠊ఼ⱘЁᮁሣ㬑
ֵᙃঞЁᮁ㾺থᮍᓣ(䖍⊓㾺থ䖬ᰃ⬉ᑇ㾺থ)
SetMask()ߑ᭄ᅠ៤೼ 32 ԡ EFI ⦃๗ϟ៪ 16 ԡӴ㒳⦃๗ϟ䆒㕂Џ/Ң 8259 ᥻ࠊ఼ⱘЁ
ᮁሣ㬑ֵᙃঞЁᮁ㾺থᮍᓣDŽ
SetMode()ߑ᭄ᅠ៤೼ 32 ԡ EFI ⦃๗ϟ៪ 16 ԡӴ㒳⦃๗ϟ䆒㕂Џ/Ң 8259 ᥻ࠊ఼ⱘЁ
ᮁሣ㬑ֵᙃঞЁᮁ㾺থᮍᓣDŽGetVector()ߑ᭄ᅠ៤ᇚᶤϔ⹀Ёᮁো䕀ᤶ៤ᇍᑨⱘ䕃Ёᮁোˈ
བˈ೼ EFI ϟᇚ IRQ0 䕀ᤶ៤ INT68DŽ
EnableIrq()ߑ᭄೼ EFI ϟՓ㛑ᶤϔϾ⹀Ёᮁˈ䴲 CSM 偅ࡼৃҹ䇗⫼DŽ
DisableIrq()ߑ᭄೼ EFI ϟሣ㬑ᶤϔϾ⹀Ёᮁˈ䴲 CSM 偅ࡼৃҹ䇗⫼DŽ
GetInterruptLine()ߑ᭄䇏পᣛᅮ PCI 䆒໛ⱘ䜡㕂ぎ䯈ᑊ䖨ಲߚ䜡㒭䆹䆒໛ⱘЁᮁোDŽ
EndOfInterrupt()ߑ᭄ϟথЁᮁ㒧ᴳ(EOI)ੑҸ㒭Ёᮁ᥻ࠊ఼DŽ

Legacy Interrup Protocol

The Legacy Interrupt Protocol ण䆂੠‫݋‬ԧ chipset Ⳍ݇ˈ⫼ҹᇍ PCI Ёᮁⱘ㓪⿟᥻ࠊDŽ


GetNumberPirqs()ߑ᭄䖨ಲ chipset ᬃᣕⱘ᠔᳝ PCI Ёᮁ㒓োϾ᭄DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

GetLocation()ߑ᭄䖨ಲᬃᣕ䆹ण䆂ⱘ PCI 䆒໛ⱘԡ㕂DŽ


ReadPirq()ߑ᭄䇏পᣛᅮ PIRQ˄PCI Ёᮁ㒓˅ᆘᄬ఼ᑊ䖨ಲ䆹ᆘᄬ఼ⱘؐDŽ
WritePirq()ߑ᭄฿‫ݭ‬᭄᥂ࠄᣛᅮⱘ PIRQ ᆘᄬ఼DŽ

CSM16

CSM16 ῵ഫৃҹⳟ៤ᰃϔϾ≵᳝ᓔᴎ㞾Ẕ˄POST: Power On Self Test˅੠ Setup 䜡


㕂⬠䴶ⱘӴ㒳 BIOSDŽCSM16 ῵ഫ䆒䅵ⳂⱘᰃᏠᳯՓ CSM16 ῵ഫ䗮⫼Ϣ᠔᳝ᑇৄˈгህᰃৠ
ḋⱘ CSM16 ῵ഫৃҹ⫼ѢḠ䴶⬉㛥ǃ᳡ࡵ఼੠⿏ࡼ⬉㛥DŽ಴ℸˈCSM16 ᰃ⣀ゟѢḹ⠛੠ᑇৄ
ⱘDŽCSM16 ῵ഫϡӮ䜡㕂ӏԩᑩሖ⹀ӊˈ✊㗠ᅗৃҹ䗮䖛Ӵ㒳 BIOS ⱘ᥹ষᴹ᥻ࠊϔѯӴ㒳
⹀ ӊ ˈ ↨ བ ᑊ ষ ǃ І ষ ǃ 䬂 Ⲭ ǃ PS2 哴 ᷛ ㄝ DŽ ḹ ⠛ ⱘ 䜡 㕂 ᰃ ⬅ EFI ៪ EFI ‫ ݐ‬ᆍ ῵ ഫ
˄EfiCompatibility module˅ᅠ៤DŽϢḹ⠛੠ᑇৄ᮴݇ⱘ䆒䅵Փ CSM16 ῵ഫᕫҹሑৃ㛑໮
ⱘ䞡⫼ˈሑৃ㛑ᇥⱘ㓈ᡸDŽ
CSM16 ῵ഫࣙ৿ܼ䚼ⱘ runtime ᳡ࡵ੠Ӵ㒳 BIOS 䳔㽕ⱘ䕃Ёᮁ੠⹀Ёᮁ᳡ࡵ⿟ᑣDŽ῵
ഫ䖬ᖙ乏ᬃᣕϢӴ㒳 BIOS ‫ݐ‬ᆍⱘ BIOS ᭄᥂ऎ ˄BDA: BIOS Data Area˅ǃᠽሩ᭄᥂ऎ ˄EBDA:
Extend BDA˅ҹঞϔѯЁᮁ᳡ࡵ೼ F000 ‫ݙ‬ᄬ↉ⱘ೎ᅮⱘܹষഄഔDŽℸ໪ˈ䖬ᦤկϔѯ⫼Ѣ
EFI ੠ CSM16 П䯈ѦⳌ䗮䆃ⱘ 16 ԡ⿟ᑣDŽ㸼 17.1 ߫Вњ CSM16 ῵ഫᦤկⱘӴ㒳Ёᮁ᳡ࡵ
⿟ᑣDŽ

㸼 17.1ȱCSM16 ῵ഫᦤկⱘӴ㒳Ёᮁ᳡ࡵ⿟ᑣȱ
Ёᮁ ᦣ䗄
0x02 NMI ϡৃሣ㬑Ёᮁ
0x05 ሣᐩᠧॄ
0x08 ㋏㒳ᯊ䩳Ёᮁ˄IRQ0˅
0x09 䬂ⲬЁᮁ˄IRQ1˅
0x10 ᰒव˄ᰒ⼎˅᳡ࡵ
0x11 䆒໛Ẕ⌟
0x12 ෎ᴀ‫ݙ‬ᄬ໻ᇣẔ⌟
0x13 ⺕ⲬЁᮁ᳡ࡵ˄䕃Ⲭǃ⹀Ⲭǃ‫ܝ‬偅ǃU Ⲭㄝ˅
0x14 Іষ䗮䆃᳡ࡵ
0x15 ㋏㒳᳡ࡵ
0x16 䬂Ⲭ᳡ࡵ
0x17 ᑊষᠧॄᴎ᳡ࡵ
0x18 ㋏㒳ਃࡼㅵ⧚᳡ࡵ
0x19 ㋏㒳ᓩᇐ⿟ᑣ᳡ࡵ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

0x1A ㋏㒳ᯊ䯈᳡ࡵ
0x1B ⿟ᑣЁᮁ᳡ࡵˈㄝᬜѢᣝϟ Ctrl+Break
0x1C ᅮᯊ఼᳡ࡵ
0x1D ᰒ⼎খ᭄
0x1E 䕃偅᥻ࠊখ᭄
0x1F ᄫヺⶽ䰉
0x40 䕃Ⲭ᳡ࡵ
0x41 Џ⹀Ⲭ᥻ࠊ఼খ᭄
0x46 Ң⹀Ⲭ᥻ࠊ఼খ᭄
0x70 RTC Ёᮁ˄IRQ8˅
0x74 PS2 哴ᷛЁᮁ˄IRQ12˅
0x75 ᭄ᄫण໘⧚఼Ёᮁ˄IRQ13˅
0x76 Џ IDE ⹀Ⲭ᥻ࠊ఼Ёᮁ˄IRQ14˅
0x77 Ң IDE ⹀Ⲭ᥻ࠊ఼Ёᮁ˄IRQ15˅

CSM32 Ϣ CSM16 П䯈ⱘѸѦ

CSM32 Ϣ CSM16 ⱘ Ѹ Ѧ 䗮 䖛 ϝ Ͼ ᴎ ࠊ ᴹ ᅠ ៤ ˖ Compatibility16Table ǃ


Compatibility16 ߑ᭄᥹ষǃCompatibility16 ᭄᥂㒧ᵘDŽ೒ 17.2 ᦣ䗄њ CSM32 Ϣ CSM16
П䯈ⱘѸѦᴎࠊDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

CSM16Table

Compatibility16 Table ᰃ CSM16 ῵ഫЁ䴲ᐌ䞡㽕ⱘ䚼ߚˈ偏⬭೼ 0xE0000~0xFFFFF


䖭↉‫ݙ‬ᄬЁ 16 ᄫ㡖ᇍ唤ⱘᶤϾԡ㕂DŽ䖭Ͼ㸼Ёࣙ৿ϔѯ CSM16 ῵ഫ೼߯ᓎᯊ⫳៤ⱘ䴭ᗕֵ
ᙃDŽгࣙ৿ϔѯࡼᗕ᭄᥂ˈ⬅ EFI ੠ CSM16 ῵ഫ೼䖤㸠ᯊ฿‫ݭ‬DŽ೼ CSM16 ߯ᓎᯊˈӮᓎゟ
ϔϾ㔎ⳕⱘ㸼DŽ㸼༈ᰃϔϾᷛ䆚ᄫヺІĀ$EFIāˈᬙজ⿄ℸ㸼ЎĀ$EFIā㸼DŽ㸼Ё᳔䞡㽕ⱘϸ
Ͼ᭄᥂ᰃ Compatibility16CallSegment ੠ Compatibility16CallOffsetˈ䖭ϸϾ᭄᥂ߚ߿
ᰃ CSM16 ῵ഫЁ Compatibility16 ࡳ㛑ߑ᭄ܹষഄഔⱘ↉ഄഔ੠‫⿏أ‬ഄഔDŽEfiCompatibility
䗮 䖛 Legacy BIOS ण 䆂 Ё ⱘ FarCall86() ߑ ᭄ 䗮 䖛 thunk 䖰 䇗 䖭 Ͼ ܹ ষ ᴹ 䖒 ࠄ 䇗 ⫼
Compatibility16 ࡳ㛑DŽ೼ϔϾ‫݋‬ԧⱘ CSM 䆒䅵ᅲ⦄Ё Compatibility16 㸼ⱘḐᓣ⿄Ў
EFI_COMPATIBILITY16_TABLEDŽCSM16 ⱘ䆒䅵‫ܕ‬䆌๲ࡴ㸼乍ҹ⒵䎇᳾ᴹⱘ䳔∖ˈԚᰃϡ
‫ܕ‬䆌ߴ䰸ӏԩ⦄᳝ⱘ㸼乍DŽ㸼 17.2 ᦣ䗄њ EFI_COMPATIBILITY16_TABLE Ё৘㸼乍ⱘ৿НDŽ

㸼 17.1ȱCSM16 ῵ഫᦤկⱘӴ㒳Ёᮁ᳡ࡵ⿟ᑣȱ
㸼乍 ‫⿏أ‬ ᦣ䗄
Signature 0x00 Ā$EFIā㸼ᯢᰃ㸼ⱘᓔྟDŽ
⊼ᛣᄫヺⱘᄬᬒ乎ᑣˈ㄀ 0 Ͼᄫ㡖ᰃ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ĀIā
ˈ㄀ 3 Ͼᄫ㡖ᰃĀ$ā
TableChecksum 0x04 㸼ⱘẔ偠ؐDŽᭈϾ㸼ⱘ↣Ͼᄫ㡖ⱘ᭄᥂
㌃ࡴ੠ᰃ 0ˈ㸼ⱘ䭓ᑺ೼ TableLength
ЁᣛᅮDŽ
TableLength 0x5 㸼ⱘ䭓ᑺˈҹᄫ㡖ऩԡDŽ
EFIMajorRevision 0x06 EFI Џ⠜ᴀো
EFIMinorRevision 0x07 EFI ⃵⠜ᴀো
TableMajorRevision 0x08 ᴀ㸼Џ⠜ᴀো
TableMinorRevision 0x09 ᴀ㸼⃵⠜ᴀো
Reserved 0x0A ֱ⬭ԡ
Compatibility16CallSegment 0x0C CSM16 ࡳ㛑᥹ষⱘܹষഄഔⱘ↉ഄഔ
Compatibility16CallOffset 0x0E CSM16 ࡳ㛑᥹ষⱘܹষഄഔⱘ‫⿏أ‬ഄ

PnPInstallationCheckSegmen 0x10 Pnp 㒧ᵘⱘ↉ഄഔ
t
PnPInstallationCheckOffset 0x12 Pnp 㒧ᵘⱘ‫⿏أ‬ഄഔ
EFISystemTable 0x14 EFI ㋏㒳䌘⑤㸼ⱘ 32 ԡ⠽⧚ഄഔ
OemIdStringPointer 0x18 OEM ID ᄫヺІⱘ 32 ԡ⠽⧚ഄഔ
AcpiRsdPtrPointer 0x1C ACPI RSD PTR ⱘ 32 ԡഄഔDŽACPI 㸼
ⱘᅲ䰙᭄᥂ձᮻ೼ EFI Ёॳ᳝ԡ㕂DŽ
OemRevision 0x20 ⫼Ѣ OEM 㞾ᅮН
E820Pointer 0x22 INT15 E820 ᭄᥂ⱘᄬᬒഄഔˈ
EFICompatibility 䋳䋷฿‫݋ݭ‬ԧⱘ᭄
᥂DŽ
E820Length 0x26 EFICompatibility ฿‫ ⱘݭ‬E820 ᭄᥂䭓
ᑺDŽ
IrqRoutingTablePointer 0x2A PCI Ёᮁ䏃⬅㸼ⱘ 32 ԡഄഔˈ
EFICompatibility 䋳䋷฿‫݋ݭ‬ԧⱘ᭄
᥂DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

IrqRoutingTableLength 0x2E PCI Ёᮁ䏃⬅㸼䭓ᑺˈ


EFICompatibility 䋳䋷฿‫ݭ‬DŽ
MpTablePtr 0x32 ᬃᣕ໮໘⧚఼ⱘ MP table 㸼 32 ԡഄ
ഔˈEFICompatibility 䋳䋷฿‫݋ݭ‬ԧⱘ
᭄᥂DŽ
MpTableLength 0x36 MP table 㸼䭓ᑺˈEFICompatibility
䋳䋷฿‫ݭ‬DŽ
OemIntSegment 0x3A OEM 㞾ᅮНⱘЁᮁ᳡ࡵ៪㸼ܹষⱘ↉
ഄഔ
OemIntOffset 0x3C OEM 㞾ᅮНⱘЁᮁ᳡ࡵ៪㸼ܹষⱘ‫أ‬
⿏ഄഔ.
Oem32Segment 0x3E OEM 㞾ᅮНⱘ 32 ԡ᳡ࡵ៪㸼ܹষⱘ
↉ഄഔ
Oem32Offset 0x40 OEM 㞾ᅮНⱘ 32 ԡ᳡ࡵ៪㸼ܹষⱘ
‫⿏أ‬ഄഔ.
Oem16Segment 0x42 OEM 㞾ᅮНⱘ 16 ԡ᳡ࡵ៪㸼ܹষⱘ
↉ഄഔ
Oem16Offset 0x44 OEM 㞾ᅮНⱘ 16 ԡ᳡ࡵ៪㸼ܹষⱘ
‫⿏أ‬ഄഔ.
TpmSegment 0x46 TPM ῵ഫⱘ↉ഄഔ
TpmOffset 0x48 TPM ῵ഫⱘ‫⿏أ‬ഄഔ
IbvPointer 0x4A BIOS ॖଚ ID ᄫヺІഄഔDŽ
PciExpressBase 0x4E PCIe 䜡㕂ぎ䯈᯴ᇘࠄ‫ݙ‬ᄬぎ䯈ⱘ෎ഄ
ഔDŽᇍѢϡᬃᣕ PCIe ⱘ㋏㒳ℸؐЎぎ
NULLDŽEFICompatibility ೼䇗⫼
Compatibility16InitializeYourself()
ࠡ䳔㽕‫࣪ྟ߱ܜ‬ℸؐDŽ
LastPciBus 0x52 ㋏㒳Ё᳔໻ⱘ PCI ᘏ㒓ো

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

CSM16 ߑ᭄᥹ষ

EFICompatibility ῵ ഫ Փ ⫼ Compatibility16 ߑ ᭄ ᥹ ষ Ϣ CSM16 ῵ ഫ Ѹ Ѧ DŽ


Compatibility16 ߑ᭄᥹ষᰃ CSM16 ῵ഫЁ䰸њᦤկӴ㒳 BIOS Ёⱘ᳡ࡵП໪ⱘࡳ㛑᥹ষDŽ
EFICompatibility Փ⫼䖭Ͼߑ᭄᥹ষᴹ߯ᓎϔϾӴ㒳 BIOS ⱘ䖤㸠⦃๗ᴹ䖤㸠䕃ӊDŽℸ໪ˈBIOS
ॖ ଚ ৃ ҹ Փ ⫼ 䖭 Ͼ ߑ ᭄ ᥹ ষ ᴹ ࡴ ܹ ӏ ԩ ⾕ ᳝ ⱘ ࡳ 㛑 DŽ Compatibility16 㸼 Ё ⱘ
Compatibility16CallSegment ੠ Compatibility16CallOffset ᰃ Compatibility16 ߑ᭄᥹ষ
ⱘܹষഄഔDŽEFICompatibility Փ⫼ Legacy BIOS ण䆂Ёⱘ FarCall86()ߑ᭄䗮䖛 Thunk 䖰䇗
䖭Ͼܹষᴹ䇗⫼ Compatibility16 ߑ᭄ࡳ㛑DŽCSM16 ‫ܕ‬䆌ḍ᥂᳾ᴹⱘ䳔∖๲ࡴᮄⱘߑ᭄᥹ষˈ
Ԛᰃϡ‫ܕ‬䆌ߴ䰸ӏԩᏆ㒣ᄬ೼ⱘ᥹ষDŽϔϾ‫݋‬ԧⱘ CSM16 䆒䅵Ёˈ䳔㽕ҹϟⱘߑ᭄᥹ষDŽ
Typedef enum{
Compatibility16InitializeYourself 0x0000,
Compatibility16UpdateBbs 0x0001,
Compatibility16PrepareToBoot 0x0002,
Compatibility16Boot 0x0003,
Compatibility16RetrieveLastBootDevice 0x0004,
Compatibility16DispatchOprom 0x0005,
Compatibility16GetTableAddress 0x0006,
Compatibility16SetKeyboardLeds 0x0007,
Compatibility16InstallPciHandler 0x0008
} EFI_COMPATIBILITY16_FUNCTIONS;

Compatibility16InitializeYourself()

䖭ᰃ EFICompatibility ㄀ϔϾ䇗⫼ⱘߑ᭄DŽEFICompatibility ᇚϔѯᖙ㽕ⱘֵᙃ԰Ўখ᭄


Ӵ䗦䖯ᴹDŽCompatibility16InitializeYourself()䋳䋷߱ྟ࣪ 16 ԡⱘ䖤㸠⦃๗DŽ
䖭Ͼߑ᭄䳔㽕ᅠ៤ⱘࡳ㛑ࣙᣀ˄Ԛϡ䰤Ѣ˅˖ᅝ㺙‫ݙ‬ᄬㅵ⧚᳡ࡵˈ߱ྟ࣪Ӵ㒳䆒໛˄↨བ
䕃偅ǃ⹀Ⲭ˅䳔㽕ⱘ᭄᥂ऎˈ߱ྟ࣪ਃࡼ䆒໛䗝ᢽ㸼˄BBS˅᭄᥂ऎˈ߱ྟ࣪Ёᮁ৥䞣ˈᅝ㺙
0xE0000~0xFFFFF ऎඳⱘ‫ݙ‬ᄬㅵ⧚᳡ࡵDŽ

Compatibility16UpdateBbs()

䖭Ͼߑ᭄‫ܕ‬䆌 CSM16 ῵ഫ᳈ᮄ BBS 㸼᭄᥂㒧ᵘDŽEFICompatibility Ӯᦤկ䎇໳ⱘֵᙃ԰


Ўܹখ㒭ℸߑ᭄DŽIBV Џ㽕Փ⫼ℸߑ᭄ᇚ USB ᄬ‫ټ‬䆒໛๲ࡴࠄ BBS 㸼Ёˈᇚ USB ᄬ‫ټ‬䆒໛῵ᢳ
៤ϔϾ BBS ‫ݐ‬ᆍⱘ䆒໛
ℸ໪ˈߑ᭄䖬ৃҹᇚϔϾ BBS ϡ‫ݐ‬ᆍⱘ Option ROM ῵ᢳ⿄ϔϾ BBS ‫ݐ‬ᆍⱘ Option
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ROMDŽ↨བ˖ϔϾ Option ROM ೼߱ྟ࣪ᯊ࣒ԣ INT19 ܹষ৥䞣ˈᴀߑ᭄Ӯᇚ䖭Ͼᮄⱘܹষ


৥䞣԰ЎϔϾ BEV 䆒໛⏏ࡴࠄ BBS Ёˈ✊ৢᘶ໡ INT19 ⱘܹষ৥䞣DŽ

Compatibility16PrepareToBoot()

䖭Ͼߑ᭄䅽 CSM16 ῵ഫ೼ᓩᇐ᪡԰㋏㒳ࠡ‫ޚ‬໛ད㋏㒳⦃๗DŽEFICompatibility Ӯᦤկ䎇


໳ⱘֵᙃ԰Ўܹখ㒭ℸߑ᭄DŽ䖭Ͼߑ᭄䳔㽕ᅠ៤ⱘࡳ㛑ࣙᣀ˄Ԛϡ䰤Ѣ˅˖᳈ᮄ INT15 E820 㸼ˈ
߱ྟ࣪ CMOS Ёⱘ෎ᴀ‫ݙ‬ᄬ໻ᇣ੠ᠽሩ‫ݙ‬ᄬ໻ᇣˈ‫ޚ‬໛ ACPI RSD PTR ༈ˈ߱ྟ࣪ SMBIOS ᭄
᥂㒧ᵘˈ߱ྟ࣪䕃偅ǃІষǃᑊষǃ䬂Ⲭǃ哴ᷛㄝⱘ᭄᥂ऎˈḍ᥂ BBS 㸼Ёϡৠⱘਃࡼ䆒໛ᓎ
ゟ‫ݙ‬䚼ⱘ᭄᥂㸼ˈौ䕑 PMM ੠ 0xE0000~0xFFFFF ↉ⱘ‫ݙ‬ᄬㅵ⧚᳡ࡵDŽ

Compatibility16Boot()

䖭ᰃ EFICompatibility ᳔ৢϔϾ䇗⫼ⱘߑ᭄ˈ⫼ᴹᓩᇐ᪡԰㋏㒳DŽ0xE0000~0xFFFFF ↉ⱘ
‫ݙ‬ᄬᰃ‫ֱݭ‬ᡸⱘDŽEFICompatibility Ӯᦤկ䎇໳ⱘֵᙃ԰Ўܹখ㒭ℸߑ᭄DŽℸࡳ㛑ᖙ乏ֱ䆕 CPU
ᰃ 16 ԡᅲ῵ᓣˈՓ⫼ INT19 䖯㸠ᓩᇐ᪡԰㋏㒳DŽ

Compatibility16RetrieveLastBootDevice()

䖭Ͼߑ᭄䖨ಲ᳔ৢϔϾਃࡼ䆒໛ⱘӬ‫ܜ‬㑻DŽEFICompatibility Ӯᦤկ䎇໳ⱘֵᙃ԰Ўܹখ
㒭ℸߑ᭄DŽℸߑ᭄ৃҹ䅽 EFICompatibility ೼໮ਃࡼ䆒໛ⱘᚙ‫މ‬ϟẔᶹᰃ৺ᰃ᳔ৢϔϾਃࡼ䆒
໛DŽ

Compatibility16DispatchOprom()

䖭Ͼߑ᭄⫼ᴹ䅽 CSM16 ῵ഫࡴ䕑 Option ROM 䖯㸠߱ྟ࣪DŽEFICompatibility Ӯᦤկ䎇


໳ⱘֵᙃ԰Ўܹখ㒭ℸߑ᭄DŽℸߑ᭄ৃҹ䅽 IBV 㒻㓁Փ⫼݊೼ Option ROM ໘⧚ϞⱘᏆ᳝ᡔᴃ
៤ᵰDŽ
ℸࡳ㛑䖬㹿⫼ᴹᇚ BBS ϡᬃᣕⱘ Option ROM ῵ᢳ៤ BBS ᬃᣕⱘ Option ROMDŽ↨བˈ
བᵰϔϾ BBS ϡᬃᣕⱘ Option ROM 䗮䖛࣒ԣ INT13 ܹষ৥䞣ᅝ㺙њϔϾᄬ‫ټ‬䆒໛ˈᴀߑ᭄Ӯ
ᡞ䖭Ͼᮄⱘܹষ৥䞣ҹϔϾ BCV 䆒໛⏏ࡴࠄ BBS 㸼Ёˈֱᄬ䖭Ͼᮄ৥䞣ⱘⳌֵ݇ᙃˈ✊ৢᘶ໡
INT13 ৥䞣ܹষDŽ䗮䖛䖭Ͼᮄⱘ৥䞣ৃҹՓ⫼䖭Ͼ῵ᢳⱘ BCV 䆒໛DŽ

Compatibility16GetTableAddress()

EFICompatibility ῵ഫՓ⫼䖭Ͼߑ᭄೼ 0xE0000~0xFFFFF ⱘ‫ݙ‬ᄬऎඳЁ⫳៤৘⾡᭄᥂㸼DŽ


EFICompatibility ῵ഫ佪‫ܜ‬䇗⫼ Compatibility16GetTableAddress()೼ 0xE0000~0xFFFFF ↉
⬇䇋ϔ↉‫ݙ‬ᄬぎ䯈ˈ✊ৢ໡ࠊⳌᑨⱘ᭄᥂ࠄ䖭↉ぎ䯈DŽCSM16 ῵ഫ䳔㽕᳝ 0xE0000~0xFFFFF
↉‫ݙ‬ᄬⱘ‫ݙ‬ᄬㅵ⧚ࡳ㛑DŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Compatibility16SetKeyboardLeds()

EFICompatibility ῵ഫՓ⫼䖭Ͼߑ᭄ᴹৠℹ䬂Ⲭⱘ LED ♃⢊ᗕDŽℸߑ᭄ḍ᥂ BDA ᭄᥂ऎ


Ёⱘ᭄᥂ᴹ᳈ᮄ䬂Ⲭ LED ♃⢊ᗕDŽ

Compatibility16InstallPciHandler()

EFICompatibility ῵ഫՓ⫼䖭Ͼߑ᭄ᴹЎ䙷ѯ≵᳝ Option ROM ⱘᄬ‫ټ‬䆒໛ᅝ㺙Ёᮁ໘


⧚⿟ᑣDŽ䖭㉏ᄬ‫ټ‬䆒໛᳝˖ᑊষ⹀Ⲭ˄PATA˅੠Іষ⹀Ⲭ˄SATA˅DŽ

Compatibility16 Data Structures

EFICompatibility ῵ഫՓ⫼ Compatibility16 ᭄᥂㒧ᵘ԰Ў Compatibility16 ࡳ㛑᥹ষⱘ


ܹখ੠ߎখˈՓ⫼ϡৠⱘߑ᭄᥹ষᴹ㓈ᡸ੠᳈ᮄ䖭ѯ᭄᥂㒧ᵘDŽ䖭ѯ᭄᥂㒧ᵘᰃϢ CSM ⱘ‫݋‬ԧ
ᅲ⦄Ⳍ݇ⱘˈϡৠ CSM ᅲ⦄䯈ⱘ⿏ỡ䳔㽕䖯㸠ϔѯׂᬍ˄᳈໮ֵᙃখ㾕 Intel ⱘ CSM 㾘㣗˅DŽ
CSM ‫݋‬ԧᅲ⦄Ёⱘϔѯ Compatibility16 ᭄᥂㒧ᵘࣙᣀ˖
EFI_TO_COMPATIBILITY16_INIT_TABLE: EFICompatibility ῵ ഫ 䇗 ⫼
Compatibility16InitializeYourself()ߑ᭄ᯊՓ⫼䖭Ͼ᭄᥂㒧ᵘ԰ЎܹখǃߎখDŽ䖭Ͼ᭄᥂㒧ᵘࣙ
৿њ߯ᓎ CSM16 䖤㸠⦃๗ᯊ᠔ᖙ乏㽕ⱘֵᙃDŽ䖭ѯֵᙃࣙᣀˈԚϡ䰤Ѣ˖PMM Փ⫼ⱘԢッ‫ݙ‬
ᄬ੠催ッ‫ݙ‬ᄬⱘߚ䜡㸼ˈThunk ੠ ReverseThunk ῵ഫⱘഄഔ੠໻ᇣ˄䳔㽕㹿ᥦ䰸೼ PMM ৃ
ߚ䜡‫ݙ‬ᄬП‫ˈ˅ݙ‬ᠽሩ‫ݙ‬ᄬ໻ᇣ˄⫼Ѣ䆒ᅮ CMOS Ёⱘؐ˅ DŽ
EFI_TO_COMPATIBILITY16_BOOT_TABLE: EFICompatibility ῵ ഫ 䇗 ⫼
Compatibility16UdateBbs()੠ Compatibility16PrepareToBoot()ߑ᭄ᯊՓ⫼䖭Ͼ᭄᥂㒧ᵘ
԰ЎܹখǃߎখDŽ䖭Ͼ᭄᥂㒧ᵘࣙ৿њϢᓩᇐ⦃๗᳝݇ⱘֵᙃDŽ䖭ѯֵᙃࣙᣀˈԚϡ䰤Ѣ˖І
ষǃᑊষǃ䕃偅ǃ䬂Ⲭǃ哴ᷛǃ⹀Ⲭ/‫ܝ‬偅,ㄝⱘ㒚㡖ֵᙃˈࣙ৿ਃࡼ䆒໛㒚㡖ⱘ BBS 㸼ˈ䴲Ӵ
㒳ⱘ䆒໛㒚㡖˄↨བ PARTIES˅DŽ
EFI_DISPATCH_OPROM_TABLE: EFICompatibility ῵ ഫ 䇗 ⫼
Compatibility16DispatchOprom()ߑ᭄ᯊՓ⫼䖭Ͼ᭄᥂㒧ᵘ԰ЎܹখǃߎখDŽ䖭Ͼ᭄᥂㒧ᵘ
ࣙ৿њࡴ䕑 Option ROM ੠໘⧚ Option ROM ߱ྟ࣪⿟ᑣ䖨ಲ᭄᥂᳝݇ⱘֵᙃDŽ
EFI_LEGACY_INSTALL_PCI_HANDLER: EFICompatibility ῵ ഫ 䇗 ⫼
Compatibility16InstallPciHandler()ߑ᭄ᯊՓ⫼䖭Ͼ᭄᥂㒧ᵘ԰ЎܹখDŽ䖭Ͼ᭄᥂㒧ᵘࣙ৿њ
Compatibility16 ࡳ㛑ߑ᭄ᅝ㺙䴲 Option ROM ㉏ⱘ PCI ᄬ‫ټ‬䆒໛Ёᮁ᳡ࡵ⿟ᑣ䳔㽕ⱘֵ᳝݇
ᙃDŽ

Compatibility16SMM

Compatibility16SMM ῵ഫᰃϔϾৃ䗝ᢽᬃᣕⱘ῵ഫDŽ⫼ᴹᦤկϔѯ EFI ≵᳝ᦤկⱘ SMM


ࡳ㛑DŽϔѯᑇৄ䳔∖ˈӴ㒳ⱘ⡍ᗻˈϔѯ⾕᳝ⱘ⡍ᗻㄝৃ㛑䳔㽕䖭Ͼ῵ഫDŽCompatibility16SMM
῵ഫᰃϢḹ⠛Ⳍ݇ⱘDŽ䖭Ͼ῵ഫ‫ܕ‬䆌 IBV 䗮䖛 SMI ᴹ㒻㓁Փ⫼ᅗӀПࠡ೼Ӵ㒳⦃๗ЁⱘᏆ᳝ⱘ
ᡔᴃ៤ᵰDŽϔѯџ՟བ˖INT15 D042 ࡳ㛑⫼ᴹ᳈ᮄ CPU ᖂⷕˈᬃᣕ USB 䬂Ⲭǃ᭄᥂ˈᬃᣕ USB
ᄬ‫ټ‬䆒໛DŽ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Thunk and Reverse Thunk

Thunk ῵ഫᇚ 32 ԡֱᡸ῵ᓣ䖤㸠⦃๗ߛᤶࠄ 16 ԡᅲ῵ᓣ䖤㸠⦃๗DŽReverseThunk ῵ഫ


߭Ң 16 ԡᅲ῵ᓣ䖤㸠⦃๗ߛᤶࠄ 32 ԡֱᡸ῵ᓣ䖤㸠⦃๗DŽThunk ੠ ReverseThunk ഛӮḍ᥂
Ⳍᑨⱘ䖤㸠⦃๗ড়⧚䆒㕂 8259 ৃ㓪⿟Ёᮁ᥻ࠊ఼DŽ೒ 17.3 ሩ⼎њ Thunk ੠ ReverseThunk ೼
16 ԡ੠ 32 ԡ䖤㸠⦃๗ϟᰃབԩ䖤㸠ⱘDŽ

EFI ⱘ䖤㸠⦃๗˄32 ԡ῵ᓣ˅Փ⫼䕂䆶῵ᓣ㗠䴲Ёᮁ῵ᓣᴹ᥼ࡼˈᅗҙᬃᣕ㋏㒳ᯊ䩳ЁᮁDŽ


಴ℸᔧ㋏㒳䖤㸠῵ᓣҢ 32 ԡবЎ 16 ԡᯊˈᖙ乏ЎӴ㒳䖤㸠⦃๗˄16 ԡ῵ᓣ˅᠔䳔㽕⹀ӊ੠䕃
ӊЁᮁᦤկᬃᣕDŽEfiCompatibility ῵ഫ೼Ң EFI 䖯ܹ Compatibility16BIOS ៪ Option ROM
ᯊӮ䇗⫼ Thunk ῵ഫDŽThunk ῵ഫᠻ㸠ϟ߫ࡼ԰˖
Ƶ ᇍЁᮁ᥻ࠊ఼䖯㸠䞡ᮄ䆒㕂
Ƶ ᇐܹℷ⹂ⱘ GDT ੠ IDT 㸼
Ƶ ߛᤶࠄ 16 ԡ῵ᓣ
Ƶ Փ⫼ᦤկⱘ䕧᭄ܹ᥂߱ྟ࣪ IA32 ᆘᄬ఼
Ƶ ᠻ㸠ᖙ乏ⱘࡼ԰ FAR CALL ៪䕃Ёᮁ
Ƶ Փ⫼ IA32 ᆘᄬ఼ⱘؐ䆒㕂䕧ߎ᭄᥂
Ƶ ᘶ໡ 32 ԡⱘЁᮁ䖤㸠⦃๗
Ƶ 䖨ಲ EFI
16 ԡⱘ FAR ߑ᭄䗮䖛ᠻ㸠˄៪῵ᢳ˅RETF ᣛҸ䖨ಲ ThunkDŽ16 ԡⱘ䕃Ёᮁ໘⧚ߑ᭄䗮䖛
ᠻ㸠˄៪῵ᢳ˅IRET ᣛҸ䖨ಲ ThunkDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ReverseThunk ῵ഫ੠ Thunk ῵ഫᕜⳌԐˈԚᅗᰃ㹿 16 ԡⱘҷⷕ᠔䇗⫼ˈ⫼ѢҢ 16 ԡ䖤


㸠῵ᓣߛᤶࠄ 32 ԡ䖤㸠῵ᓣDŽᔧ Compatibility16BIOS ῵ഫ䳔㽕ᠻ㸠 32 ԡ῵ᓣϟⱘҷⷕᯊˈ
߭Ӯ䇗⫼ ReverseThunkDŽ

Functional Visualization of CSM

ᔧ᠔᳝ᖙ乏ⱘ DXE 偅ࡼ㹿ᠻ㸠ᑊϨ DXE Ḛᶊѻ⫳ EFI ਃࡼ᳡ࡵ੠ EFI 䖤㸠ᯊ᳡ࡵˈDXE


ߚথ఼ᡞ᥻ࠊᴗ䕀㒭 BDS ᶊᵘण䆂DŽBDS ᶊᵘण䆂ᓎゟ᥻ࠊৄ偅ࡼ✊ৢᇱ䆩ᓩᇐ᪡԰㋏㒳DŽ
BDS ᶊᵘण䆂೼乘ਃࡼ⦃๗ᠻ㸠৘⾡ᑨ⫼⿟ᑣDŽ䖭ѯᑨ⫼⿟ᑣࣙᣀ setupˈ㋏㒳䜡㕂ᰒ⼎ˈ
㋏㒳䆞ᮁˈOEM ๲ؐᑨ⫼⿟ᑣ੠᪡԰㋏㒳 boot loaderDŽ
೒ 17.4 ᰒ⼎њ BDS ⱘ CSM ⱘᶊᵘ೒DŽབᵰӴ㒳 Option ROM 䳔㽕ˈ៪㗙থ⦄Ӵ㒳ⱘ
ਃࡼ䗝乍ˈ៪㗙ᓩᇐӴ㒳ⱘ᪡԰㋏㒳ˈBDS ᇚӮ䇗⫼ CSMDŽᔧϔϾ䆒໛≵᳝ EFI 偅ࡼˈা᳝Ӵ
㒳 Option ROM ᯊˈEFI ⦃๗ձᮻ䳔㽕Ӵ㒳 Option ROM ⱘᬃᣕDŽ೼䖭⾡ᚙ‫މ‬ϟˈ䆒໛੠ℷᐌ
ⱘ EFI 偅ࡼ䯈ⱘ㒥ᅮ༅䋹њDŽ䗮䖛 CSM Ёⱘ Legacy BIOS ProtocolˈBDS Ӯᇚ䆒໛ϢᅗⱘӴ
㒳 Option ROM 㒥ᅮ䍋ᴹDŽBDS Փ⫼ Legacy BIOS 偅ࡼᴹՓ⫼੠߱ྟ࣪䆒໛ⱘ Option ROMDŽ

EFI ⦃๗ЁⱘӴ㒳ਃࡼ䏃ᕘˈेՓϔϾ䆒໛᳝ EFI ⱘ偅ࡼ੠Ӵ㒳 Option ROMˈᇍ Option


ROM ⱘᬃᣕгᰃᖙ乏ⱘˈ಴ЎᓩᇐӴ㒳ⱘ᪡԰㋏㒳䳔㽕Փ⫼ Option ROM ⱘᬃᣕˈBDS Ӯ䇗

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

⫼ CSMDŽ
೒ 17.5 ᰒ⼎њ BDS 䰊↉ⱘ CSM ⱘࡳ㛑㾚೒DŽ䗮䖛 Legacy BIOS Protocol ण䆂ˈBDS
⹂ᅮਃࡼ䆒໛ᑊϨᅠ៤᪡԰㋏㒳Ⳍ݇ⱘ৘⾡ࡼ԰DŽϔϾ䆒໛⬅ EFI 偅ࡼ੠Ӵ㒳 Option ROM 偅
ࡼৃ㛑Ӯ᳝ϡৠⱘ⦄䈵DŽEFI 偅ࡼѻ⫳ϔϾਃࡼ䆒໛߫㸼DŽShadowAllLegacyOproms()ߑ᭄
݇䯁᠔᳝ⱘ EFI 䆒໛DŽGetBbsInfo()ߑ᭄ѻ⫳Ӵ㒳ਃࡼ䆒໛߫㸼DŽ೼ Option ROM ߱ྟ࣪ᳳ䯈ˈ
CSM Ӯ᳈ᮄ‫ݙ‬䚼ⱘ BBS 㸼DŽBDS ѻ⫳ᅠᭈⱘਃࡼ䆒໛߫㸼ˈ᠔ҹ Setup 㛑ܼ䴶ⱘ㒭⫼᠋ᰒ⼎
ਃࡼ䗝乍ҹ֓⫼᠋䗝ᢽDŽ⫼᠋Ңਃࡼ䆒໛߫㸼Ё䗝ᢽਃࡼ䆒໛DŽCSM16 ῵ഫᡞӴ㒳ⱘⲬোߚ䜡
㒭ৃ⫼ⱘ䆒໛DŽ

EFI ⱘ䆒໛䏃ᕘ㛑ऎߚߎ EFI ॳ⫳᪡԰㋏㒳(ϡㅵ䆒໛ᰃ EFI Option ROM 䖬ᰃӴ㒳 Option

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

ROM ᥻ࠊⱘ)䖬ᰃӴ㒳 OSˈLegacyBoot()ߑ᭄ህᰃ⫼ᴹᓩᇐӴ㒳 OS ⱘDŽϔϾདⱘᅲ⦄ᑨ䆹


೼䆒㕂ਃࡼ䆒໛ПࠡˈẔᶹϔϾৃ⿏ࡼⱘၦҟᰃ৺ᄬ೼DŽ䖭ϾẔᶹৃҹࡴᖿਃࡼⱘ䗳ᑺˈᑊϨ
ৃҹ䙓‫ܡ‬ᓩ䍋㋏㒳໡ԡDŽᔧᓩᇐണⱘӴ㒳ਃࡼ䗝乍ᯊˈᰃ໡ԡ㋏㒳䖬ᰃ䖨ಲࠄ EFI প‫އ‬Ѣ‫݋‬ԧⱘ
ᅲ⦄DŽϔϾ↨䕗དⱘᅲ⦄ᰃ㛑ᬃᣕᓩᇐӴ㒳੠ EFI ⱘਃࡼ䗝乍ˈᔧӴ㒳ਃࡼ༅䋹ᯊˈ㛑䖨ಲ᥻ࠊ
ᴗ㒭 EFIDŽབᵰᓩᇐ㟇 EFI ॳ⫳᪡԰㋏㒳੠Ӵ㒳 Option ROM 㹿߱ྟ࣪ˈ᥹ϟᴹህӮ䇗⫼
PrepareToBootEfi()ߑ᭄DŽ

ᅝ㺙Ӵ㒳 BIOS ⦃๗

ᔧᅝ㺙Ӵ㒳⦃๗ˈBDS 䇗⫼ Legacy BIOS Driver ᠻ㸠৘⾡᪡԰ᴹ߱ྟ࣪ CSM32 ੠ CSM16


ⱘ⦃๗DŽ䖭ѯ᪡԰ࣙᣀԚϡ䰤Ѣϟ䴶ⱘ‫ݙ‬ᆍ˖
Ƶ ᶹᡒ Legacy Region Protocol, Legacy Interrupt ProtocolˈLegacy BIOS
Platform ProtocolˈLegacy 8259 ProtocolDŽ
Ƶ ҢӴ㒳‫ݙ‬ᄬऎඳ 0x00000̢0x00500 ‫ݙ‬ᄬऎඳˈߚ䜡Ёᮁ৥䞣੠ BDA 䳔㽕ⱘ‫ݙ‬ᄬDŽ
Ƶ Ў EBDA ੠ EfiCompatibility ߚ䜡‫ݙ‬ᄬDŽϔϾདⱘᅲ⦄ᑨ䆹ߚ䜡 0x80000̢0x9FBFF
ऎ䯈㒭 EfiCompatibilityˈߚ䜡 0x9FC00̢0x9FFFF ऎ䯈㒭 EBDADŽ
Ƶ Ў Thunk ੠ ReverseThunk ߚ䜡‫ݙ‬ᄬ
Ƶ ߱ྟ࣪ Thunk ࣙᣀ᳈ᮄӏԩৃ䞡ᅮԡഄഔDŽ
Ƶ ߚ䜡Ԣッ‫ݙ‬ᄬ(ᇣѢ 1M)੠催ッ‫ݙ‬ᄬ(໻Ѣ 1M)㒭 CSM16 ⱘ PMM Փ⫼DŽ
Ƶ ѻ⫳Ӵ㒳ⱘ‫ݙ‬ᄬ᯴ᇘ㸼
Ƶ Ң Firmware Volume Ёᶹᡒ CSM16 ῵ഫ
Ƶ 䅵ㅫ CSM16 ῵ഫⱘ䍋ྟഄഔ੠໻ᇣ
Ƶ Փ 0xE0000̢0xFFFFF ऎඳৃ䇏‫ৢ✊ˈݭ‬ᡞ CSM16 ῵ഫᣋ䋱ࠄ䆹Ⳃᷛऎඳ
Ƶ ᶹᡒᑊՓ㛑 Compatibility16 Tableˈֱᄬ Compatibility16 ߑ᭄ⱘܹষഄഔᑊϨ᳈
ᮄ‫ݙ‬䚼᭄᥂DŽ
Ƶ ѻ⫳߱ℹⱘ E820 㸼ˈ߱ྟ࣪ BDAǃEBDA ੠Ӵ㒳 CMOSDŽ
Ƶ ฿‫ ݭ‬Compatibility16 Table ⱘᖙ㽕ᄫ↉
Ƶ 䗮䖛 Thunk ੠ Compatibility16 ߑ᭄䇗⫼ Compatibility16InitializeYourself()ߑ᭄
Ƶ Ң Compatibility16 㸼㦋পेᦦे⫼䆒໛ⱘᅝ㺙ֵᙃˈ߱ྟ࣪‫ݙ‬䚼ⱘ᭄᥂㒧ᵘDŽ
Ƶ ᅝ㺙Ӵ㒳 BIOS Protocol

ਃࡼϔϾӴ㒳᪡԰㋏㒳

ᔧਃࡼϔϾӴ㒳᪡԰㋏㒳ˈ䗮䖛 LegacyBoot()ߑ᭄ˈBDS ᠻ㸠৘⾡᪡԰DŽ䖭ѯ᪡԰ࣙᣀ


Ԛϡ䰤Ѣϟ䴶ⱘ‫ݙ‬ᆍ˖
Ƶ ⹂ֱӴ㒳 BIOS ऎඳৃ䇏ৃ‫ݭ‬DŽ
Ƶ ⫳៤ SMBIOS ᭄᥂㒧ᵘ
Ƶ⹂ֱ᠔᳝ⱘ PCI Ёᮁ㒓㹿ℷ⹂䜡㕂Փ⫼ 8259 Ёᮁ᥻ࠊ఼DŽ
Ƶ ᓎゟІষǃᑊষ੠䕃偅ⱘֵᙃ
Ƶ ᓎゟᑊ⹂ᅮ IDE ATA/ATAPI 䆒໛ⱘֵᙃDŽ
Ƶ ߱ྟ࣪ BDA Ёⱘᅮᯊ఼ֵᙃऎඳ
Ƶ 䞡ᓎ E820 㸼ˈ✊ৢ䗮䖛 Compatibility16GetTableAddress()ߑ᭄ᣋ䋱ࠄӴ㒳 BIOS
ऎඳ
ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ
௮ͳΖΪΠΟΕ͑ͳͺ΀΄௯Ё᭛乘㾜⠜͑ ‫׊‬ΈΈΈ͟ͳͺ΀΄΃ͶͿ͟ʹ΀;͑

Ƶ ᓎゟ BBS 㸼ᑊϨ⹂ᅮਃࡼ䆒໛ⱘӬ‫ܜ‬乎ᑣ
Ƶ Փ⫼ Compatibility16GetTableAddress()ߑ᭄ˈᣋ䋱 MP 㸼ˈOEM 㞾ᅮНⱘ 16
ԡ੠ 32 ԡ᭄᥂ࠄӴ㒳 BIOS ऎඳDŽ
Ƶ 䇗ᭈ 8259 PIC ⱘӴ㒳Ёᮁ৥䞣෎ഔ
Ƶ 䇗⫼ Compatibility16BIOS ⱘ PrepareToBoot()ߑ᭄
Ƶ ՓӴ㒳 BIOS ऎඳা䇏(‫ֱݭ‬ᡸ)
Ƶ 䗮䖛 Compatibility16Boot()ߑ᭄䇗⫼ INT19 ᴹᓩᇐӴ㒳 OSDŽ

ໄᯢ˖ᴀ䌘᭭ҙկᄺдখ㗗⫼ˈ᳾㒣ᥜᴗˈϡᕫ䖯㸠ӏԩ໡ࠊǃ䕀䕑ǃӴ᪁ǃߎ⠜ㄝ䴲⊩П⫼䗨ˈ䇋೼ᄺдৢ
24 ᇣᯊ‫ߴݙ‬䰸ˈ৺߭ৢᵰ㞾䋳DŽ

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy