MiniportReturnPacket

VOID

  MiniportReturnPacket(

    IN NDIS_HANDLE  MiniportAdapterContext,

    IN PNDIS_PACKET  Packet

    );

MiniportReturnPacketÀº NdisM(Co)IndicateReceivePacketÀ¸·Î ¼ö½ÅµéÀ» ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹ö¿¡¼­ ÇÊ¿äÇÑ ÇÔ¼öÀÌ´Ù.

¸Å°³º¯¼ö

MiniportAdapterContext
µå¶óÀ̹ö°¡ MiniportInitialize¿¡ ÀÇÇØ ¼³Á¤µÈ NIC ´ç »óŸ¦ À¯ÁöÇÏ´Â ¹Ì´ÏÆ÷Æ® ÇÒ´ç ÄÁÅØ½ºÆ® ¿µ¿ªÀÇ ÇÚµéÀ» °¡¸®Å²´Ù.

Packet
Àü¿¡ ÀÌ Æ÷ÀÎÅÍ¿¡ Æ÷ÇÔµÈ ÆÐŶ ¹è¿­À» °¡¸®Å°´Â ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ ¸®ÅϵǾîÁö´Â ÆÐŶ µð½ºÅ©¸³Å͸¦ °¡¸®Å²´Ù.

ÁÖ¼®

µå¶óÀ̹öµéÀÇ ´ÙÀ½ ŸÀÔµéÀº MiniportReturnPacket ÇÔ¼ö¸¦ Á¦°øÇØ¾ß ÇÑ´Ù:

  • ¸ÖƼ ÆÐŶ ¸®½ÃºêµéÀ» Áö¿øÇÏ´Â ¹ö½º ¸¶½ºÅÍ DMA NICÀÇ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö. ±×·¯ÇÑ µå¶óÀ̹öµéÀº MiniportSendPackets ÇÔ¼ö¸¦ ÀͽºÆ÷Æ®ÇÏ´Â Á÷·ÄÈ­µÈ ¹Ì´ÏÆ÷Æ®µéÀ» Æ÷ÇÔÇÑ´Ù. Á÷·ÄÈ­µÈ ¹Ì´ÏÆ÷Æ®, ¿¬°á ÁöÇâ ¹Ì´ÏÆ÷Æ®.
  • ¸®½Ãºê ÀεðÄÉÀ̼ǵé°ú °°Àº ÆÐŶ ¿ì¼±±Ç°ú °°Àº ¹Ìµð¾î ƯÁ¤ Á¤º¸¸¦ Á¦°øÇÏ´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö
  • MiniportReturnPacket ÇÔ¼ö¸¦ Á¦°øÇÏ´Â ±× ÀÚü¿Í ¹Ì´ÏÆ÷Æ®¸¦ ¹ÙÀεåÇÏ´Â NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö

Á÷·ÄÈ­µÈ µå¶óÀ̹ö

»óŰ¡ NdisMIndicateReceivePacketÀ¸·ÎºÎÅÍ ¸®ÅÏÇÑ NDIS_STATUS_PENDINGÀ¸·Î ¼³Á¤ÇÑ NDIS_PACKET_OOB_DATA¿Í °ü·ÃµÈ ¾î¶² ¸®½Ãºê ÆÐŶÀº MiniportReturnPacket¿¡°Ô ¸®ÅϵǾîÁú °ÍÀÌ´Ù. ¸ðµç ¹ÙÀεåµÈ ÇÁ·ÎÅäÄݵéÀº ¿ø·¡ ÀεðÄÉÀÌÆ®µÈ ÆÐŶ ¹è¿­¿¡ ´ëÇÑ ÂüÁ¶µéÀ» ÇØÁ¦Çϴµ¥ ÇÊ¿äÇÑ ¸¸Å­ NdisReturnPacketsÀ» È£ÃâÇÒ ¶§, NDIS´Â ¿ø·¡ ÆÐŶ ¹è¿­À» ÇÒ´çÇÑ µå¶óÀ̹öÀÇ MiniportReturnPacket ÇÔ¼ö¿¡ ´ëÇÑ ¹è¿­·ÎºÎÅÍ Áö¿¬µÈ ÆÐŶµéÀ» ¸®ÅÏÇÑ´Ù.

