ProtocolCoSendComplete
VOID
ProtocolCoSendComplete(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolVcContext,
IN PNDIS_PACKET Packet
);
|
ProtocolCoSendComplete ÇÔ¼ö´Â ¿¬°á ÁöÇâ ÇÁ·ÎÅäÄÝ µå¶óÀ̹öµé¿¡¼ ÇÊ¿äÇÑ µå¶óÀ̹ö ÇÔ¼öÀÌ´Ù. ProtocolCoSendComplete ÇÔ¼ö´Â NdisCoSendPackets ¿¡ Àü¿¡ Àü´ÞµÈ ÇÁ·ÎÅäÄÝ ÃʱâÈ º¸³»±âÀÇ Ã³¸®¸¦ ¿Ï¼ºÇÑ´Ù.
¸Å°³º¯¼ö
- Status
- ¾Æ·¡ µå¶óÀ̹ö·ÎºÎÅÍ Àü´ÞµÈ ¿¡·¯ »óÅ ȤÀº NDIS_STATUS_SUCCESSÀÎ º¸³»±â ¿¬»êÀÇ ¸¶Áö¸· »óŸ¦ ÁöÁ¤ÇÑ´Ù.
- ProtocolVcContext
- ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ VC´ç ·±Å¸ÀÓ »óŸ¦ À¯ÁöÇÏ´Â ÇÁ·ÎÅäÄÝ ÇÒ´ç ÄÁÅØ½ºÆ® ¿µ¿ª¿¡ ´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. µå¶óÀ̹ö´Â ¿ø·¡ ProtocolCoCreateVc ÇÔ¼ö·ÎºÎÅÍ È¤Àº NdisCoCreateVc ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ÀÌ ÇÚµéÀ» Á¦°øÇÑ´Ù. ÀÌ ÄÁÅØ½ºÆ® ¿µ¿ªÀº µå¶óÀ̹ö°¡ Àü¿¡ NdisCoSendPackets ÇÔ¼ö·Î Àü´ÞÇÏ´Â NdisVcHandleÀ» Æ÷ÇÔÇÑ´Ù.
- Packet
- ¿Ï¼ºµÈ º¸³»±â¸¦ À§ÇÑ ÇÁ·ÎÅäÄÝ Á¦°ø ÆÐŶ µð½ºÅ©¸³Å͸¦ °¡¸®Å²´Ù.
ÁÖ¼®
ProtocolCoSendComplete ÇÔ¼ö´Â VC¸¦ ÅëÇØ ³×Æ®¿öÅ©À» °ÉÃÄ µ¥ÀÌÅ͸¦ º¸³»±â À§ÇØ ÇÁ·ÎÅäÄÝ¿¡°Ô ¿ä±¸Çϴ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ¾Ë¸®´Â °Í°ú °°Àº ÈÄ󸮰¡ ¿Ï¼ºµÈ Àü¼Û ¿¬»êÀ» ÇÊ¿äÇÑ °ÍµéÀ» ÇàÇÑ´Ù.
º¸³»±â ¿¬»êÀÇ ¿Ï¼ºÀº Ç×»ó ¾Æ·¡ NIC µå¶óÀ̹ö°¡ ½ÇÁ¦ ³×Æ®¿öÅ©À» °ÉÃÄ ÁÖ¾îÁø ÆÐŶÀ» Àü¼ÛÇß´Ù´Â °ÍÀ» ¾Ï½ÃÇÑ´Ù. ±×·¯³ª, ¼ÒÀ§ Áö´ÉÇü NICÀÇ µå¶óÀ̹ö´Â NIC¿¡ ³×Æ®¿öÅ© ÆÐŶÀ» ´Ù¿î·ÎµåÇÏÀÚ¸¶ÀÚ º¸³»±â ¿Ï¼ºÀ» °í·ÁÇÒ ¼ö ÀÖ´Ù. NdisMCoSendComplete ÇÔ¼ö¿¡ ´ëÇÑ ¾Æ·¡ µå¶óÀ̹öÀÇ È£ÃâÀº NDIS¿¡°Ô ProtocolCoSendComplete ÇÔ¼ö¸¦ È£ÃâÇϵµ·ÏÇÑ´Ù.
ProtocolCoSendComplete ÇÔ¼ö°¡ È£ÃâµÉ ¶§, µå¶óÀ̹ö´Â ´ÙÀ½°ú °°Àº ÇÁ·ÎÅäÄÝ ÇÒ´ç ÀÚ¿øµéÀÇ ¼ÒÀ¯±ÇÀ» ¾ò´Â´Ù. :
- PacketÀÎ ÆÐŶ µð½ºÅ©¸³ÅÍ
- ÀÌ·¯ÇÑ µð½ºÅ©¸³Å͵鿡 ÀÇÇØ ¸ÊµÈ ¾î¶² ÇÁ·ÎÅäÄÝ ÇÒ´ç ¹öÆÛµé°ú ³×Æ®¿öÅ© ÆÐŶÀ» Æ÷ÇÔÇÏ´Â ¹öÆÛµéÀ» ¸ÊÇÑ ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ üÀÎÈµÈ ¸ðµç ¹öÆÛ µð½ºÅ©¸³Å͵é.
- ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ ¾î¶² ´ë¿ª¿Ü ºí·°
- MediaSpecificInformationÀÎ ´ë¿ª¿Ü ºí·°³»¿¡ ÁöÁ¤µÈ ¾î¶² ÇÁ·ÎÅäÄÝ ÇÒ´ç ¹öÆÛ
°á°úÀûÀ¸·Î, ProtocolCoSendComplete ÇÔ¼ö´Â NdisCoSendPackets ÇÔ¼ö¿¡ ´ëÇÑ ¿¬¼ÓÀûÀΠȣÃâ·Î Àç»ç¿ëÀ» À§ÇØ ÀÌ·¯ÇÑ ÀÚ¿øµéÀ» ÇØÁ¦ÇÒ ¼ö Àְųª ±×µéÀ» ÁغñÇÒ ¼ö ÀÖ´Ù. ÀϹÝÀûÀÎ ±ÔÄ¢À¸·Î, ±×·¯ÇÑ ÀÚ¿øµéÀ» Àç »ç¿ëÇÏ´Â °ÍÀº ¸¸¾à ÇÁ·ÎÅäÄÝÀÌ Àü¿¡ ¸¹Àº I/O ¿ä±¸ ½Ã±â¿¡ ´Ù¸£´Â ÀÌ·¯ÇÑ ÀÚ¿øµéÀÇ ÃʰúºÐÀ» ÇÒ´çÇÑ´Ù¸é ³·Àº ³×Æ®¿öÅ© Æ®·¡ÇÈ ½Ã±â¸¦ Á¦¿ÜÇØ ±×µéÀ» ÇØÁ¦ÇÏ´Â °Íº¸´Ù ´õ ÁÁÀº ÆÛÆ÷¸Õ½º¸¦ ³º´Â´Ù.
Àç»ç¿ëÀ» À§ÇØ ¹öÆÛ¿Í ÆÐŶ µð½ºÅ©¸³Å͵éÀ» ÁغñÇϱâ À§ÇØ, ProtocolCoSendComplete ÇÔ¼ö´Â ÀÌ·¯ÇÑ °¡À̵å¶óÀεéÀ» µû¶ó¾ß ÇÑ´Ù. :
- Ç×»ó ProtocolCoSendComplete ÇÔ¼ö´Â PacketÀÎ µð½ºÅ©¸³ÅÍ·Î NdisReinitializePacket ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ¹öÆÛ µð½ºÅ©¸³ÅÍ Æ÷ÀÎÅ͵éÀ» ÀúÀåÇϴµ¥ ÇÊ¿äÇÑ ¸¸Å NdisUnchainBufferAtXxx ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
±×·¸Áö ¾ÊÀ¸¸é, NdisReinitializePacket ÇÔ¼ö´Â ¹öÆÛ üÀÎÀÇ Çìµå¸¦ NULL·Î ¼³Á¤Çؼ ÇÁ·ÎÅäÄÝÀº ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ üÀÎÈµÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ´ëÇÑ Æ÷ÀÎÅ͸¦ ȸº¹ÇÒ ¼ö ¾ø°Ô ÇÑ´Ù. ÇÁ·ÎÅäÄÝÀº Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛµé¿¡ ¸ÊÇÎµÈ MDLµéÀ» ÀҰųª ÇÁ·ÎÅäÄÝÀÌ NdisAllocateBuffer ÇÔ¼ö·Î ÇÒ´çÇÑ ¹öÆÛ µð½ºÅ©¸³Å͵éÀ» ÀҴ´Ù.
- Ç×»ó Packet Æ÷ÀÎÅͰ¡ ¾Æ´Ñ °ü·ÃµÈ ´ë¿ª¿Ü ºí·°À» Ŭ¸®¾îÇϱâ À§ÇØ NdisZeroMemory ÇÔ¼ö·Î NDIS_OOB_DATA_FROM_PACKET ¿¡ ÀÇÇØ ¸®ÅÏµÈ Æ÷ÀÎÅ͸¦ Àü´ÞÇÑ´Ù.
±×·¸Áö ¾ÊÀ¸¸é, NdisZeroMemory ÇÔ¼ö´Â ¿¬¼ÓÀûÀÎ º¸³»±âµéÀ» ÁöÁ¤Çϱâ À§ÇØ »ç¿ëÇÒ ¼ö ¾ø°Ô ÇÏ´Â ÇÁ·ÎÅäÄÝÀÌ NdisAllocatePacket ÇÔ¼ö·Î ÇÒ´çµÈ ÆÐŶ µð½ºÅ©¸³Å͸¦ ÆÄ±«ÇÑ´Ù.
´ë¿ª¿Ü ºí·°À» Áö¿ì±â À§ÇÑ ´ëü·Î, ÇÁ·ÎÅäÄÝÀº ÇÁ·ÎÅäÄÝÀÌ Á¤»óÀûÀ¸·Î Àû´çÇÑ NDIS_SET_PACKET_XXX ¸ÅÅ©·Îµé·Î º¸³»±âµéÀÌ ¼³Á¤ÇÏ´Â ÀÌ·¯ÇÑ ¸â¹öµéÀ» ÀçÃʱâÈÇÒ ¼ö ÀÖ´Ù.
ProtocolCoSendComplete ÇÔ¼ö°¡ È£ÃâµÉ ¶§±îÁö, ÇÁ·ÎÅäÄÝ ÃʱâÈµÈ º¸³»±âÀÇ Çö »óÅ´ volatileÇÏ´Ù. ÇÁ·ÎÅäÄÝÀº ÀϽÃÀûÀ¸·Î ¸¸¾à ÇÁ·ÎÅäÄÝÀÌ º¸³»±âµéÀ» À§ÇØ ÇÒ´çÇÑ ÆÐŶ µð½ºÅ©¸³Å͵é·Î ´ë¿ª¿Ü Á¤º¸¸¦ Á¦°øÇÑ´Ù¸é NdisCoSendPackets ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ º¸³»±â¸¦ À§ÇÑ ÇÒ´çÇÑ ¸ðµç ÀÚ¿øµéÀÇ ¼ÒÀ¯±ÇµéÀ» ÇØÁ¦ÇÑ´Ù. ƯÈ÷, ÇÁ·ÎÅäÄÝÀº °áÄÚ NdisCoSendPackets ÇÔ¼ö°¡ Á¦¾î¸¦ ¸®ÅÏÇÒ ¶§ °ü·ÃµÈ ´ë¿ª¿Ü µ¥ÀÌÅÍ ºí·°ÀÇ Status ¸â¹ö¸¦ Á¶»çÇÏ´Â ½Ãµµ¸¦ °áÄÚ ÇÒ Çʿ䰡 ¾ø´Ù.
ºñ·Ï NDIS´Â Ç×»ó NdisCoSendPackets ÇÔ¼ö¿¡ ´ëÇÑ È£Ãâ¿¡¼ Àü´ÞµÈ ÇÁ·ÎÅäÄÝ °áÁ¤ ¼ø¼·Î ¾Æ·¡ ¹Ì´ÏÆ÷Æ®·Î ÇÁ·ÎÅäÄÝ Á¦°ø ÆÐŶ ¹è¿À» Á¦ÃâÇÑ´Ù. Áï, ¸ðµç ¹ÙÀεåµÈ ÇÁ·ÎÅäÄÝÀº ¾Æ·¡ µå¶óÀ̹ö¿¡ FIFO ¼ø¼·Î ÇÁ·ÎÅäÄÝÀÌ NdisCoSendPackets ÇÔ¼ö·Î Àü´ÞÇÏ´Â ÆÐŶµéÀ» Á¦ÃâÇÏ´Â °ÍÀ» NDIS¿¡ ÀÇÁ¸ÇÏÁö¸¸, ÇÁ·ÎÅäÄÝÀº °°Àº ¼ø¼·Î ÀÌ·¯ÇÑ ÆÐŶµé·Î NdisMCoSendComplete ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¾Æ·¡ µå¶óÀ̹ö¿¡ ÀÇÁ¸ÇÒ ¼ö ¾ø´Ù.
ProtocolCoSendComplete ÇÔ¼ö´Â IRQL DISPATCH_LEVEL¿¡¼ ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ¾²¿©Á®¾ß ÇÑ´Ù.
|