NdisMRegisterInterrupt

NDIS_STATUS 

  NdisMRegisterInterrupt(

    OUT PNDIS_MINIPORT_INTERRUPT  Interrupt,

    IN NDIS_HANDLE  MiniportAdapterHandle,

    IN UINT  InterruptVector,

    IN UINT  InterruptLevel,

    IN BOOLEAN  RequestIsr,

    IN BOOLEAN  SharedInterrupt,

    IN NDIS_INTERRUPT_MODE  InterruptMode

    );

NdisMRegisterInterrupt´Â NIC µå¶óÀ̹öÀÇ MiniportIsr °ú MiniportHandleInterrupt ÇÔ¼ö»çÀÌ¿¡ ÀÌ¹Ì NdisMRegisterMiniport·Î µî·ÏµÈ, ¸ÊÇÎÀ» ¼³Á¤Çϰí NICÀÌ ÀÎÅÍ·´Æ®ÇÏ´Â ¹ö½º °ü·Ã º¤ÅÍ¿Í ·¹º§À» ¼³Á¤ÇÑ´Ù.

¸Å°³º¯¼ö

Interrupt
NdisMRegisterInterrupt°¡ ÃʱâÈ­Çϰí NdisMSynchronizeWithInterrupt¿¡ ´ëÇÑ °è¼ÓÀûÀΠȣÃâ¿¡¼­ ¹Ì´ÏÆ÷Æ®°¡ »ç¿ëÇÏ´Â ÇÚµéÀ» ¸®ÅÏÇÏ´Â ºÒºÐ¸íÇÑ ÀÎÅÍ·´Æ® °´Ã¼¸¦ Æ÷ÇÔÇϴ ȣÃâÀÚ ÇÒ´ç »óÁÖ ¸Þ¸ð¸®¸¦ °¡¸®Å²´Ù.

MiniportAdapterHandle
MiniportIntialize¿¡ ´ëÇÑ ÀÔ·Â ÇÚµéÀ» °¡¸®Å²´Ù.

InterruptVector
NIC¿¡ ÀÇÇØ »ç¿ëµÈ ¹ö½º °ü·Ã º¤ÅÍ ³Ñ¹ö¸¦ ÁöÁ¤ÇÑ´Ù.

InterruptLevel
ÀÎÅÍ·´Æ®¸¦ À§ÇÑ ¹ö½º °ü·Ã DIRQL¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ °ªÀº °ÅÀÇ Ç×»ó InterruptVectorÀÇ °Í°ú °°´Ù.

RequestIsr
¸¸¾à MiniportIsr ÇÔ¼ö°¡ NICÀÌ ÀÎÅÍ·´Æ®ÇÒ ¶§¸¶´Ù È£ÃâµÇ¾îÁø´Ù¸éÀº TRUE¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à NICÀÌ I/O ¹ö½º¿¡ ÀÖ´Â ´Ù¸¥ ÀåÄ¡µé°ú ÀÎÅÍ·´Æ®µéÀ» °øÀ¯ÇÏ´Ù¸éÀº, ÀÌ ¸Å°³º¯¼ö´Â TRUE·Î ¼³Á¤µÇ¾îÁú °ÍÀÌ´Ù.

SharedInterrupt
¸¸¾à I/O ¹ö½º¿¡ ÀÖ´Â ´Ù¸¥ ÀåÄ¡µéÀÌ ÀÌ·¯ÇÑ ÀÎÅÍ·´Æ® ¶óÀεéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù¸éÀº TRUE¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à ÀÌ ¸Å°³º¯¼ö°¡ FALSE·Î ¼³Á¤µÈ´Ù¸éÀº ¶Ç ÇϳªÀÇ ÀåÄ¡´Â ÀÌ¹Ì ·¹Áö½ºÆ®¸®³»¿¡ ÁÖ¾îÁø ÀÎÅÍ·´Æ® º¤Å͸¦ ¿ä±¸ÇÑ´Ù¸é, NdisMRegisterInterrupt´Â ½ÇÆÐÇÒ °ÍÀÌ´Ù.

InterruptMode
NICÀÌ ´ÙÀ½°ú °°Àº °ªµé Áß¿¡ Çϳª·Î¼­ ¹ß»ýÇÑ ÀÎÅÍ·´Æ® ŸÀÔÀ» ÁöÁ¤ÇÑ´Ù.