¸¸¾à NdisMIndicateReceivePacketÀ¸·Î ¸®½Ãºê ÆÐŶ µð½ºÅ©¸³Å͸¦ ÀεðÄÉÀ̵ùÇϱâ Àü¿¡ µå¶óÀ̹ö°¡ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ NDIS_PACKET_OOB_DATA·Î ¸®ÅÏµÈ »óÅ ¸â¹ö¸¦ NDIS_STATUS_SUCCESS·Î µå¶óÀ̹ö°¡ ¼³Á¤µÈ´Ù¸éÀº, µå¶óÀ̹ö´Â NdisMIndicateReceivePackeÀÇ ¸®ÅÏÀ¸·Î ÆÐŶÀÇ »óŸ¦ Ã¼Å©ÇØ¾ß ÇÑ´Ù:

  • ¸¸¾à Status°¡ NDIS_STATUS_SUCCESS·Î ¼³Á¤µÈ´Ù¸éÀº, ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ ¹öÆÛ µð½ºÅ©¸³Å͵éÀº µå¶óÀ̹ö¿¡°Ô·Î ¸®ÅϵǾîÁø´Ù.
  • ¸¸¾à Status°¡ NDIS_STATUS_PENDINGÀ¸·Î ¼³Á¤µÈ´Ù¸éÀº, NDIS´Â µå¶óÀ̹öÀÇ MiniportReturnPacket ÇÔ¼ö¿¡°Ô ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇÒ °ÍÀÌ´Ù.

For Deserialized and Connection-Oriented Drivers

¸¸¾à µå¶óÀ̹ö°¡, NdisM(Co)IndicateReceivePacketÀ¸·Î ¸®½Ãºê ÆÐŶ µð½ºÅ©¸³Å͸¦ ÀεðÄÉÀÌÆ® ÇϱâÀü¿¡, ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ NDIS_PACKET_OOB_DATAÀÇ Status ¸â¹ö¸¦ NDIS_STATUS_SUCCESS·Î ¼³Á¤ÇÑ´Ù¸éÀº, NDIS´Â µå¶óÀ̹öÀÇ MiniportReturnPacket ÇÔ¼ö¿¡ ´ëÇÑ ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇÑ´Ù. ±×·¯³ª, ¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ Status ¸â¹ö¸¦ NDIS_STATUS_RESOURCES·Î ¼³Á¤µÈ´Ù¸éÀº, ±×·¯¹Ç·Î ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ ¹öÆÛ µð½ºÅ©¸³Å͵éÀÇ ¼ÒÀ¯¸¦ À¯ÁöÇÒ Çʿ䰡 ÀÖ´Ù´Â °ÍÀ» °¡¸®Å°±â À§ÇØ, NDIS´Â ¾Ï¿¬ÀûÀ¸·Î, NdisM(Co)IndicateReceivePacketÀÇ ¸®ÅÏÀ¸·Î µå¶óÀ̹ö¿¡°Ô ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇÑ´Ù.

