ProtocolCoStatus

VOID

  ProtocolCoStatus(

      IN NDIS_HANDLE  ProtocolBindingContext,

      IN NDIS_HANDLE  ProtocolVcContext  OPTIONAL,

      IN NDIS_STATUS  GeneralStatus,

      IN PVOID  StatusBuffer,

      IN UINT  StatusBufferSize

      );

ProtocolCoStatus ÇÔ¼ö´Â ¾Æ·¡ µå¶óÀ̹ö ȤÀº NDIS¿¡ ÀÇÇØ ¿Ã·ÁÁö´Â »óÅ º¯È­ ÁÖÁöµéÀ» ´Ù·ç´Â ¿¬°á ÁöÇâ ÇÁ·ÎÅäÄÝ µå¶óÀ̹öµé¿¡¼­ ÇÊ¿äÇÑ µå¶óÀ̹ö ÇÔ¼öÀÌ´Ù.

¸Å°³º¯¼ö

ProtocolBindingContext
ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ¹ÙÀεù ´ç ·±Å¸ÀÓ »óŸ¦ À¯ÁöÇÏ´Â ÇÁ·ÎÅäÄÝ ÇÒ´ç ÄÁÅױךÀ ¿µ¿ª¿¡ ´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. µå¶óÀ̹ö´Â NdisOpenAdapter ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ÀÌ ÇÚµéÀ» Á¦°øÇÑ´Ù.

ProtocolVcContext
ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â VC´ç ·±Å¸ÀÓ »óŸ¦ À¯ÁöÇÏ´Â ÇÁ·ÎÅäÄÝ ÇÒ´ç ÄÁÅØ½ºÆ® ¿µ¿ª¿¡ ´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ ¸Å°³º¯¼ö´Â ProtocolCoStatus ÇÔ¼ö°¡ ¸¸¾à »óÅ º¯È­ ÀεðÄÉÀ̼ÇÀÌ ¿ø·¡ VC ƯÁ¤ÀÌ ¾Æ´Ï¸é È£ÃâµÉ ¶§ NULLÀÌ´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÇÁ·ÎÅäÄÝÀº ¿ø·¡ NdisCoCreateVc ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ProtocolCoCreateVc ÇÔ¼ö·ÎºÎÅÍ ÀÌ ÇÚµéÀ» Á¦°øÇÑ´Ù.

GeneralStatus
NDIS¿¡ ÀÇÇØ »ó½ÂµÈ ȤÀº NdisMCoIndicateStatus ÇÔ¼ö¿¡ ´ëÇÑ ¾Æ·¡ µå¶óÀ̹öÀÇ È£Ãâ·ÎºÎÅÍ Àü´ÞµÇ´Â ÀϹÝÀûÀÎ »óÅ Äڵ带°¡¸®Å²´Ù.

StatusBuffer
GeneralStatusÀÇ °ª¿¡ ÀÇÁ¸ÇÏ´Â ¹Ìµð¾ö ƯÁ¤ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ °¡¸®Å²´Ù.

¸î¸î NDIS_STATUS_XXX °ªµéÀ» À§ÇØ, ÀÌ·¯ÇÑ Æ÷ÀÎÅÍ´Â NULLÀ̰í StatusBufferSize´Â 0À¸·Î ¼³Á¤µÈ´Ù.

StatusBufferSize
StatusBufferÀÎ ¹öÆÛ ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.

ÁÖ¼®

ProtocolCoStatusÇÔ¼ö¿¡ ´ëÇÑ È£ÃâÀº Ȱ¼ºÈ­ VCÀÇ, ¾Æ·¡ ¿¬°áÁöÇâ NICÀÇ, ȤÀº µå¶óÀ̹öÀÇ »óÅ¿¡ ´ëÇÑ º¯È­µéÀ» ÇÁ·ÎÅäÄÝ¿¡°Ô ¾Ë¸°´Ù.

ProtocolCoStatus ÇÔ¼ö´Â µÎ°³ÀÇ ±âº» Á¤º¸¸¦ ÇØ¼®ÇÑ´Ù. :

  1. NDIS¿¡ ÀÇÇØ NDIS_STATUS_XXX °ªÀ¸·Î Á¤ÀǵÈ, VC, NIC, ¾Æ·¡ µå¶óÀ̹öÀÇ º¯È­¸¦ °¡¸®Å°´Â ÀϹßÀûÀÎ »óÅ ÄÚµå.

    ¸¸¾à NDIS°¡ NIC¿¡ ¿¬»ê »óŸ¦ ȸº¹ÇÏ·Á´Â ½Ãµµ·Î ¾Æ·¡ µå¶óÀ̹öÀÇ MiniportReset ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù¸é, NDIS´Â NdisMCoIndicateStatus ÇÔ¼ö¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ È£Ãâ·Î °¡¸®Å°´Â GeneralStatus¸¦ À§ÇØ NDIS_STATUS_RESET_START¸¦ ´ëüÇÒ ¼ö ÀÖ´Ù.

  2. ¹Ìµð¾î ƯÁ¤ÀÏ ¼ö ÀÖ´Â »óÅ º¯È­¸¦ À§ÇÑ Æ¯Á¤ ÀÌÀ¯¿¡ ´ëÇÑ Ãß°¡ÀûÀÌ Á¤º¸ÀÎ, GeneralStatusÀÎ »óÅ¿¡ ÀÇÁ¸ÇÑ´Ù.
