ProtocolReceivePacket

INT

  ProtocolReceivePacket(

      IN NDIS_HANDLE  ProtocolBindingContext,

      IN PNDIS_PACKET  Packet

      );

ProtocolReceivePacket ÇÔ¼ö´Â ¾Æ·¡ µå¶óÀ̹ö°¡ ¸ÖƼ ÆÐŶ ¼ö½Å ÀεðÄÉÀ̼ǵéÀ» Áö¿øÇϱ⠶§¹®¿¡ ÆÐŶ ¹è¿­µé·Î ȤÀº ´ë¿ªÆø ¿Ü Á¤º¸¿Í °ü·ÃµÈ °¢ ÆÐŶµé·Î NdisMIndicateReceivePacket ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¾Æ·¡ ºñ¿¬°áÁöÇâÁÖÀÇ NIC µå¶óÀ̹öµé¿¡ ÀÇÇØ ¸¸µé¾îÁø ¼ö½Å ÀεðÄÉÀ̼ǵéÀ» ó¸®ÇÏ´Â ¼±ÅÃÀûÀÎ ÇÔ¼öÀÌ´Ù. ProtocolReceivePacket ÇÔ¼ö´Â loopbackÀÇ °á°ú·Î¼­ ÀϾ ¼ö ÀÖ´Ù.

¾Æ·¡ ¿¬°á ÁöÇâ NIC ¹Ì´ÏÆ÷Æ®µé°ú ¹èŸÀûÀ¸·Î ±×µé ÀÚ½ÅÀ» ¹ÙÀεåÇÏ´Â ÇÁ·ÎÅäÄݵéÀº ¿ÏÀüÇÑ ±â´ÉÀÇ ProtocolReceivePacket ÇÔ¼öº¸´Ù ProtocolCoReceivePacket ÇÔ¼ö¸¦ °¡Á®¾ß ÇÑ´Ù.

¸Å°³º¯¼ö

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

Packet
¼ö½ÅµÈ ³×Æ®¿öÅ© ÆÐŶÀ» À§ÇÑ ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÑ´Ù. NDIS´Â ¾Æ·¡ µå¶óÀ̹ö°¡ NdisMIndicateReceivePacket ÇÔ¼ö¿¡ Àü´ÞµÇ´Â ÆÐŶ µð½ºÅ©¸³ÅÍ Æ÷ÀÎÅ͵éÀÇ ¹è¿­·ÎºÎÅÍ ÀÌ·¯ÇÑ Æ÷ÀÎÅ͸¦ »Ì¾Æ³½´Ù.

¸®Åϰª

ProtocolReceivePacketÇÔ¼ö´Â ProtocolÀÌ °è¼ÓÇØ¼­ ÁÖ¾îÁø ÆÐŶÀ¸·Î NdisReturnPacket ÇÔ¼ö¸¦ È£ÃâÇÑ ¸¸Å­ ȤÀº ¸¸¾à ÇÁ·ÎÅäÄÝÀÌ ÀÌ·¯ÇÑ ÆÐŶ³»¿¡ °ü½ÉÀÌ ¾ø°Å³ª ¿Ï¼ºµÇ¸é 0À¸·Î NDIS¿¡°Ô ¸»ÇÏ´Â µå¶óÀ̹ö °áÁ¤ °ªÀ» ¸®ÅÏÇÑ´Ù.

ÁÖ¼®

±×ÀÚü¿Í ¸ÖƼ ÆÐŶ ¼ö½Å ÀεðÄÉÀ̼ǵéÀ» Áö¿øÇÏ´Â ¾Æ·¡ ºñ¿¬°á ÁöÇâ NIC µå¶óÀ̹ö¿Í ¹ÙÀεåÇÏ´Â ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ProtocolReceivePacket ÇÔ¼ö¸¦ °¡Á®¾ß ÇÑ´Ù. ±×·¯ÇÑ ¾Æ·¡ µå¶óÀ̹ö´Â Ç×»ó full ÆÐŶ ¼ö½ÅµéÀ» ÀεðÄÉÀÌÆ®ÇÑ´Ù.

