DDK¼³Ä¡´Â
Åë»óÀûÀ¸·Î VC++À» ¸ÕÀú ¼³Ä¡ÇÏ°í ³ÈÄ¿¡ ¼³Ä¡ ÇÏ°Ô µÈ´Ù. ´Ù¸¥ ¿¹¿Ü´Â ´ÙÀ½À» Âü°íÇϱâ¹Ù¶õ´Ù.
1) NT4.0ÀÇ °æ¿ì´Â VC++´ë½Å SDK¸¦ ¼³Ä¡ÇÏ°í ³ÈÄ DDK¸¦ ¼³Ä¡ÇØ¾ß °¢Á¾ pathµéÀÌ
¹Ù·Î ¼³Á¤µÈ´Ù. ´Ü DDK¸¦ ¼³Ä¡ÇÏ°í³ª¸é
DDK\bin\setenv.bat ÆÄÀÏÀÌ »ý±â°í ÀÌ ÆÄÀÏ¿¡¼ mstools °ü·ÃµÈ ºÎºÐÀ»
ÁÖ¼® ó¸®Çϸé VC++ÀÇ ÄÄÆÄÀÏ·¯(cl.exe)¿Í
¸µÄ¿(link.exe)¸¦ »ç¿ëÇÒ¼öµµ ÀÖ´Ù.
2) 9x °è¿ÀÇ °æ¿ì DDK\bin\link.exe¸¦ ´Ù¸¥ À̸§À¸·Î ¼öÁ¤(rename)Çؼ
VC++ÀÇ link.exe°¡ È£- ÃâµÇµµ·ÏÇؾß
Á¤»óÀûÀ¸·Î linkµÉ¼ö ÀÖÀ»¼ö ÀÖ´Ù.(DDK ¹öÀü¿¡ µû¶ó ÇÊ¿ä ¾ø´Â °æ¿ìµµ ÀÖ´Ù.)
3) XPÀÇ °æ¿ì´Â DDK¾È¿¡ ÄÄÆÄÀÏ·¯¿Í ¸µÄ¿°¡ µé¾î ÀÖÀ¸¹Ç·Î VC++µîÀÌ ¼³Ä¡ µÇÁö ¾Ê¾Æµµ
µÈ´Ù. |
|
|
|
|
|
1)
´ë»ó O/S´Â ¹«¾ùÀΰ¡? : |
°³¹ßÇÏ·Á´Â OS¿¡ µû¶ó
/ °³¹ß ¹æ¹ýÀÌ ´Þ¶óÁú¼ö ÀÖ´Ù. 9x°è¿(windows95,windows98,ME)ÀÇ OS¿¡¼´Â
WDMÀÌ |
Áö¿øÇÏÁö ¾Ê´Â µå¶óÀ̹ö¸¦
Vxd¶ó´Â ¹æ½ÄÀ¸·Î °³¹ß ÇÏ¿´°í Windows NT °è¿°ú´Â ȣȯµÇÁö ¾Ê´Â µå¶óÀ̹öÀÌ |
¹Ç·Î °¢°¢ÀÇ Ç÷§Æû
¸¶´Ù µå¶óÀ̹ö¸¦ µû·Î °³¹ßÇؾ߸¸ ÇÑ´Ù. |
OS¿¡ µû¶ó¼ Áö¿øÇÏÁö
¾Ê´Â µå¶óÀ̹ö°¡ ÀÖÀ»¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é USB ÀÇ °æ¿ì NT4.0¿¡¼´Â USB bus µå¶óÀ̹ö |
¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î
WDMÀ¸·Î °³¹ßµÇ´Â USB µå¶óÀ̹öµéÀÌ µ¿ÀÛÇÒ¼ö ¾ø´Ù. |
¶ÇÇÑ USB Mass
Storage class¸¦ Áö¿øÇÏ´Â ÀåÄ¡ÀÇ °æ¿ì ME³ª 2000,XP¿¡¼´Â ÇØ´ç µå¶óÀ̹ö¸¦ OS°¡
°¡Áö°í |
ÀÖÀ¸³ª Windosw98¿¡¼´Â
µû·Î µå¶óÀ̹ö¸¦ °³¹ßÇØ¾ß ÇÑ´Ù. |
ÀÌ¿Ü¿¡µµ OSÀÇ Æ¯¼º¿¡
µû¶ó °³¹ß¹æ¹ýÀ̳ª ¹üÀ§°¡ ¸¹ÀÌ ´Þ¶óÁú¼ö Àֱ⠶§¹®¿¡ Áö¿øÇÏ·Á´Â OS¿Í ÀÌÀÇ Æ¯¼º¿¡ |
°üÇؼ ¸ÕÀú »ìÆ캸¾Æ¾ß
ÇÑ´Ù. |
|
2)
°³¹ßÇÏ·Á´Â µå¶óÀ̹ö´Â µå¶óÀ̹ö °èÃþÁß ¾îµð¿¡ Æ÷ÇԵǴ°¡? |
µå¶óÀ̹ö´Â ¸¹Àº °æ¿ì
ƯÁ¤ °èÃþ¿¡ Æ÷ÇԵȴÙ. °³¹ßÇÏ·Á´Â µå¶óÀ̹ö°¡ Æ÷ÇԵǴ °èÃþ¿¡ µû¶ó °³¹ß ¹æ¹ýÀÌ ´Þ¶óÁø´Ù. |
|
3)
Çϵå¿þ¾îÀûÀΠƯ¼ºµéÀº ¹«¾ùÀΰ¡? |
Á¦¾î ÇÏ·Á´Â Çϵå¿þ¾îÀÇ
Ư¼ºÀ» Àß ÆľÇÇؾßÇÑ´Ù. DMA¸¦ »ç¿ëÇÏ´ÂÁö ¹ö½º ŸÀÔÀº ¹«¾ùÀÎÁö, ÀÎÅÍ·´Æ®(inter- |
rupt)³ª IO¹æ¹ýµî¿¡
°üÇؼ ¼¼½ÉÈ÷ »ìÆ캸°í À̸¦ ÀÌÇØÇؾßÇÑ´Ù. |
|
4) µ¿±âÈ(synchronizion)¹®Á¦µéÀÌ ¹ß»ýÇÒ ¿ä¼Ò´Â ¹«¾úÀΰ¡? |
»ç¿ëÇÏ·Á´Â ¾îÇø®ÄÉÀ̼ÇÀ̳ª
´Ù¸¥ µå¶óÀ̹ö¿ÍÀÇ °ü°è¿Í IOÀÛ¾÷À» Ãë¼ÒÇϰųª ´Ù¸¥ IO¸¦ ½ÃµµÇÒ ¶§, ¶Ç´Â ÀåÄ¡°¡ |
¿¹±âÄ¡ ¾Ê°Ô Á¦°ÅµÉ
¶§ ¼·Î°£¿¡ µ¿±âÈ¿Í °ü·ÃµÈ ¹®Á¦Á¡µéÀÌ ¹ß»ýÇÒ¸¸ÇÑ ºÎºÐÀÌ ¾ø´ÂÁö, ÀÖ´Ù¸é ¾î¶»°Ô À̸¦ ±Øº¹ |
ÇØ¾ß ÇÏ´ÂÁö ¸ÕÀú °èȹÇؾß
ÇÑ´Ù. |
|
5)
µð¹ö±ë ¹× À¯Áö º¸¼ö´Â ¾î¶»°Ô ÇÒ°ÍÀΰ¡? |
¸¹Àº °í±Þ±â¹ýµéÀ» »ç¿ëÇÏ´Â
°ÍÀÌ ¹ÝµíÀÌ ÁÁÀº ÇÁ·Î±×·¥Àº ¾Æ´Ï´Ù. ÃßÈÄÀÇ µð¹ö±ëÀ̳ª À¯Áöº¸¼ö¿¡ °É¸²µ¹ÀÌ |
µÉ¸¸ÇÑ °³¹ß ¹æ¹ýÀ̳ª
¼³°è´Â ¾ø´ÂÁö »ý°¢ÇØ º¸°í °¡´ÉÇϸé OS¿¡¼ Á¦°øÇÏ´Â ¹æ¹ýµéÀ» »ç¿ëÇؼ µå¶óÀ̹ö¸¦ |
°³¹ßÇÒ¼ö ÀÖ°Ô ÇÏÀÚ. |
|
6)
¾îÇø®ÄÉÀ̼ǰú´Â ¾î¶»°Ô µ¥ÀÌÅ͸¦ ÁÖ°í ¹ÞÀ» °ÍÀΰ¡? |
¾îÇø®ÄÉÀ̼ǰú »óÈ£
Åë½ÅÇÏ´Â ºÎºÐµµ ¼¼½ÉÇÑ ÁÖÀÇ°¡ ÇÊ¿äÇÏ´Ù. ¹öÆÛ»ç¿ë¹ý°ú |
|
7)
I/O ¼Óµµ¿¡ ÀÖ¾î¼ ¹®Á¦µÉ ºÎºÐÀº ¾ø´Â°¡? |
Çϵå¿þ¾î ½ºÆÑ¿¡¼ ¾ð±ÞÇÏ´Â
IO¼Óµµ°¡ ¹ÝµíÀÌ ±×´ë·Î À¯ÁöµÇÁö´Â ¾Ê´Â´Ù. ¶ÇÇÑ °°Àº ¹ö½º¸¦ »ç¿ëÇÏ´Â |
Çϵå¿þ¾î¶ó°í ÇÏ´õ¶óµµ
IO ¹æ¹ý¿¡ µû¶ó ¼ÓµµÂ÷ÀÌ°¡ ¸¹ÀÌ ³¯¼ö ÀÖ´Ù. |
|
8)
ÇØ´ç ±â´ÉµéÀ» »ç¿ëÇÒ¶§ IRQLÀº ¹®Á¦°¡ ¹ß»ýÇÏÁö ¾Ê´Â°¡? |
µå¶óÀ̹öÀÇ ¸ðµç ÇÔ¼öµéÀº
IRQLÀ̶ó´Â Ưº°ÇÑ ·¹º§¿¡¼ ½ÇÇàµÇ°í ¸ðµç ÇÔ¼öµéÀº »ç¿ëµÉ¼ö ÀÖ´Â IRQLÀÌ |
¸í½Ã µÇ¾î ÀÖ´Ù. ±¸ÇöÇÏ·Á´Â
±â´ÉÀÌ ÇØ´ç IRQL¿¡¼ µ¿ÀÛÇÏ´ÂÁö Àß °ËÅäÇØ¾ß ÇÑ´Ù. |
|
|
|
|
|
3Àý¿¡¼ ¼Ò°³µÇ´Â ³»¿ëµéÀº ¼³Ä¡µÈ OS³ª
DDK ¹öÀü¿¡ µû¶ó ³»¿ë»ó ¾à°£ÀÇ º¯µ¿ÀÌ ÀÖÀ»¼ö ÀÖ´Ù. ÇÏÁö¸¸
Å« È帧»óÀÇ º¯È´Â ¾øÀ¸¹Ç·Î ´ÙÀ½ ³»¿ëµéÀ» Âü°íÇϱ⠹ٶõ´Ù. 1)
ºôµå ¹æ¹ý 1.1
DDK¸¦ ¼³Ä¡ÇÑ´Ù. 1.2 DDK¹öÀüÀ̳ª O/S¿¡ µû¶ó
¾à°£ÀÇ Â÷ÀÌ´Â ÀÖ°ÚÁö¸¸ ´ÙÀ½[±×¸²3-1 °³¹ßȯ°æ]°ú °°ÀÌ Cheked Build- Environment³ª
Free Build Environment ¸¦ ¿¬´Ù.
|
|
|
[±×¸²3-1 °³¹ßȯ°æ] |
/
1.3
/ ¼Ò½º°¡ ÀÖ´Â µð·ºÅ丮·Î À̵¿ÇÑ´Ù. |
|
1.4
Build.exe·Î µå¶óÀ̹ö¸¦ ºôµåÇÑ´Ù. ?ewc´Â build.exeÀÇ ºôµå ¿É¼ÇÀ¸·Î build
/? ¶ó°í ÀÔ·ÂÇϸé
¼¼ºÎºôµå ¿É¼ÇÀ» È®ÀÎÇÒ¼ö
ÀÖ´Ù. À̶§ -ewcµîÀÇ ¿É¼ÇÀº ´ë¼Ò¹®ÀÚ¿¡ µû¶ó ´Ù¸¥ Àǹ̸¦ °¡Áö¹Ç·Î
Á¤È®È÷ »ç¿ëÇØ¾ß ÇÑ´Ù. |
|
|
/
µå¶óÀ̹ö¸¦ »ý¼ºÇÒ ¶§ »ç¿ëÇÏ´Â build.exe´Â
DDK ¾È¿¡ Æ÷ÇԵǾî ÀÖ´Â À¯Æ¿¸®Æ¼ ÇÁ·Î±×·¥À¸·Î sources¶ó´Â
ÆÄÀÏÀ» ÂüÁ¶Çؼ µå¶óÀ̹ö¸¦ »ý¼ºÇÑ´Ù.
±×·³ DDK¿¡¼ Á¦°øÇÏ´Â °¡Àå ´Ü¼øÇÑ µå¶óÀ̹öÀÎ portio¸¦ °¡Áö°í µå¶óÀ̹ö¸¦ »ý¼ºÇÏ°í
¼³Ä¡ÇÏ´Â °úÁ¤À» »ìÆ캸ÀÚ.
Áö±ÝºÎÅÍ »ç¿ëÇÒ ¿¹Á¦´Â DDK¸¦ ¼³Ä¡ÇÏ°í ´ÙÀ½ÀÇ Æú´õ¿¡¼ ã¾Æ º¼¼ö ÀÖ´Ù.
WINDDK\src\gene/ral\portio
WINDDK\src\general\portio\sys Æú´õ¾È¿¡´Â µå¶óÀ̹ö ¼Ò½º°¡ µé¾î ÀÖ´Ù.
WINDDK\src\general\portio\gpdread Æú´õ¾È¿¡´Â À§ÀÇ µå¶óÀ̹ö¸¦ ÀÌ¿ëÇؼ
ƯÁ¤ Æ÷Æ®(port)¿¡¼ °ªÀ»
ÀÐ¾î ¿À´Â ÇÁ·Î±×·¥ÀÇ ¼Ò½º°¡ µé¾î ÀÖ´Ù.
WINDDK\src\general\portio\gpdread Æú´õ¾È¿¡´Â À§ÀÇ µå¶óÀ̹ö¸¦ ÀÌ¿ëÇؼ
ƯÁ¤ Æ÷Æ®(port)¿¡ °ªÀ»
Àû´Â ÇÁ·Î±×·¥ÀÇ ¼Ò½º°¡ µé¾î ÀÖ´Ù.
¿ì¼± sys Æú´õ¸¦ »ìÆ캸ÀÚ. ÇØ´ç Æú´õ¿¡ ÀÖ´Â ÆÄÀϵéÀº °¢°¢ ´ÙÀ½°ú °°Àº ³»¿ëµéÀ» ´ã°í
ÀÖ´Ù.
genport.c : µå¶óÀ̹ö¸¦ ±¸¼ºÇÏ°í ÀÖ´Â ¸ðµç ÄÚµåµéÀÌ µé¾î ÀÖ´Ù.
/ GENPORT.H : ÇÔ¼ö¼±¾ð°ú ¸î°¡Áö ¸ÞÅ©·Î(macro)°¡ µé¾î ÀÖ´Ù.
GENPORT.RC : µå¶óÀ̹öÀÇ ¸®¼Ò½º(resource)°¡ µé¾î ÀÖ´Ù.
MAKEFILE : Ç¥ÁØ ¸ÞÀÌÅ© ÆÄÀÏ·Î nmake.exe°¡ ÂüÁ¶ÇÏ´Â ÆÄÀÏÀÌ´Ù.
SOURCES : build.exe°¡ ÂüÁ¶ÇÏ´Â ÆÄÀÏ·Î »ý¼ºµÉ µå¶óÀ̹öÀÇ
À̸§À» ºñ·ÔÇؼ µå¶óÀÌ ºôµå¿Í °ü·ÃµÈ ³»¿ëµéÀÌ ¼¼úµÇ¾î ÀÖ´Ù.
µå¶óÀ̹ö¸¦ ºôµåÇÒ ¶§ Á÷Á¢ ÂüÁ¶ÇÏ´Â ÆÄÀÏÀÎ SOURCESÆÄÀÏÀº ´ÙÀ½°ú °°Àº ³»¿ëÀÌ Æ÷ÇԵǾî
ÀÖ´Ù.
SOURCESÆÄÀÏ¿¡¼ ÁÖ¼®Àº ¡°#¡±À» »ç¿ëÇÑ´Ù.
|
|
¤ýARGETNAME=genport
#genport.sys¶ó´Â À̸§À¸·Î µå¶óÀ̹ö¸¦ »ý¼ºÇ϶ó. ¤ýTARGETPATH=obj#¡±objType_Version_Cpu\<cpu_type>¡±
Æú´õ¿¡ ÄÄÆÄÀÏµÈ .obj ÆÄÀϵéÀ» À§Ä¡ ½ÃÅ°¶ó. Intel
x86 cpuÀÇ °æ¿ì <cpu_type>´Â i386ÀÌ µÈ´Ù.
¤ýTARGETTYPE=DRIVER#»ý¼ºµÇ´Â ÆÄÀÏÀº µå¶óÀ̹öÀÌ´Ù.
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN
PUNICODE_STRING RegistryPath)ÇÔ¼ö¸¦ entry point·Î
¼³Á¤Çؼ Ä¿³ÎÀÌ À§Ä¡ÇÑ °÷¿¡¼ µ¿ÀÛÇÏ´Â
¸ðµâ·Î ÄÄÆÄÀÏ ¹× ¸µÅ©¸¦ ½ÇÇàÇ϶ó. ¤ýINCLUDES=..\#»óÀ§
Æú´õ¸¦ include path¿¡ Ãß°¡Ç϶ó. ¤ýTARGETLIBS=
$(DDK_LIB_PATH)\wdmsec.lib# wdmsec.lib¸¦ ¸µÅ©µÇ´Â ¶óÀ̺귯¸®¿¡
Ãß°¡Ç϶ó. ¤ýSOURCES=genport.c
genport.rc #genport.c¿Í genport.rc µÎ ÆÄÀÏÀ» ÄÄÆÄÀÏ ¹×
¸µÅ©Ç϶ó. |
|
|
2)
¼³Ä¡ ¹æ¹ý(windows2000) |
|
|
2-1.
Á¦¾îÆÇÀÇ ¡°Çϵå¿þ¾î Ãß°¡ Á¦°Å¡±¸¦ ´õºíŬ¸¯ÇÑ´Ù. |
|
|
2-2.
¡°´ÙÀ½¡±À» Ŭ¸¯ÇÑ´Ù. |
|
|
2-3
¡°ÀåÄ¡ Ãß°¡ / ¹®Á¦ ÇذᡱÀ» ¼±ÅÃÇÏ°í ¡°´ÙÀ½¡±À» Ŭ¸¯ÇÑ´Ù. |
|
|
2-4
¡°»õ ÀåÄ¡Ãß°¡¡±¸¦ ¼±ÅÃÇÏ°í ¡°´ÙÀ½¡±À» Ŭ¸¯ÇÑ´Ù. |
|
|
2-5
¡°¾Æ´Ï¿À, ¸ñ·Ï¿¡¼ Çϵå¿þ¾î¸¦ ¼±ÅÃÇÕ´Ï´Ù¡±¸¦ ¼±ÅÃÇÏ°í ¡°´ÙÀ½¡±À» Ŭ¸¯ÇÑ´Ù.
|
|
2-6
¡°±âŸÀåÄ¡¡±¸¦ ¼±ÅÃÇÏ°í ¡°´ÙÀ½¡±À» Ŭ¸¯ÇÑ´Ù. |
|
|
2-7
¡°µð½ºÅ© ÀÖÀ½¡± ¼±ÅÃÇÏ°í genport.inf ÆÄÀÏÀ» ã¾Æ¼ ¼±ÅÃÇØ ÁØ´Ù. |
|
|
2-8
Àû´çÇÑ ¸®¼Ò½º¸¦ ¼±ÅÃÇÏ°í ´ÙÀ½À» ´©¸¥´Ù. |
|
|
2-9
¸¶Ä§À» ´·¯¼ ¼³Ä¡¸¦ ¿Ï·áÇÑ´Ù. |
|
3.
µð¹ö±ë °úÁ¤ |
1)
»ç¿ë °¡´ÉÇÑ KernelMode Debugger 1-1
SoftIce 1-2 WinDbg
2) Memory leak °Ë»ç
2-1 ExAllocatePool()µîÀÇ ÇÔ¼ö´Â ¹ÝµíÀÌ ExFreePool()µîÀÇ
ÇÔ¼ö¸¦ È£ÃâÇÏ´ÂÁö È®ÀÎ
2-2 Irp³ª ±âŸ UnicodeString °°Àº/ ÀڷᱸÁ¶µéÀÇ
ÇØÁ¦°Ë»ç
2-3 bound ckecker¿Í °°Àº ÅøÀÇ µµ¿òÀ» ¾ò¾î
¸Þ¸ð¸®°ü·Ã¹®Á¦µéÀÌ ¾ø´ÂÁö È®ÀÎÇÑ´Ù.
3) ¹®Á¦ ¹ß»ý½Ã check point
3-1 Çϵå¿þ¾îÀûÀÎ °áÇÔÀº ¾ø´Â°¡?
3-2 ¸Þ¸ð¸® ´©¼ö´Â ¾ø´Â°¡?
3-3 ¸Þ¸ð¸®³ª ÀڷᱸÁ¶µéÀ» ÂüÁ¶ÇÒ¶§ Assertµî/À¸·Î ÃæºÐÈ÷
°Ë»çÇÏ°í Àִ°¡?
3-4 Crashl DumpÆÄÀÏ ºÐ¼®
3-5 ¼¼¼¼ÇÑ ºÎºÐ±îÁö µð¹ö°Å·Î È®ÀÎÇߴ°¡?
3-6 »õ·Ó°Ô Ãß°¡µÈ ¸ðµâÀº ÃæºÐÈ÷ °ËÁõµÇ¾ú´Â°¡?
3-7 »ç¿ëÇÏ´Â ÇÔ¼öµéÀº ÀûÀýÇÑ IRQL¿¡¼ »ç¿ëµÇ°í Àִ°¡?
ÀÌ»óÀ¸·Î µå¶óÀ̹ö °³¹ß¿¡ °üÇÑ Àü¹ÝÀûÀÎ ³»¿ëµéÀ» »ìÆì º¸/¾Ò´Ù. óÀ½ µå¶óÀ̹ö¸¦ °³¹ßÇϽ÷Á´Â
ºÐµé¿¡°Ô
ºÎµð µµ¿òÀÌ µÇ±â¸¦ ¹Ù¶ó¸ç °¢Ç׸ñµéÀÇ ±¸Ã¼ÀûÀÎ ³»¿ëµéÀº DriverOnlineÀÇ ¿©·¯ °Á¿Í
QnA¸¦ ÅëÇØ ¿©·¯-
ºÐµéÀÇ Áö½ÄÀ¸·Î ¸¸µé¾î°¡±â¸¦ ¹Ù¶õ´Ù.
|
|