NdisInterruptLatched
ÀÎÅÍ·´Æ® ¶óÀο¡¼­ ³·Àºµ¥¼­ ³ôÀº °÷À¸·Î ÀüÀÌ¿¡ ÀÇÇØ ÀÎÅÍ·´Æ®µéÀÌ Æ®¸®°ÅµÈ´Ù.

NdisInterruptLevelSensitive
ÀÎÅÍ·´Æ®µéÀº ÀÎÅÍ·´Æ® ¶óÀÎÀÌ assertµÈ µ¿¾ÈÀº Ȱ¼ºÈ­µÈ´Ù.

¸®Åϰª

NdisMRegisterInterrupt´Â ´ÙÀ½°ú °°Àº Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù. :

NDIS_STATUS_SUCCESS
NDIS´Â ÀÎÅÍ·´Æ® °´Ã¼¸¦ ÃʱâÈ­Çϰí À¯È¿ÇÑ Interrupt ÇÚµéÀ» ¸®ÅÏÇÏ°í ¸¸¾à NICÀÌ IRQ¸¦ °øÀ¯ÇÏÁö ¾Ê´Â´Ù¸éÀº ÁÖ¾îÁø ÀÎÅÍ·´Æ® º¤ÅÍ¿Í °°Àº NICÀ» À§ÇØ ·¹Áö½ºÆ®¸®³»¿¡ Çϵå¿þ¾î ÀÚ¿øµéÀ» ¿ä±¸Çϰí MiniportISR(ȤÀº MiniportDisableInterrupt)¿Í ÀÎÅÍ·´Æ®°¡ NdisMRegisterInterrupt¿¡ ´ëÇÑ È£Ãâ¿¡¼­ ¿ä±¸µÈ °ÍÀÌ ¹ß»ýÇÒ ¶§ È£ÃâµÇ¾îÁö´Â °ü·ÃµÈ MiniportHandleInterrupt ÇÔ¼öµéÀ» ¼³Á¤ÇÑ´Ù.

NDIS_STATUS_RESOURCE_CONFLICT
·¹Áö½ºÆ®¸®³»¿¡ º¤ÅÍ È¤Àº ·¹º§¸¦ ¿ä±¸ÇÏ´Â ½Ãµµ°¡ °¡´ÉÇϸéÀº µå¶óÀ̹ö°¡ ÀÌ¹Ì ÀåÄ¡¸¦ À§ÇØ ¿ä±¸Ç߱⠶§¹®¿¡ ½ÇÆÐÇÑ´Ù. NdisMRegisterInterrupt´Â ¸¸¾à À̰ÍÀÌ ¹ß»ýÇÑ´Ù¸éÀº ¿¡·¯¸¦ ·Î±×ÇÑ´Ù.

NDIS_STATUS_RESOURCES
NDIS´Â NICÀ» À§ÇØ ·¹Áö½ºÆ®¸®³»¿¡ ÀÚ¿øµéÀ» ¿ä±¸ÇÏ´Â ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö ¾ø´Ù.

NDIS_STATUS_FAILURE
ÀÎÅÍ·´Æ® °´Ã¼¸¦ ÃʱâÈ­ÇÏ´Â ½Ãµµ°¡ ·¹Áö½ºÆ®¸®³»¿¡¼­ InterruptVector ȤÀº InterruptLevel¿¡ ¶Ç ÇϳªÀÇ µå¶óÀ̹öÀÇ ¿ì¼± ¿ä±¸ ¶§¹®¿¡ ½ÇÆÐÇÑ´Ù.

ÁÖ¼®

NIC µå¶óÀ̹ö´Â ¸¸¾à NICÀÌ ÀÎÅÍ·´Æ®µéÀ» ¹ß»ýÇÑ´Ù¸éÀº MiniportInitialize ÇÔ¼ö·ÎºÎÅÍ NdisMRegisterInterrupt¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ÀÎÅÍ·´Æ®µéÀ» ¹ß»ý¾ÈÇÏ´Â NICÀÇ µå¶óÀ̹ö´Â NdisMRegisterInterrupt ´ë½Å¿¡ NdisMInitializeTimer ¿Í NdisMSetPeriodicTimer ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

MiniportInitialize ÇÔ¼ö´Â NdisMRegisterInterrupt¸¦ È£ÃâÇϱâ Àü¿¡ NdisMSetAttributes ȤÀº NdisMSetAttributesEx ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.