ÇÁ·ÎÅäÄÝÀº ¸¸¾à ProtocolReceivePacket ÇÔ¼ö¸¦ °¡Áø´Ù¸é ´õ ³ôÀº ÆÛÆ÷¸Õ½º¸¦ ¼ºÃëÇÒ ¼ö ÀÖ´Ù. ±×·¯ÇÑ ÇÁ·ÎÅäÄÝÀº(ȤÀº °¡»ó ³ôÀº À©µµ¿ìÁî 2000 ÇÁ·ÎÅäÄÝÀÇ TDI Ŭ¶óÀÌ¾ðÆ®µé) ¸¸¾à ProtocolReceivePacketÀÌ 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù¸é PacketÀ¸·Î ÁöÁ¤µÈ ÁÖ¾îÁø Àбâ Àü¿ë Á¢±ÙÀ¸·Î ¸ðµç ¼ö½ÅµÈ µ¥ÀÌÅ͸¦ À¯ÁöÇÒ ¼ö ÀÖ´Ù. °¡Àå ³ôÀº ·¹º§ À©µµ¿ìÁî 2000 ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö¸¦ À§ÇØ, ±×·¯ÇÑ ÀÔ·Â Packet µð½ºÅ©¸³ÅÍ Æ÷ÀÎÅ͸¦ À§ÇØ ¸®ÅÏ °ªÀº ÇÁ·ÎÅäÄÝÀÌ ÀÔ·Â ÆÐŶ µð½ºÅ©¸³ÅÍ·Î Æ÷¿öµùÇÔÀ¸·Î½á ¼ö½ÅµÈ ³×Æ®¿öÅ© ÆÐŶ¿¡ ´ëÇØ ¾Ë¸®´Â Ŭ¶óÀÌ¾ðÆ®µéÀÇ ÂüÁ¶ Ä«¿îÆ®°¡ µÉ ¼ö ÀÖ´Ù. ÀÎÅ͹̵ð¾ù NDIS µå¶óÀ̹ö¿¡ ´ëÇØ, ¸®ÅϰªÀº ÀÀ´äÇÏ´Â ÀεðÄÉÀ̼ÇÀ» ÇÏ´Â °¡Àå ³ôÀº ·¹º§ ÇÁ·ÎÅäÄݵéÀÇ Ä«¿îÆ®°¡ µÉ °ÍÀ̰í ȤÀº ¸¸¾à µå¶óÀ̹ö°¡ ó¸®µÈ ÀεðÄÉÀ̼ÇÀ» Æ÷¿öµåÇÏ´Â °¡Àå ³ôÀº ·¹º§ ÇÁ·ÎÅäÄݵéÀÇ ¼ö¸¦ ÃßÀûÇÑ´Ù¸é 1ÀÌ´Ù. ÀÔ·Â ÆÐŶ µð½ºÅ©¸³ÅÍ Æ÷ÀÎÅ͸¦ ¸î¸î °ü½ÉÀִ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô Æ÷¿öµåÇÏ´Â °¡Àå ³ôÀº ·¹º§ À©µµ¿ìÁî 2000 ÇÁ·ÎÅäÄÝÀ» À§ÇØ, °¢ Ŭ¶óÀÌ¾ðÆ®´Â Å¬¶óÀÌ¾ðÆ®°¡ TdiReturnChainedReceives ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§±îÁö ¼ö½ÅµÈ µ¥ÀÌÅÍ¿¡ ´ëÇÑ Àбâ Àü¿ë Á¢±ÙÀ» º¸·ùÇÑ´Ù. ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â ProtocolReceivePacket ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ ÂüÁ¶ Ä«¿îÆ®¸¸Å­ PacketÀ¸·Î NdisReturnPackets ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§±îÁö ¼ö½ÅµÈ ÆÐŶÀÇ ¼ÒÀ¯±ÇÀ» º¸·ùÇÑ´Ù.

¸¸¾à ProtocolReceivePacket ÇÔ¼ö°¡ NdisReturnPacket ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù¸é, ÇÁ·ÎÅäÄÝÀº ProtocolReceivePacket ÇÔ¼ö°¡ Á¦¾î¸¦ ¸®ÅÏÇÑ ÈÄ NdisReturnPackets ÇÔ¼ö¿¡ ´ëÇÑ ÀÔ·Â Packet Æ÷ÀÎÅ͸¦ Àü´ÞÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ½Ã³ª¸®¿À¿¡¼­, ProtocolReceivePacket ÇÔ¼ö´Â 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÒ ¶§ ProtocolBindingContext ¿µ¿ª¿¡ ÀÔ·Â Packet Æ÷ÀÎÅ͸¦ ÀúÀåÇØ¾ß ÇÑ´Ù.

NDIS ¶óÀ̺귯¸®´Â ±×·¯ÇÑ ÀεðÄÉÀÌÆ®µÈ ÆÐŶÀ» À§ÇØ ÂüÁ¶ Ä«¿îÆ®¸¦ À¯ÁöÇϰí ÇÁ·Î·ÎÄÝÀº ProtocolReceivePacket ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ °ªÀ¸·Î ¿©·¯¹ø ±×·¯ÇÑ ÆÐŶÀ¸·Î NdisReturnPackets ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§±îÁö ÆÐŰÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇÑ´Ù.

