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¸¦ ½ÇÇàÇÑ´Ù.
|