NdisMSendComplete
VOID
NdisMSendComplete(
IN NDIS_HANDLE MiniportAdapterHandle,
IN PNDIS_PACKET Packet,
IN NDIS_STATUS Status
);
|
NdisMSendComplete ÇÔ¼ö´Â ÀÌÀüÀÇ NDIS_STATUS_PENDINGÀ¸·Î ¸®ÅÏµÈ ÆÐŶ¿¡ ´ëÇØ¼ ¿Ï¼ºµÈ º¸³»±â ¿äûÀÇ ÃÖÁ¾ »óÅÂ¿Í ÆÐŶÀ» ¸®ÅÏÇÑ´Ù.
¸Å°³º¯¼ö
- MiniportAdapterHandle
- MiniportInitialize ¿¡¼ ÀÔ·ÂµÈ ±Ùº»ÀûÀÎ ÇÚµéÀ» ¼¼úÇÑ´Ù.
- Packet
- MiniportSend ¿¡¼ ÀÔ·ÂµÈ ÇÁ·ÎÅäÄÝ ÇÒ´ç ÆÐŶÀ» °¡¸®Å²´Ù.
- Status
- ¿Ï·áµÈ Àü¼Û ¿äûÀÇ ¸¶Áö¸· »óŸ¦ ¼¼úÇÑ´Ù.
ÁÖ¼®
NDIS ¶óÀ̺귯¸®´Â Á÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®¸¦ ´ë½ÅÇØ¼ º¸³»±â ÆÐŶÀ» Å¥¿¡ ÀúÀåÇÑ´Ù. ±×·¡¼ ¹Ì´ÏÆ÷Æ®´Â ÀåÄ¡Àü¼Û ¿¬»êÀ» ´Ü¹ø¿¡ ó¸®ÇÒ ¼ö ÀÖ´Ù. (±×·¯³ª ¹Ì´ÏÆ÷Æ®´Â NICÀÇ ´É·Â¿¡ ÀÇÁ¸Çؼ ¿¬»ê´ç ¸î°³ÀÇ Àü¼ÛÀ» ÇÒ ¼ö ÀÖ´Ù.) NDIS´Â °¢°¢ÀÇ Á÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®ÀÇ MiniportSendPackets ÇÔ¼ö·Î ÆÐŶ ¹è¿ÀÇ Á¦ÃâÀ» Á÷·ÄÈÇÑ´Ù. ±×¸®°í °¢°¢ÀÇ ¹Ì´ÏÆ÷Æ®ÀÇ MiniportSend ÇÔ¼ö·Î ÆÐŶÀÇ Á¦ÃâÀ» Á÷·ÄÈÇÑ´Ù. NDIS´Â Á÷·ÄÈµÈ NIC µå¶óÀ̹ö´Â ÀÌ¹Ì ¹Ù»Û ÀÌÀ¯·Î °¢°¢ÀÇ º¸³»±â ¿äûµéÀ» Áï½Ã ÀüÇØÁÙ ¼ö ¾øÀ» ¶§ FIFO¿¡ Å¥ÇÑ´Ù.
¸ðµç ¿¬°áÁöÇâ ¹Ì´ÏÆ÷Æ®¸¦ Æ÷ÇÔÇÏ´Â ºñÁ÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®´Â Miniport(Co)Send(Packets) ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸é ¾ðÁ¦µçÁö ¸ðµç º¸³»±â ¿äûµéÀ» ¹Þ¾ÆµéÀÓ¿¡ ÀÖ¾î¼ Ã¥ÀÓÀ» Áø´Ù. ¸¸¾à ÇÊ¿äÇÏ´Ù¸é ºñÁ÷·ÄÈµÈ µå¶óÀ̹ö´Â µ¥ÀÌŸ¸¦ º¸³»±âÀ§ÇÑ ÃæºÐÇÑ ÀÚ¿øÀ» °¡Áú ¶§±îÁö º¸³»±â ÆÐŶÀ» Å¥¿¡ ÀúÀåÇÑ´Ù. ºñÁ÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®´Â NdisMSendComplete ÇÔ¼ö¸¦ °¡Áö°í ¸ðµç º¸³»±â¸¦ ºñµ¿±âÀûÀ¸·Î ¿Ï¼ºÇÑ´Ù.
Á÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®ÀÇ MiniportSendPackets ÇÔ¼ö°¡ ÆÐŶÀÇ OOB µ¥ÀÌŸ ºí·°¾ÈÀÇ »óŸ¦ NDIS_STATUS_PENDINGÀ¸·Î ¼³Á¤ÇÑ´Ù¸é ȤÀº MiniportSend ÇÔ¼ö°¡ ÆÐŶ¿¡ ´ëÇØ¼ NDIS_STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é ¹Ì´ÏÆ÷Æ®´Â º¸³»±â ¿äûÀÇ ¿Ï·á¸¦ ¾Ë¸®±âÀ§ÇØ ¿ø·¡ ÆÐŶÀ» °¡Áö°í °á±¹ NdisMSendComplete ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù. º¸³»±â ÆÐŶÀÇ »óŰ¡ pendingÀÎ µ¿¾È¿¡ ¹Ì´ÏÆ÷Æ®´Â ±× ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ ¼ÒÀ¯±Ç°ú ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í ¿¬°üµÈ ¸ðµç ÇÁ·ÎÅäÄÝ ÇÒ´ç ÀÚ¿øµéÀ» À¯ÁöÇÑ´Ù.
NdisMSendComplete ÇÔ¼ö È£ÃâÀº NdisCoSendPackets, NdisSendPackets ȤÀº NdisSend·ÎÀÇ È£ÃâÀ» °¡Áö´Â ÃʱâÈµÈ µå¶óÀ̹öÀÇ ProtocolSendComplete ÇÔ¼ö¸¦ NDIS°¡ È£ÃâÇϵµ·Ï ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®ÀÇ NdisMSendComplete ÇÔ¼ö È£ÃâÀº ÁÖ¾îÁø ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ ¼ÒÀ¯±Ç°ú ±×µéÀ» ÇÒ´çÇÑ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö¿¡ °ü·ÃµÈ ÀÚ¿øµéÀ» ÇØÁ¦ÇÑ´Ù.
¸¸¾à Á÷·ÄÈµÈ µå¶óÀ̹öÀÇ MiniportSend(Packets) ÇÔ¼ö°¡ ÁÖ¾îÁø ÆÐŶ¿¡ ´ëÇØ¼ NDIS_STATUS_PENDINGÀÌ ¾Æ´Ñ ´Ù¸¥ »óŸ¦ ¸®ÅÏÇÑ´Ù¸é ¹Ì´ÏÆ÷Æ®´Â °áÄÚ NdisMSendComplete ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù. MiniportSend(Packets) ÇÔ¼ö·ÎºÎÅÍÀÇ ¸®ÅÏÀº ÆÐŶÀÇ ¼ÒÀ¯±ÇÀ» ÇØÁ¦ÇÑ´Ù. °á°úÀûÀ¸·Î Á÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®´Â MiniportSend(Packets) ÇÔ¼ö°¡ NDIS_STATUS_PENDINGÀ» ¸®ÅÏÇÏÁö ¾Ê´Â ¾î¶² ÆÐŶ¿¡ ´ëÇØ¼ NdisMSendComplete ÇÔ¼ö¸¦ È£ÃâÇÒ Çʿ䰡 ¾ø´Ù. Á÷·ÄÈµÈ NIC µå¶óÀ̹ö°¡ NDIS_STATUS_PENDINGÀÌ ¾Æ´Ñ ¹«¾ð°¡¸¦ ¸®ÅÏÇÏ´Â ¾î¶² º¸³»±â ÆÐŶÀº MiniportSend(Packets) ÇÔ¼ö°¡ ÅëÁ¦¸¦ ¸®ÅÏÇÏÀÚ¸¶ÀÚ ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ¼ Á¢±ÙÇÒ ¼ö ¾øÀ½ÀÌ °í·ÁµÈ´Ù.
¹Ì´ÏÆ÷Æ®ÀÇ NdisMSendComplete ÇÔ¼ö È£ÃâÀº ƯÁ¤ ÆÐŶÀÌ ¹Ýµå½Ã ³×Æ®¿÷ »óÀ¸·Î Àü¼Û ¿Ï·áµÇ¾úÀ½À» ÀǹÌÇÏÁö´Â ¾Ê´Â´Ù. º¸Åë ±×·¯ÇÑ ÆÐŶÀº ¾Æ¸¶µµ ÆÐŶÀÌ Çϵå¿þ¾î ¾È¿¡ Å¥µÉ ¼ö ÀÖ´Â NIC µå¶óÀ̹ö¸¦ Á¦¿ÜÇϰí´Â Àü¼ÛµÇ¾îÁø´Ù.
¼±ÇàµÈ OID_GEN_MEDIA_SUPPORTED ȤÀº OID_GEN_MEDIA_IN_USE ¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î ÀåÄ¡ÀÇ Å¸ÀÔÀ» NdisMediumWanÀ¸·Î ¼±¾ðÇÑ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â NdisMSendComplete º¸´Ù´Â ¿ÀÈ÷·Á NdisMWanSendComplete ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.
NdisMSendComplete ÇÔ¼öÀÇ Á÷·ÄÈµÈ È£ÃâÀÚ´Â IRQL DISPATCH_LEVEL¿¡¼ ½ÇÇàµÇ¾î¾ßÇÑ´Ù. NdisMSendComplete ÇÔ¼öÀÇ ºñÁ÷·ÄÈµÈ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.
|