ProtocolReceivePacket ÇÔ¼ö´Â ¸¸¾à ÇÁ·ÎÅäÄÝÀÌ Çö Ŭ¶óÀÌ¾ðÆ®°¡ ¾ø°Å³ª ȤÀº ¼ö½ÅµÈ ³×Æ®¿öÅ© ÆÐŶ³»¿¡ °ü½ÉÀÖ´Â ¹Ù¿îµåµÈ »óÀ§ ·¹º§ ÇÁ·ÎÅäÄݵéÀÌ ¾ø°Å³ª ȤÀº ¸¸¾à ProtocolReceivePacket ÇÔ¼ö´Â ÇÁ·ÎÅäÄÝ ÇÒ´ç ÀúÀå °ø°£¿¡ ´ëÇÑ °ü·ÃµÈ ´ë¿ªÆø¿Ü ºí·°°ú ÁÖ¾îÁø ÆÐŶÀ¸·ÎºÎÅÍ µ¥ÀÌÅ͸¦ º¹»çÇÑ´Ù¸é ÁÖ¾îÁø PacketÀÇ ¼ÒÀ¯±ÇÀ» ¾çµµÇϱâ À§ÇØ 0À» ¸®ÅÏÇÑ´Ù. ProtocolReceivePacket ÇÔ¼ö´Â 0À» ¸®ÅÏÇÒ ¶§, NDIS´Â ¶Ç ÇϳªÀÇ ¹ÙÀεå ÇÁ·ÎÅäÄÝÀ» ¼ö½Å ÀεðÄÉÀ̼ǵé·Î È£ÃâÇϰųª ÀεðÄÉÀ̼ÇÀ» ÇÏ´Â ¹Ì´ÏÆ÷Æ®¿¡ ´ëÇÑ PacketÀÎ ÁÖ¾îÁø ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇÑ´Ù.

¾Æ·¡ ¼ö½ÅµéÀ» À§ÇÑ ´ë¿ªÆø¿Ü Á¤º¸¸¦ Á¦°øÇÏ´Â ºñ¿¬°á ÁöÇâ NIC µå¶óÀ̹ö¿Í

¹ÙÀεåµÇ´Â ÇÁ·ÎÅäÄÝÀº ¼ö½Å ÀεðÄÉÀ̼ǵéÀ» ó¸®ÇÒ ¶§ ¹Ì´ÏÆ÷Æ® Á¦°ø ´ë¿ªÆø Á¤º¸¸¦ ÇØ¼®Çϱâ À§ÇØ ProtocolReceivePacket ÇÔ¼ö¸¦ °¡Á®¾ß ÇÑ´Ù. ±×·¯ÇÑ ÇÁ·ÎÅäÄÝÀº Àû´çÇÑ NDIS_GET_PACKET_XXX ¸ÅÅ©·Îµé·Î ÁÖ¾îÁø PacketÀ» À§ÇØ °ü·ÃµÈ ´ë¿ªÆø Á¤º¸¸¦ °Ë»öÇÒ ¼ö ÀÖ´Ù.

¸¸¾à µé¾î¿À´Â ÆÐŶ µð½ºÅ©¸³ÅͰ¡ °ü·ÃµÈ OOB ºí·°³»¿¡ Status¸¦ À§ÇÑ NDIS_STATUS_RESOURCES ¼³Á¤À» °¡Áø´Ù¸é, ÇÁ·ÎÅäÄÝÀº ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ ¹Ì´ÏÆ÷Æ® ÇÒ´ç ÀÚ¿øµéÀ» À¯ÁöÇÒ Çʿ䰡 ¾ø´Ù.

±× ´ë½Å¿¡ ProtocolReceivePacket ÇÔ¼ö´Â ¼ö½ÅµÈ µ¥ÀÌÅͰ¡ ÇÁ·ÎÅäÄÝ ÇÒ´ç ÀúÀå°ø°£³»·Î º¹»çÇØ¾ß ÇÏ°í °¡´ÉÇÑ ÇÑ »¡¸® NDIS¿¡°Ô 0À» ¸®ÅÏÇØ¾ß ÇÑ´Ù. ±×·¯ÇÑ ¹Ì´ÏÆ÷Æ® ÇÒ´ç ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇØ OOB ºí·°³»¿¡ Status°¡ ¹Ì´ÏÆ÷Æ®´Â ¼ö½Å ÀÚ¿øµéÀ» ³·°Ô ¿î¿µÇÏ´Â °ÍÀ» ÀεðÄÉÀÌÆ®ÇÑ´Ù.

µðÆúÆ®·Î, ProtocolReceivePacket ÇÔ¼ö´Â arbitrary ¾²·¹µå ÄÁÅØ½ºÆ®³»¿¡¼­ IRQL DISPATCH_LEVEL·Î ½ÇÇàÇÑ´Ù.