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¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.