ã¢ã»ã³ãã©ãŒZ80ïŒZX SpectrumïŒã§ã®ãã«ãã¿ã¹ã¯ãã£ã¹ãããã£ãŒã®ç¬èªã®å®è£ ã«æ³šç®ããŠãã ãããããã¯ãOSã®äžéšã§ã¯ãããŸããããåå¥ã«äœ¿çšã§ããŸãã äœåãªãã®ã¯äœããããŸãã-ã¹ã¬ããã®å®è¡ãšãããã®éã®åæã®çµç¹ã ãã§ãã ãã£ã¹ãããã£ã¯ããœãããŠã§ã¢ãããžã§ã¯ãã®äžå¯æ¬ ãªéšåãšããŠãOSçšã®ããæ·±å»ãªãã£ã¹ãããã£ãäœæããããã®åºç€ãšããŠããŸãã¯ãã¬ãŒãã³ã°è³æãšããŠäœ¿çšã§ããŸãã
å®è£ ããããã«ãã¿ã¹ã¯ã·ã¹ãã ã®ã¢ãŒããã¯ãã£
ãã®ã¢ãŒããã¯ãã£ã¯ãReactOSãœãŒã¹ãç 究ãããšãã«Windows NTã«ãŒãã«ã®æŠå¿µã«è§ŠçºãããŸãã[2]ã ãããã®æŠå¿µã®ãã¡ããã«ãã¿ã¹ã¯ã®å¿ èŠãªæ©èœãæäŸããæå°éã®ãã®ãå®è£ ãããŸããã ããå®å šãªå®è£ ãå¯èœã§ãããããæç¹ãããè¿œå ã®æ©èœã¯å°åã³ã³ãã¥ãŒã¿ãŒã®ã³ã¹ãã®ããã«æ£åœåãããªããªããŸãã
ã¹ã¬ãã
ã¹ã¬ãã[1]ã¯ããã£ã¹ãããã£ãŒã«ãã£ãŠå¶åŸ¡ãããåºæ¬åäœã§ãã åã¹ã¬ããã«ã¯å®è¡å¯èœã³ãŒããšç¬èªã®ã¹ã¿ãã¯ããããã«ãŒãã³ããã®ä»ã®æ å ±ããã®æ»ãã¢ãã¬ã¹ãä¿åããããã«äœ¿çšã§ããŸãã ãã£ã¹ãããã£ã¯ãå®è¡ãããã¹ã¬ããããå¥ã®ã¹ã¬ããã«åãæ¿ããå¯èœãªå Žåããã¹ãŠã®ã¹ã¬ãããå¿ èŠãªã³ãŒããå®è¡ããããã«ããŸãã
åã¹ã¬ããã¯ãåŸ æ©äžïŒåŸ æ©äžïŒãå®è¡æºåå®äºïŒæºåå®äºïŒãå®è¡äžïŒå®è¡äžïŒã®3ã€ã®ç¶æ ã®ããããã«ãªããŸãã ã¢ã€ãã«ç¶æ ã§ã¯ãã¹ã¬ãããåŸ æ©ããŠããã€ãã³ããçºçãããŸã§ããã£ã¹ãããã£ã¯ã¹ã¬ããã³ãŒãã®å®è¡ãé²æ¢ããŸãã æºåå®äºç¶æ ã®ã¹ã¬ããã¯ãã§ããã ãæ©ãã³ã³ãããŒã©ãŒããå¶åŸ¡ãåãåããŸãã ã·ã¹ãã ã«ã¯ããã»ããµã1ã€ãããªããããå®è¡ç¶æ ã«ã§ããã¹ã¬ããã¯1ã€ã ãã§ãã ãã®ã³ãŒãã¯ãã¹ã¬ãããã¹ã¿ã³ãã€ç¶æ ã«ãªããŸã§ããŸãã¯ããªãšã³ãã·ã§ã³ãçºçãããŸã§ãã€ãŸããã£ã¹ãããã£ãç¬èªã®ã€ãã·ã¢ããã§å¶åŸ¡ãå¥ã®ã¹ã¬ããã«è»¢éããªããŸã§ãããã»ããµã«ãã£ãŠå®è¡ãããŸãã
ã·ã¹ãã å ã®ã¹ã¬ããã®æ°ã¯åºå®ãããŠããŸãã æ°ããã¹ã¬ããã¯éå§ãããå€ãã¹ã¬ããã¯çµäºããŸããã ãã€ã¯ãã³ã³ãããŒã©ãŒã¢ããªã±ãŒã·ã§ã³ã®å ŽåããŸãã¯å¥ã®ã¢ããªã±ãŒã·ã§ã³ã®äžéšãšããŠããã®å¶éã¯éèŠã§ã¯ãããŸããã ãããããã£ã¹ãããã£ãŒã¯åçŽåããããã®äœæ¥ã¯å éãããŸãã
åã¹ã¬ããã«ã¯åªå é äœããããŸãã æºåå®äºç¶æ ã®ã¹ã¬ãããè€æ°ããå Žåããã£ã¹ãããã£ã¯åªå 床ãæãé«ãã¹ã¬ããã®1ã€ãå®è¡ããããšãéžæããŸãã ãã£ã¹ãããã£ã®çŸåšã®ããŒãžã§ã³ã§ã¯ãæäœäžã«ã¹ããªãŒã ã®åªå 床ãå€æŽã§ããŸããã ãããŒã®åçåªå 床ã¯å®è£ ããã®ã«ã³ã¹ããããããŸãããåªå 床ã®é転ã®åé¡ã解決ããã«ã¯ãã®æ©èœãå¿ èŠã§ã[1]ã
ã·ã¹ãã å ã®ãã¹ãŠã®ã¹ã¬ããã®åªå é äœã¯ç°ãªããŸãã ããã¯ããã£ã¹ãããã£ãåãåªå 床ã§æ¬äŒŒäžŠåã³ãŒãå®è¡ãç·šæãããããã»ããµãããã¹ââã¬ããããå¥ã®ã¹ã¬ããã«ãã°ããåãæ¿ããããšãæå³ããŸãïŒãã©ãŠã³ãããã³ãïŒã ãããå®éã«ã¯ããã®å¶éã¯éèŠã§ã¯ãããŸããã ããã€ãã®ã¹ã¬ãããæ¬äŒŒäžŠåå®è¡ãããšãåã¹ã¬ããã®é床ãäœäžããŸãã ã³ã³ãã¥ãŒã¿ã¡ã¢ãªã®ãªãœãŒã¹ãéãããŠããããšãèãããšããã®ãããªããã°ã©ã ã®é 次å®è¡ãæŽçããæ¹ãé©åã§ãã ããªãšã³ããã£ããã«ãã¿ã¹ã¯ã®äž»ãªå©ç¹ã¯ãæ¬äŒŒäžŠåå®è¡ã®å¯èœæ§ã§ã¯ãªããéèŠãªãœãŒã¹ïŒãŠãŒã¶ãŒãããŒããŒãã®ããŒãæŒãããšãžã®å¿çãªã©ïŒããã®èŠæ±ãåŠçããçæã¿ã¹ã¯ãšãå®äºæéãéèŠã§ã¯ãªãããã°ã©ã ã®é·ãäœæ¥ïŒã³ã³ãã€ã«ãã¢ãŒã«ã€ãïŒã®éã®ããã»ããµã®å¹ççãªåé¢ã§ãã ããŒã¹ãããŒã¯ãåŠçããã¹ããªãŒã ã«é«ãåªå 床ãå²ãåœãŠãã¢ãŒã«ã€ãã¹ããªãŒã ã«äœãåªå 床ãå²ãåœãŠããšãããã¹ããç·šéãããŠãŒã¶ãŒã®èŠ³ç¹ããã¯ããšãã£ã¿ãŒã®é床ã¯äœäžããŸããããããã¯ã°ã©ãŠã³ãã§ã¯ããã¡ã€ã«ã¯ããŒãã¹ãšããŠã¢ãŒã«ã€ããããŸãã
åŸ æ©ãªããžã§ã¯ãïŒåæãªããžã§ã¯ãïŒ
ãããã«åºã¥ããŠãã¹ã¬ããã¯ãã£ã¹ãããã£ã®å¯Ÿå¿ããé¢æ°ãåŒã³åºãããšã§åŸ æ©ç¶æ ã«ãªããŸãã ã¹ã¿ã³ãã€ãªããžã§ã¯ãã«ä¿¡å·ãéãããå Žåãšéãããªãå ŽåããããŸãã ã·ã°ãã«ãéä¿¡ãããå ŽåãåŸ æ©é¢æ°ã¯ããã«æ»ããã¹ã¬ããã¯å®è¡ãç¶ç¶ããŸãã ãªããžã§ã¯ãã«ä¿¡å·ãéãããªãå Žåãã¹ã¬ããã¯åŸ æ©ç¶æ ã«ãªããæºåç¶æ ã«ããä»ã®ã¹ã¬ããã®å®è¡ãéå§ãããŸãã ãªããžã§ã¯ããéç¥ããããšããã«ãåŸ æ©äžã®ã¹ã¬ããã¯æºåå®äºç¶æ ã«æ»ããã§ããã ãæ©ããã£ã¹ãããã£ãŒããå¶åŸ¡ãåãåããŸãã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ã¯ãéåžžãã€ãã³ããã»ããã©ããã¥ãŒããã¯ã¹ãªã©ã®åŸ æ©ãªããžã§ã¯ãããããŸãããã®ãã£ã¹ãããã£ã«ã¯ãéç¥ã€ãã³ãïŒæåãªã»ããïŒãšåæã€ãã³ãïŒèªåãªã»ããïŒã®2çš®é¡ã®ã€ãã³ããå®è£ ãããŠããŸãã ã
IRQL
ããã»ããµãŒã®ç¶æ Windows NTã®ç¥èªã¯ãå²ã蟌ã¿èŠæ±ã¬ãã«ã[3]ãè¡šããŠããŸãããããã¯æŠå¿µã®æå³ãæ£ç¢ºã«åæ ããŠããŸããã 説æãããã£ã¹ãããã£ãŒã«ã¯3ã€ã®IRQLã¬ãã«ããããŸãã PASSIVE_LEVEL-ããã¯ãããã»ããµãã¹ã¬ããã®1ã€ã®ã³ãŒããçŸåšå®è¡ããŠãããšãã§ãã ãã®æç¹ã§ãå®è¡å¯èœã¹ã¬ãããå¥ã®ã¹ã¬ããã«ãã£ãŠæ··ã¿åã£ãŠããããããã»ããµãããŒããŠã§ã¢å²ã蟌ã¿ã®åŠçãéå§ããå ŽåããããŸãã DISPATCH_LEVEL-éèŠãªãã£ã¹ãããã£ã³ãŒãã®å®è¡äžãããã»ããµã¯ãã®ç¶æ ã«ãããŸãã ããšãã°ãã¹ã¬ããéã®å®è¡ã®åãæ¿ãã¯ãå€ãã®ã¢ã¯ã·ã§ã³ã§æ§æãããæäœã§ãã çŸæç¹ã§ã¯ãããã»ããµããã®ã¹ã¬ãããŸãã¯ãã®ã¹ã¬ãããå®è¡ããŠãããšã¯èšããŸããããŸãã§ããããã®éãã®ããã§ãã ãã®ç¹ã§ãDISPATCH_LEVELã¢ãŒãã§å®è¡ãããã³ãŒããæ··éãããããšã¯ã§ããŸããã æåŸã«ã第3ã¬ãã«-DIRQL-ã¯ãããã»ããµãçŸåšããŒããŠã§ã¢å²ã蟌ã¿ãåŠçããŠãããšããäºå®ã«å¯Ÿå¿ããŠããŸãã
Windows NTãšã¯ç°ãªããç§ã®ãã£ã¹ãããã£ã«ã¯ãçŸåšã®IRQLã¬ãã«ãä¿åãããå ŽæããããŸããã ãŸããæ瀺çã«å¢æžããæ©èœããããŸããã ããããæŠå¿µãšããŠã®IRQLã¯ãæé»çã«ã§ã¯ãããŸãããã·ã¹ãã ã«æ瀺ããã客芳çã«ååšããŸãã
ãŠãŒã¶ãŒã³ãŒãã¯ãã¹ã¬ããïŒPASSIVE_LEVELïŒãŸãã¯DIRQLã®ãŠãŒã¶ãŒå²ã蟌ã¿ã«ãŒãã³ïŒISRïŒã§å®è¡ã§ããŸãã 䜿çšå¯èœãªãã£ã¹ãããã£ãŒé¢æ°ã®ã»ããã¯ãIRQLã«ãã£ãŠç°ãªããŸãã IRQLèŠä»¶ã«éåãããšãã·ã¹ãã ãã¯ã©ãã·ã¥ããŸãã
ã¹ã¬ããã§å®è¡ããããŠãŒã¶ãŒã³ãŒãã¯ãå²ã蟌ã¿ãçŠæ¢ããã¹ãã§ã¯ãããŸããã ISRã³ãŒãã¯çŠæ¢ãããå²ã蟌ã¿ã§å®è¡ããããããå察ã«èš±å¯ãããŸããã DISPATCH_LEVELã«é¢ããŠã¯ãWindows NTã§ã¯ãã®ã¢ãŒãã§å²ã蟌ã¿ã¯çŠæ¢ãããŠããŸããããã£ã¹ãããã£ã§ã¯ãç°¡åã«ããããã«DISPATCH_LEVELã§å²ã蟌ã¿ãç¡å¹ã«ãªã£ãŠããŸãã
ãã£ã¹ãããã£ãŒé¢æ°
æ©èœã®ç®çãšãã®æ©èœã®èª¬æãèšèŒãããŠããŸãã ãããã®é¢æ°ã«ãã©ã¡ãŒã¿ãŒãæž¡ã詳现ã¯ããœãŒã¹ã³ãŒããžã®ã³ã¡ã³ãã«èšèŒãããŠãããããã¹ããä¹±éã«ãªããªãããã«ããã§ã¯è€è£œãããŸããã å¯èœã§ããã°ãé¢æ°ã®ååã¯Windows NTã«ãŒãã«ã®é¡äŒŒã®é¢æ°ã®ååãšåãã§ã[2,3]ã
KeResetEvent
ã€ãã³ãã¿ã€ãã®åŸ æ©ãªããžã§ã¯ãã®ã¢ã©ãŒã ãåé€ããŸãã ä»»æã®IRQLã¬ãã«ã§åŒã³åºãããšãã§ããŸãã
KeSetNotifEvent
ã¿ã€ãéç¥ã€ãã³ãïŒæåãªã»ããïŒã®åŸ æ©ãªããžã§ã¯ããéç¥ããŸãã ãã®ãªããžã§ã¯ãã®ä¿¡å·ãåŸ ã£ãŠãããã¹ãŠã®ã¹ã¬ããã¯ãå®è¡æºåå®äºç¶æ ã«ãªããŸãã ãããã®äžã«çŸåšã®ã¹ã¬ãããããé«ãåªå 床ãæã€ã¹ã¬ãããååšããå ŽåãçŸåšã®ã¹ã¬ããã®å®è¡ã¯ãæãé«ãåªå 床ãæã€ã¹ã¬ããã«åã£ãŠä»£ãããŸãã
ãªããžã§ã¯ãã¯ãKeResetEventãåŒã³åºããããŸã§ä¿¡å·ãéãç¶ããŸãã
ãã®é¢æ°ã¯ãIRQL = PASSIVE_LEVELã§ã®ã¿åŒã³åºãããšãã§ããŸãã
KeSetNotifEventFromIsr
åãã§ãããIRQL> = DISPATCH_LEVELã®åŒã³åºãã®å Žåã ãã®é¢æ°ãISRããåŒã³åºããããšããããŒã®åãæ¿ããçºçããå ŽåãISRã®å®äºåŸã«åãæ¿ããããŸãã
KeSetSynchrEvent
ã¿ã€ãåæã€ãã³ãïŒèªåãªã»ããïŒã®åŸ æ©ãªããžã§ã¯ãã«ä¿¡å·ãéããŸãã ãã®ãªããžã§ã¯ãã«ä¿çäžã®ãããŒãããå Žåããã®ãã¡ã®1ã€ã¯æºåå®äºç¶æ ã«ãªãããªããžã§ã¯ãã¯ããã«éä¿¡å·ç¶æ ã«æ»ããŸãã æ®ãã®ã¹ã¬ããã¯åŸ æ©ãç¶ããŸãã åŸ æ©äžã®ã¹ã¬ããããªãã£ãå Žåããªããžã§ã¯ãã¯ãäžéšã®ã¹ã¬ãããåŸ æ©é¢æ°ãŸãã¯KeResetEventãåŒã³åºããŸã§ã·ã°ãã«ç¶æ ã®ãŸãŸã«ãªããŸãã
è€æ°ã®ã¹ã¬ããããã®ãããªãªããžã§ã¯ãã®ã·ã°ããªã³ã°ãåŸ æ©ããŠããå ŽåãåŸ æ©ããã®çµäºã®é åºã¯å®çŸ©ãããŠããŸããã
åŸ æ©ããŠæºåå®äºç¶æ ã«åãæ¿ãã£ãã¹ã¬ããã®åªå é äœãçŸåšã®ãã®ããé«ãå Žåãæ··éãçºçããŸãã
ãã®é¢æ°ã¯ãIRQL = PASSIVE_LEVELã§ã®ã¿åŒã³åºãããšãã§ããŸãã
KeSetSynchrEventFromIsr
åãã§ãããIRQL> = DISPATCH_LEVELã®åŒã³åºãã®å Žåã ãã®é¢æ°ãISRããåŒã³åºããããšããããŒã®åãæ¿ããçºçããå ŽåãISRã®å®äºåŸã«åãæ¿ããããŸãã
KeWaitForObject
ãªããžã§ã¯ããä¿¡å·ãéãã®ãåŸ ã£ãŠããŸãïŒã€ãã³ãïŒã ãã®é¢æ°ãåŒã³åºããããšãã«ãªããžã§ã¯ãã«ä¿¡å·ãéãããå Žåãé¢æ°ã¯ããã«æ»ããŸãã åæã«ãåæã€ãã³ãã®å Žåããªããžã§ã¯ãã¯æªçœ²åã®ç¶æ ã«ãªã»ãããããŸãã ãªããžã§ã¯ãã«ã·ã°ãã«ãéä¿¡ãããªãã£ãå ŽåãçŸåšã®ã¹ã¬ããã¯ã¹ã¿ã³ãã€ã¢ãŒãã«ãªãããã£ã¹ãããã£ã¯æºåå®äºç¶æ ã®ä»ã®ã¹ã¬ããããã³ãŒããå®è¡ããŸãã
ãã®é¢æ°ã¯ãIRQL = PASSIVE_LEVELã§ã®ã¿åŒã³åºãããšãã§ããŸãã
ãŠãŒã¶ãŒISR
ããã¯ãã«ã¹ã¿ã å²ã蟌ã¿ã«ãŒãã³ãå®è¡ããæ©èœãæå³ããŸãã é¢æ°ã®åœ¢åŒã§ã¯å²ãåœãŠãããŸãããããã£ã¹ãããã£ã®ãœãŒã¹ã«ã¯ãåŒã³åºããŸãã¯æ¿å ¥ããå ŽæããããŸãã ã¹ããªãŒã ãšå¯Ÿè©±ããããã«ããã®ã«ãŒãã³ã¯é¢æ°KeSetNotifEventFromIsrããã³KeSetSynchrEventFromIsrã䜿çšããŠãããã¹ã¬ããããèµ·åãããå¥ã®ã¹ã¬ããã匷å¶ããããšãã§ããŸãã
ISRã®å®è¡ã§ã¯ãã©ã®ã¹ã¬ããã«ãå±ããªãåå¥ã®ã¹ã¿ãã¯é åã䜿çšãããŸãã ããŒããŠã§ã¢å²ã蟌ã¿ãåŠçããå Žåãå²ã蟌ã¿ããã®æ»ãã¢ãã¬ã¹ïŒ2ãã€ãïŒã®ã¿ãã¹ã¬ããã¹ã¿ãã¯ã«ããã·ã¥ãããŸãã ä»ã®ãã£ã¹ãããã£é¢æ°ãã¹ã¿ãã¯ãä¹±çšããŸããã ãããã£ãŠãã¹ã¬ããã®æå°éã®ã¡ã¢ãªãäºçŽããããšã«ãããã¹ã¬ããã®ã¹ã¿ãã¯ãç¯çŽã§ããŸãã
ãããŒãžã£ãŒæ©èœã®æ®ãã¯ããŠãŒã¶ãŒããã°ã©ã ããåŒã³åºãããããšãæå³ããŠããŸããã
ç¹å®ã®ãããžã§ã¯ãã®ãã£ã¹ãããã£ãæ§æãã
ãœãããŠã§ã¢ãããžã§ã¯ãã§ãã£ã¹ãããã£ã䜿çšããã«ã¯ãèšå®ããå¿ èŠããããŸãã ãœãŒã¹ã³ãŒãã§ã¯ãåã¹ã¬ããã®ã¹ã¬ããããŒã¿æ§é ã«èšå ¥ããå¿ èŠããããŸãã å¡ãã€ã¶ãã®äŸã¯ãœãŒã¹ã«èšèŒãããŠããŸãã èšå ¥ããäž»ãªãã®ã¯ãã¹ããªãŒã ã¹ã¿ãã¯ã®ã¢ãã¬ã¹ã§ãã åã¹ã¬ããã®ã¹ã¿ãã¯ã®æåŸã®2ãã€ãã«ã¯ããã®ãšã³ããªãã€ã³ãã®ã¢ãã¬ã¹ãå«ãŸããŠããŸãã å®æ°NUM_THREADSãèšå®ããŠãã¹ã¬ããã®æ°ãæå®ããå¿ èŠããããŸãã ã·ã¹ãã å ã®ã¹ã¬ããã®æ倧æ°ã¯255ã§ãã
ã·ã¹ãã ã®èµ·åæã«ã¯ããã¹ãŠã®ã¹ã¬ãããæºåå®äºç¶æ ã§ããå¿ èŠããããŸãã æãäœãåªå 床ãæã€æåŸã®ã¹ã¬ããã¯ãã¹ã¿ã³ãã€ã¢ãŒãã«ç§»è¡ããªãã§ãã ããã ãã®ã¹ã¬ããã¯System Idle Processã«é¡äŒŒããŠãããåé¡ã解決ããŸããããæªäœ¿çšã®ããã»ããµãŒæéããçãããããšãç®çãšããŠããŸãã HALTã³ãã³ããåšæçã«å®è¡ããããšããå§ãããŸãã
ãŸãããã£ã¹ãããã£èªäœã®ã¡ã¢ãªå ã®é 眮ãå²ã蟌ã¿ãã¯ãã«ã®ããŒãã«ãããã³ãã£ã¹ãããã£ã®ISRã¢ãã¬ã¹ãæ§æããå¿ èŠããããŸãã ãŠãŒã¶ãŒISRã¯ISRãããŒãžã£ãŒããåŒã³åºãããŸãã
åŸ æ©ãªããžã§ã¯ãçšã®ã¡ã¢ãªã®å²ãåœãŠã¯ãååãšããŠç¡å¶éã®æ°ã«ããããšãã§ããŸããããŠãŒã¶ãŒã®è£éã«ä»»ãããŠããŸãã ãããã®ãªããžã§ã¯ããã¹ã¿ãã¯ã®ã°ããŒãã«ã¹ã¿ãã£ãã¯å€æ°ã«ä¿åããããããŒããããŒãžã£ãŒããããžã§ã¯ãã«æ¥ç¶ããŠãããŒãäžã®æå®ããããªããžã§ã¯ãã«ã¡ã¢ãªãå²ãåœãŠãããšãã§ããŸãã
åé¡ç¶æ³
ãã£ã¹ãããã£ã«ãã£ãŠå®è£ ãããå®è¡ç°å¢ã¯ãäžè¬çãªããªãšã³ããã£ããã«ãã¿ã¹ã¯ã·ã¹ãã ã«ãšã£ãŠåé¡ãšãªãç¶æ³ã«ãã£ãŠç¹åŸŽä»ããããŸã[1]ã ãããã«ã¯ã飢Starã競åç¶æ ãããã³åªå é äœã®é転ãå«ãŸããŸãã æåã®2ã€ã®åé¡ã¯ãé©åãªã·ã¹ãã èšèšãã¹ã¬ããéã®ã¿ã¹ã¯ã®åççãªåæ£ãåªå é äœã®åççãªéžæãããã³åæããªããã£ãïŒäž»ã«èªåãªã»ããåæã€ãã³ãïŒã®äœ¿çšã«ãã£ãŠè§£æ±ºã§ããŸãã 3çªç®ã®ç¶æ³ã¯ãã¹ã¬ãããšMutexã¿ã€ãã®åæãªããžã§ã¯ãã«åçãªåªå é äœããªãããããã£ã¹ãããã£ã§ã¯è§£æ±ºãããŸããã ãããã£ãŠãç¹å®ã®ãããžã§ã¯ãã§ãã®ç¶æ³ãçºçããå Žåã¯ããããèæ ®ããå¿ èŠã«å¿ããŠäžèšã®è³éããã£ã¹ãããã£ãŒã«è¿œå ããå¿ èŠããããŸãã
ãœãŒã¹ã³ãŒã
ãã£ã¹ãããã£ãŒã®ãœãŒã¹ã³ãŒãã¯ãããŒã¿æ§é ãé¢æ°ãã©ã¡ãŒã¿ãŒããã®ä»ã®æ å ±ã®èª¬æãšãšãã«ã GitHubããããŠã³ããŒãã§ããŸã ã
æåŠ
1.ãŠã£ãããã£ã¢ã èšäºã ãã«ãã¿ã¹ã¯ ã
2. ReactOS ã ãœãŒã¹ã³ãŒããntoskrnlã³ã³ããŒãã³ã
3. Windows WDKããã¥ã¡ã³ãã MSDN ã«ãŒãã«ã¢ãŒããã©ã€ããŒã®ã¢ãŒããã¯ãã£