NDIS´Â Ç×»ó ¾Æ·¡ ¿¬°á ÁöÇâ µå¶óÀ̹ö°¡ óÀ½ NDIS_STATUS_RESET_END ·Î ±×µéÀÇ ProtocolCoStatus ÇÔ¼öµéÀ» È£ÃâÇÔÀ¸½á NICÀ» ¸®¼ÂÇÒ ¶§ ³ªÁß¿¡ ¸®¼Â °úÁ¤ÀÌ ¿Ï·áÇÒ ¶§ NDIS_STATUS_RESET_END·Î ¸ðµç ¹ÙÀεåµÈ ÇÁ·ÎÅäÄݵ鿡 ¾Ë¸°´Ù. ProtocolCoStatus ÇÔ¼ö¿¡ ´ëÇÑ °¢ ±×·¯ÇÑ È£Ãâ ÈÄ, NDIS´Â ¶ÇÇÑ µå¶óÀ̹öÀÇ ProtocolStatusComplete ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

NDIS´Â ÇÁ·ÎÅäÄÝ ÃʱâÈ­µÈ º¸³»±âµé°ú ¸®¼Â °úÁ¤ÀÌ ÁøÇàÁßÀÎ µ¿¾È ¹Ì´ÏÆ÷Æ®¿¡ ´ëÇÑ ¿ä±¸¸¦ ¼ö¶ôÇÏÁö ¾Ê±â ¶§¹®¿¡, NDIS_STATUS_RESET_START ÁÖÁö´Â ±×µéÀÌ ÀÀ´äÇÏ´Â NDIS_STATUS_RESET_END ÁÖÁö¸¦ ¼ö½ÅÇÒ ¶§±îÁö ±×µéÀÇ ProtocolCoStatus ÇÔ¼öµé¿¡ ÁÖ¾îÁø °¢ ProtocolBindingContext¿¡ ÀÇÇØ ÁöÁ¤µÈ(designated) ¹ÙÀεù¿¡ ´ëÇÑ NdisCoSendPackets ÇÔ¼ö¿Í NdisCoRequest ÇÔ¼öµé¿¡ ´ëÇÑ ±×µéÀÇ È£ÃâµéÀ» ÇÏÁö ¸»µµ·Ï ¹ÙÀεåµÈ ÇÁ·ÎÅäÄݵ鿡°Ô °æ°íÇÑ´Ù.

¸¸¾à ÇÁ·ÎÅäÄÝÀÌ NdisReset ÇÔ¼ö¿¡ ´ëÇÑ È£Ãâ·Î ¸®¼Â ¿¬»êÀ» ÃʱâÈ­ÇÑ´Ù¸é, ProtocolCoStatus ÇÔ¼ö´Â °°Àº ¾Æ·¡ µå¶óÀ̹ö¿¡ ¹ÙÀεåµÈ ¾î¶² ´Ù¸¥ ÇÁ·ÎÅäÄݰú °°ÀÌ NDIS_STATUS_RESET_START ¿Í NDIS_STATUS_RESET_END ÁÖÁöµéÀ» ¼ö½ÅÇÑ´Ù. ±×·¯³ª, ¸¸¾à NdisReset ÇÔ¼ö°¡ NDIS__STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é, ´ÜÁö ¸®¼Â ¿¬»êÀ» ÃʱâÈ­ÇÑ µå¶óÀ̹öÀÇ ProtocolStatusComplete ÇÔ¼ö°¡ È£ÃâµÇ¾îÁø´Ù.

°á°úÀûÀ¸·Î, ¸ðµç ÇÁ·ÎÅäÄÝÀÇ ProtocolCoStatus ÇÔ¼ö´Â ProtocolCoStatus ÇÔ¼ö°¡ NDIS_STATUS_RESET_START ÁÖÁö¸¦ ¼ö½ÅÇÏÀÚ ¸¶ÀÚ ÇÁ·ÎÅäÄÝÀÌ º¸³»±âµé°ú ¿ä±¸µéÀ» Á¦ÃâÇÏ´Â °ÍÀ» ¸·´Âµ¥ ÇÊ¿äÇÑ ÇൿµéÀ» ÃëÇØ¾ß Çϰí ProtocolCoStatus ÇÔ¼ö°¡ NDIS_STATUS_RESET_END ÁÖÁö¸¦ ¹ÞÀ» ¶§ °è¼ÓÇØ¼­ º¸³»±âµéÀ» ¿ä±¸µéÀ» ´Ù½Ã ÇÒ ¼ö ÀÖ°Ô ÇØ¾ß ÇÑ´Ù. Ç×»ó, ProtocolCoStatus ÇÔ¼ö´Â °£´ÜÈ÷ ´Ù¸¥ µå¶óÀ̹ö ÇÔ¼öµéÀÌ ±×µéÀÌ ¹ÙÀεù ÇÑ °÷¿¡¼­ º¸³»±âµé ȤÀº ¿ä±¸µéÀ» ÃʱâÈ­Çϱâ Àü¿¡ üũÇÏ´Â ProtocolBindingContext ¿µ¿©¿¡ ResetInProgress Ç÷¡¸¦ ¼³Á¤Çϰí Ŭ¸®¾îÇÑ´Ù.

¾Æ·¡ NIC µå¶óÀ̹ö´Â »óÅ º¯È­¸¦ ½ÅȣȭÇÒ ¶§, °ü·ÃµÈ À̺¥Æ® Ä«¿îÅ͵é°ú ÀÓ°è°ª(thresholds)Àº ¹Ù²ÙÁö ¾Ê´Â´Ù.

ProtocolCoStatus ÇÔ¼ö´Â IRQL DISPATCH_LEVEL¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ¾²¿©Á®¾ß ÇÑ´Ù.