¹ö½º °ü·Ã °ªµéÀ» ¾òÀº MiniportInitialize ÇÔ¼ö´Â ·¹Áö½ºÆ®¸®·ÎºÎÅÍ È¤Àº ¹ö½º ŸÀÔ Æ¯Á¤ NdisXxx ±¸¼º ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á NdisMRegisterInterrupt¿¡°Ô Àü´ÞµÇ¾îÁø´Ù.

¸¸¾à NdisMRegisterInterrupt¿¡ ´ëÇÑ È£ÃâÀÌ ½ÇÆÐÇÑ´Ù¸éÀº, MiniportInitialize ÇÔ¼ö´Â ÀÌ¹Ì NICÀ» À§ÇØ ÇÒ´çµÈ ¸ðµç ÀÚ¿øµéÀ» ÇØÁ¦ÇØ¾ß ÇÏ°í ±×·¯ÇÑ NICÀ» À§ÇØ ÃʱâÈ­°¡ ½ÇÆÐÇÑ´Ù.

NdisMRegisterInterrupt ÇÔ¼ö´Â InterruptVector(Ä«µå°¡ ½Ã½ºÅÛ¿¡ ÀÎÅÍ·´Æ®¸¦ À§ÇØ assertÇÑ ÀÎÅÍ·´Æ® ¶óÀÎ)¿Í InterruptLevel(½Ã½ºÅÛ¿¡ ÀÇÇØ ÇÒ´çµÈ ±×·¯ÇÑ ÀÎÅÍ·´Æ®ÀÇ Çϵå¿þ¾î ¿ì¼±±Ç Áï DIRQL) »çÀÌ¿¡ ±¸º°µÈ´Ù. Ç×»ó, ÀÌ·¯ÇÑ °ªµéÀº ¸¸¾à µå¶óÀ̹ö °³¹ßÀÚ°¡ ƯÁ¤ NICÀ» À§ÇØ ´Ù¸£´Ù´Â °ÍÀ» ¾ËÁö ¸øÇϰųª ¹Ì´ÏÆ÷Æ®°¡ Çö Ç÷§Æû¿¡¼­ ÀÚ¿øµéÀ» °øÀ¯ÇÏ´Â Çϳª ÀÌ»óÀÇ NICÀ» Á¦¾îÇÏÁö ¾Ê´Â´Ù¸éÀº °°Àº °ªÀ¸·Î ¿©°ÜÁú ¼ö ÀÖ´Ù.

¸¸¾à NICÀÌ I/O ¹ö½º¿¡¼­ ´Ù¸¥ ÀåÄ¡µé°ú °øÀ¯ÇÑ´Ù¸éÀº, NdisMRegisterInterruptÀÇ È£ÃâÀÚ´Â SharedInterrupt ¿Í RequestIsr ¸Å°³º¯¼öµéÀ» TRUE·Î ¼³Á¤ÇØ¾ß ÇÑ´Ù. ±×·¯ÇÑ NIC µå¶óÀ̹öÀÇ MiniportIsr ÇÔ¼ö´Â NICÀ» À§ÇÑ ÀÎÅÍ·´Æ®°¡ ³ªÅ¸³ªÁö ¾ÊÀ» ¶§ È£ÃâµÇ¾îÁú ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ È¯°æ¿¡¼­, MiniportIsrÀº °¡´ÉÇÏ´Ù¸éÀº, ÀÎÅÍ·´Æ®°¡ ÀνĵÇÁö ¾Ê°Å³ª NIC¿¡¼­ °¡´ÉÇÑ ÀÎÅÍ·´Æ®µéÀ» leavesÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ÀεðÄÉÀÌÆ®ÇÏ´Â FALSE¸¦ ¸®ÅÏÇÑ´Ù.