ºñÁ÷·ÄÈ­µÈ ȤÀº ¿¬°á ÁöÇâ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â NdisMIndicateReceivePacketÀÇ ¸®ÅÏÀ¸·Î ÀεðÄÉÀÌÆ®µÈ ÆÐŶµéÀÇ »óŵéÀ» Á¶»çÇÒ Çʿ䰡 ¾ø´Ù. ±×·¯³ª, ºñÁ÷·ÄÈ­µÈ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â ÆÐŶ µð½ºÅ©¸³ÅͰ¡ ÀεðÄÉÀ̵ùÇϱâ Àü¿¡ Áö¿ª º¯¼ö³»¿¡ ÆÐŶ »óŸ¦ ÀúÀåÇØ¾ß ÇÑ´Ù. NdisMIndicateReceivePacketÀÌ ¸®Å쵃 ¶§, ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â ÀúÀåµÈ ÆÐŶ Status¸¦ Ã¼Å©ÇØ¾ß ÇÑ´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â ÆÐŶ µð½ºÅ©¸³ÅͰ¡ ÀεðÄÉÀÌÆÃ Çϱâ Àü¿¡, ÆÐŶÀÇ Status°¡ NDIS_STATUS_RESOURCES·Î ¼³Á¤µÈ´Ù¸éÀº, ±×°ÍÀº Áï½Ã NdisMIndicateReceivePacketÀ» ¸®ÅÏÇÑ ÈÄ, ÀÚ½ÅÀÇ MiniportReturnPacket ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ÆÐŶ µð½ºÅ©¸³Å͸¦ ÁÖÀåÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡, NDIS´Â ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇϱâ À§ÇØ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ MiniportReturnPacket ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö°¡ ÆÐŶ µð½ºÅ©¸³Å͸¦ ÀεðÄÉÀÌÆÃ(indicating up)Çϱâ Àü¿¡ ÆÐŶÀÇ Status¸¦ NDIS_STATUS_SUCCESS·Î ¼³Á¤ÇÑ´Ù¸éÀº, ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â NDIS°¡ °è¼ÓÇØ¼­ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ MiniportReturnPacket ÇÔ¼ö¿¡ ´ëÇÑ ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇÒ ¶§±îÁö ÆÐŶ µð½ºÅ©¸³Å͸¦ ¿ä±¸ÇÒ Çʿ䰡 ¾ø´Ù.

For All Drivers

Ç×»ó, MiniportReturnPacketÀº ±×·¯ÇÑ ¸®ÅÏµÈ ÆÐŶÀÌ ¿¬¼ÓµÈ ¸®½Ãºê ÀεðÄÉÀ̼ǿ¡¼­ »ç¿ëµÈ °Íó·³ ÁغñÇÑ´Ù. ºñ·Ï MiniportReturnPacketÀÌ ¹öÆÛ Ç®¿¡ ÆÐŶÀÌ ¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³Å͵é°ú ÆÐŶ Ç®¿¡ ±×°ÍÀ» ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇÒ ¼ö ÀÖÁö¸¸Àº, ¸®ÅÏµÈ µð½ºÅ©¸³Å͵éÀ» Àç»ç¿ëÇÏ´Â °ÍÀº ´õ È¿À²ÀûÀÌ´Ù.

MiniportReturnPacketÀº NdisReinitializePacketÀ» È£ÃâÇϱâ Àü¿¡ ¸ðµç ¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ´ëÇÑ Æ÷ÀÎÅ͵éÀ» ÀúÀåÇϱâ À§ÇØ ÇÊ¿äÇÑ ¸¸Å­ NdisUnchainBufferAtXxx¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸éÀº, MiniportReturnPacketÀº µå¶óÀ̹ö°¡ ¿ø·¡ ÀεðÄÉÀ̼ÇÀ» À§ÇØ ÆÐŶÀ» ¿¬°áÇÑ ¹öÆÛµð½ºÅ©¸³Å͵éÀ» ȸº¹ÇÒ ¼ö ¾ø´Ù.

MiniportReturnPacketÀº ¶ÇÇÑ Àç»ç¿ëÀ» À§ÇØ ÆÐŶ°ú °ü·ÃµÈ out-of-band ºí·°À» ÁغñÇϱâ À§ÇØ NDIS_OOB_DATA_FROM_PACKET ¿¡ ÀÇÇØ ¸®ÅÏµÈ Æ÷ÀÎÅÍ·Î NdisZeroMemory¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.

¸¸¾à ƯÁ¤ ¹öÆÛ µð½ºÅ©¸³ÅͰ¡ ÀεðÄÉÀÌÆ®µÈ ¹üÀ§ÀÇ µ¥ÀÌÅÍ Å©±â°¡ ÀÏÄ¡Çϴµ¥ ª´Ù¸éÀº, MiniportReturnPacktÀº NICÀÇ ¸®½Ãºê ¹öÆÛ ¹üÀ§¿¡ ¸ÉÇÎÀ» ȸº¹Çϱâ À§ÇØ ¹öÆÛ µð½ºÅ©¸³ÅÍ¿À NdisAdjustBufferLength¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.

µðÆúÆ®·Î MiniportReturnPacketÀº IRQL DISPATCH_LEVEL¸¦ ½ÇÇàÇÑ´Ù.