ÀÎÅÍ·´Æ®µéÀÌ NIC¿¡¼­ Àο¡À̺íµÉ ¶§, µå¶óÀ̹öÀÇ MiniportIsr ÇÔ¼ö´Â ÃʱâÈ­ÇÏ´Â µ¿¾È NdisMRegisterInterrupt¿¡ ´ëÇÑ ¼º°øÀûÀΠȣÃâ¿¡¼­ À̾î(following) °¢ ¶§¸¶´Ù(any time) È£ÃâµÇ¾îÁú ¼ö ÀÖ´Ù. ±×·¯ÇÑ µå¶óÀ̹öÀÇ MiniportInitialize ÇÔ¼ö´Â µå¶óÀ̹ö°¡ ÀÎÅÍ·´Æ®µéÀ» ´Ù·ç´Â µ¥ ÇÊ¿ä·ÎÇÏ´Â ¸ðµç »óŸ¦ ¼³Á¤ÇÒ ¶§±îÁö NdisMRegisterInterrupt¸¦ È£ÃâÇÒ Çʿ䰡 ¾ø´Ù. MiniportHandleInterrupt ÇÔ¼ö´Â ¸¸¾à µå¶óÀ̹öÀÇ MiniportInitialize ÇÔ¼ö°¡ ÇöÀç ½ÇÇàµÇ°í ÀÖ°í ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ´Ù¸éÀº ¿¬¼ÓµÈ ½ÇÇàÀ» À§ÇØ Å¥¿¡ ÀúÀåµÇÁö ¾Ê´Â´Ù.

IRQ¸¦ °øÀ¯ÇÏÁö ¾Ê´Â ´ëºÎºÐÀÇ NIC µå¶óÀ̹ö¿¡ ´ëÇØ¼­ MiniportISR ÇÔ¼ö´Â µå¶óÀ̹ö°¡ ÃʱâÈ­ÇÏ´Â µ¿¾ÈÀ» Á¦¿ÜÇØ¼­´Â µå¹°°Ô ½ÇÇàµÇ¾îÁø´Ù.(¾Ö¸Å) ±×·¯ÇÑ ¹Ì´ÏÆ÷Æ®´Â MiniportInitialize ÇÔ¼ö°¡ NdisMRegisterInterrupt ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§, RequstIsr¸¦ FALSE·Î ¼³Á¤ÇÏ°í ±×·¯ÇÑ µå¶óÀ̹ö´Â MiniportDisableInterrupt ÇÔ¼ö¸¦ °¡Áö°í ±×¸®°í °¡´ÉÇÏ´Ù¸éÀº MiniportEnableInterrupt ÇÔ¼ö¸¦ °¡Áø´Ù. NDIS ¶óÀ̺귯¸®´Â ±×¸®°í ³ª¼­ ÀÎÅÍ·´Æ®°¡ NIC¿¡¼­ ¹ß»ýÇÒ ¶§ µå¶óÀ̹öÀÇ MiniportDisableInterrupt ÇÔ¼ö¸¦ È£ÃâÇÏ°í µå¶óÀ̹öÀÇ MiniportHandleInterrupt ÇÔ¼ö´Â ÀÎÅÍ·´Æ®¸¦ À§ÇØ ´ëºÎºÐÀÇ I/O 󸮸¦ ÇÑ´Ù. MiniportHandleInterrupt´Â Á¦¾î¸¦ ¸®ÅÏÇϱâ Àü¿¡, NDIS´Â MiniportEnableInterruptÇÔ¼ö¸¦ È£ÃâÇϰųª MiniportHandleInterrupt ÇÔ¼ö´Â NIC¿¡ ´ëÇØ ´Ù½Ã ÀÎÅÍ·´Æ®µéÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù.

ISR¸¦ °¡Áø ¹Ì´ÏÆ÷Æ®´Â NdisMRegisterInterrupt¸¦ È£ÃâÇÒ ¶§ RequestIsr¸¦ TRUE·Î ¼³Á¤Çϰųª ȤÀº ±×·¸Áö ¾ÊÀºÁö°£¿¡ NDIS´Â ¿î¿µÃ¼Á¦¿¡°Ô ´Ù¸¥ ÀåÄ¡µé·ÎºÎÅÍ ÀÎÅÍ·´Æ®µéÀº ºí·°µÇÁö ¾Ê±â À§ÇØ ÀÎÅÍ·´Æ®¸¦ ¾Ë¸°´Ù.(acknowledges)

¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ NdisMRegisterInterrupt¸¦ È£ÃâÇÒ ¶§ RequestIsr¸¦ TRUE·Î ¼³Á¤ÇÑ´Ù¸éÀº ³×Æ®¿öÅ© ÀÎÅÍÆäÀ̽º Ä«µåÀÇ »óŸ¦ ¼³Á¤ÇÔÀ¸·Î½á NIC¿¡ ÀÎÅÍ·´Æ®¸¦ dismiss ÇØ¾ß ÇÏ°í ±×·¡¼­ NICÀÌ ´õ ÀÌ»ó ÀÎÅÍ·´Æ®¸¦ assertÇÑ´Ù. ÀÎÅÍ·´Æ®µéÀÌ ÀÎÅÍ·´Æ®ÀÇ dismissal ÈÄ¿¡(following) NIC¿¡¼­ Àο¡ÀÌºí »óÅ·Π³²À» ¼ö Àְųª ȤÀº ±×µéÀº µå¶óÀ̹ö ¼³°è¿¡ ÀÇÁ¸ÇÏ¿© ºÒ°¡´ÉÇÑ »óÅ·ΠµÉ ¼ö ÀÖ´Ù. ±×·¯ÇÑ dismissalÀÇ Å¸À̹ÖÀº µå¶óÀ̹ö°¡ ´ÙÀ½°ú °°Àº NdisMRegisterInterrupt¸¦ È£ÃâÇÒ ¶§, ÁöÁ¤µÈ InterruptMode¿¡ ÀÇÁ¸ÇÑ´Ù.

  • NdisInterruptLevelSensitive ÀÎÅÍ·´Æ®¿¡ ´ëÇØ, MiniportISRÀº NICÀÌ ±×·¯ÇÑ ÀÎÅÍ·´Æ®¸¦ ¹ß»ýÇÑ °Íó·³ °¢ ÀÎÅÍ·´ºz dismiss ÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸éÀº, ÀÎÅÍ·´Æ®´Â MiniportISRÀÌ Á¦¾î¸¦ ¸®ÅÏÇÏÀÚ ¸¶ÀÚ, NIC¿¡°Ô ´Ù½Ã assertµÇ¾îÁø´Ù. ¸¸¾à MiniportISRÀÌ NICÀÌ Æ¯Á¤ ÀÎÅÍ·´Æ®¸¦ ¹ß»ýÇÏÁö ¾Ê´Â °ÍÀ» °áÁ¤ÇÑ´Ù¸éÀº, °°Àº ¹ö½º¿¡ ÀÖ´Â ´Ù¸¥ ÀåÄ¡µéÀ» À§ÇÑ ISRµéÀÌ Áï½Ã ½ÇÁ¦ ±×·¯ÇÑ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â ÀåÄ¡¿¡ ´ëÇØ ÀÎÅÍ·´Æ®¸¦ dismissÇϱâ À§ÇØ È£ÃâµÇ¾îÁú ¼ö ÀÖ°Ô °¡´ÉÇÏ´Ù¸éÀº »¡¸® FALSE·Î Á¦¾î¸¦ ¸®ÅÏÇØ¾ß ÇÑ´Ù.
  • NdisInterruptLatched ÀÎÅÍ·´Æ®µéÀ» À§ÇØ, NIC¿¡¼­ ÀÎÅÍ·´Æ®¸¦ dismiss ÇÏ´Â °ÍÀº °øÀ¯µÈ ÀÎÅÍ·´Æ®µéÀ» À§ÇØ time-critical ÇÏÁö ¾Ê´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ MiniportISR¿¡ ´ëÇÑ °¢ È£ÃâÀÌ °ü·ÃµÈ MiniportHandleInterrupt ÇÔ¼ö¿¡ ´ëÇÑ ¿¬¼ÓµÈ È£ÃâÀ» ¾ß±âÇϵµ·Ï ¼³°èµÇ¾îÁø´Ù¸éÀº, MiniportHandleInterrupt ÇÔ¼ö´Â NIC¿¡¼­ ÀÎÅÍ·´Æ®¸¦ dismiss ÇÒ ¼ö ÀÖ´Ù. ´ëüÀûÀ¸·Î, ±×·¯ÇÑ µå¶óÀ̹ö´Â NdisMRegisterInterrupt ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ RequestIsr¸¦ FALSE·Î ¼³Á¤ÇÒ ¼ö ÀÖ°í MiniportDisableInterrupt ÇÔ¼ö¸¦ Á¦°øÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â ¸¸¾à MiniportHalt ȤÀº MiniportInitialize ÇÔ¼ö°¡ ÇöÀç ½ÇÇàÇϰí ÀÖÁö ¾Ê´Ù¸éÀº MiniportISR ´ë½Å¿¡ È£ÃâµÇ¾îÁú °ÍÀÌ´Ù.
¹Ì´ÏÆ÷Æ®°¡ full-duplex º¸³»±â¿Í ¹Þ±â¸¦ Á¦°øÇÒ ¶§, NDIS´Â º¸³»±âµéÀ» À§ÇØ MiniportISR ȤÀº MiniportDisableInterrupt ÇÔ¼ö¿¡ ´ëÇÑ È£ÃâµéÀ» Á÷·ÄÈ­ÇÑ´Ù. NDIS´Â ´Ù¸£°Ô ÀÎÅÍ·´Æ®µéÀ» ¾ß±âÇÒ ¼ö ÀÖ´Â ¸ðµç ´Ù¸¥ ¿¬»êµéÀ» À§ÇØ MiniportISR ȤÀº MiniportDisableInterrupt ÇÔ¼ö¿¡ ´ëÇÑ È£ÃâµéÀ» Á÷·ÄÈ­ÇÑ´Ù. MiniportReset ÇÔ¼ö¿¡ ´ëÇÑ È£ÃâµéÀº µ¿±âÈ­µÈ ±×¸®°í µ¿±âÈ­ÀÌ´Ù.; NDIS´Â full-duplex ¹Ì´ÏÆ÷Æ®³»¿¡¼­ ¸ðµç ´Ù¸¥ ÄÚµå °æ·ÎµéÀÌ ÀåÄ¡ ¸®¼Â ¿¬»êÀÌ ¹ß»ýÇÏ´Â µ¿¾È ÁøÀԵǴ °ÍÀ» ¸·´Â´Ù.

¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ full-duplex º¸³»±âµé ¹Þ±âµéÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù¸éÀº, NDIS´Â ¹Ì´ÏÆ÷Æ®°¡ Á¦¾îÇÏ´Â ¾î¶² NICÀ» À§ÇØ MiniportISR ȤÀº MiniportDisableInterrupt ÇÔ¼ö¿¡ ´ëÇÑ ¸ðµç È£ÃâµéÀ» Á÷·ÄÈ­ÇÑ´Ù. ±×·¯ÇÑ µå¶óÀ̹öÀÇ MiniportISR ȤÀº MiniportDisableInterrupt ÇÔ¼ö°¡ ƯÁ¤ NIC ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â µ¿¾È¿¡, SMP ±â°è¿¡¼­ ¶Ç ÇϳªÀÇ ÇÁ·Î¼¼¼­¿¡¼­ °°Àº NICÀ¸·ÎºÎÅÍ µÎ ¹øÂ° ÀÎÅÍ·´Æ®¸¦ ó¸®Çϱâ À§ÇØ È£ÃâµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.

±×·¯³ª, ÇÑ ÀåÄ¡ ÀÌ»óÀ» Á¦¾îÇÏ´Â ¾î¶² µå¶óÀ̹öÀÇ ISR(ȤÀº MiniportDisableInterrupt ÇÔ¼ö)Àº ¸¸¾à ±×·¯ÇÑ µå¶óÀ̹öÀÇ ÀåÄ¡µéÀÌ °ÅÀÇ µ¿½Ã¿¡ ÀÎÅÍ·´Æ®¸¦ ¹ß»ýÇÏ´Â °ÍÀÌ ¹ß»ýÇϰí ÀÎÅÍ·´Æ®µéÀÌ NIC¿¡ ÀÇÇØ Àο¡À̺íµÈ´Ù¸éÀº SMP ±â°è¿¡¼­ µ¿½Ã¿¡ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.

¸¸¾à ÀÎÅÍ·´Æ®°¡ ¶Ç ÇϳªÀÇ µå¶óÀ̹ö ÇÔ¼ö°¡ MiniportISR ȤÀº MiniportDisableInterrupt ÇÔ¼ö·ÎºÎÅÍ Á¢±ÙµÉ ¼ö ÀÖ´Â ÀÚ¿øµéÀ» Á¢±ÙÇÏ´Â µ¿¾È ¹ß»ýÇÒ ¼ö ÀÖ´Ù¸éÀº ´Ù¸¥ ÇÔ¼ö´Â µå¶óÀ̹ö Á¦°ø MiniportSynchronizeISR ÇÔ¼ö°¡ DIRQL¿¡¼­ °øÀ¯µÈ ÀÚ¿øµéÀ» Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï NdisMSynchronizeWithInterrupt ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.

NdisMRegisterInterrupt ÀÇ È£ÃâÀÚµéÀº IRQL PASSIVE_LEVEL¿¡¼­ ½ÇÇàÇÑ´Ù.