NdisSendPackets
VOID
NdisSendPackets(
IN NDIS_HANDLE NdisBindingHandle,
IN PPNDIS_PACKET PacketArray,
IN UINT NumberOfPackets
);
|
NdisSendPackets ÇÔ¼ö´Â ÇϺÎÀÇ µå¶óÀ̹ö·Î °¡´ÉÇÏ´Ù¸é OOB Á¤º¸¿Í ¿¬°üµÈ ´ÙÁ߯ÐŶ º¸³»±â ¸®Äù½ºÆ®¸¦ ¾Ë¸°´Ù.
¸Å°³º¯¼ö
- NdisBindingHandle
- Ÿ°Ù NICÀ» È®ÀÎÇϰųª È£ÃâÀÚ°¡ ¹ÙÀεùÇÑ ´ÙÀ½ ÇÏÀ§ µå¶óÀ̹öÀÇ °¡»ó ¾î´ðÅ͸¦ È®ÀÎÇÏ´Â NdisOpenAdapter ÇÔ¼ö¿¡ ÀÇÇØ¼ ¸®ÅÏµÈ ÇÚµéÀ» ¼¼úÇÑ´Ù. ÇϺÎÀÇ µå¶óÀ̹ö°¡ ¿¬°áÁöÇâ ¹Ì´ÏÆ÷Æ®¶ó¸é ÇÁ·ÎÅäÄÝÀº NdisSend ÇÔ¼öº¸´Ù´Â NdisCoSendPackets ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù.
- PacketArray
- ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÇ ¹è¿À» °¡¸®Å²´Ù. ¹è¿¾È¿¡ °¢°¢ÀÇ ÆÐŶ µð½ºÅ©¸³ÅÍ´Â ÇϺÎÀÇ NIC µå¶óÀ̹ö°¡ ³×Æ®¿÷ »óÀ¸·Î Àü¼ÛÇØ¾ßÇÏ´Â µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ ¸ÅÇÎÇÑ Ã¼ÀÎÈµÈ ¹öÆÛ µð½ºÅ©¸³Å͸¦ °®´Â´Ù. ¶ÇÇÑ °¢°¢ÀÇ ÆÐŶ µð½ºÅ©¸³ÅÍ´Â ¿¬°üµÈ NDIS_PACKET_OOB_DATA ºí·°À» °®´Â´Ù. È£ÃâÀÚ´Â ÇϺÎÀÇ µå¶óÀ̹ö¿Í ¿¬°üµÈ ÆÐŶ ¿ì¼±±Ç°ú °°Àº ¹Ìµð¾ö ƯÁ¤ OOB Á¤º¸¿Í ŸÀÓ½ºÅÆÇÁ¸¦ ÀÌ¹Ì ¼³Á¤Çß´Ù.
- NumberOfPackets
- ÆÐŶ ¹è¿¾È¿¡ Æ÷ÀÎÅ͸¦ ¼¼úÇÑ´Ù.
ÁÖ¼®
ÁÖ¾îÁø ¹è¿¿¡ °¢°¢ÀÇ ¿ä¼Ò´Â NDIS_PACKET ŸÀÔÀÇ µð½ºÅ©¸³ÅÍ¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ´Ù. ±×¸®°í °¢°¢ÀÇ ÆÐŶ µð½ºÅ©¸³ÅÍ´Â ¿¬°üµÈ NDIS_PACKET_OOB_DATA ºí·°¾È¿¡ È£ÃâÀÚ ¼³Á¤ TimeToSend¿Í MediaSpecificInformation ±×¸®°í MediaSpecificSize °ªµéÀ» °¡Áú ¼ö ÀÖ´Ù. È£ÃâÀÚ´Â NdisAllocatePacket ÇÔ¼ö¸¦ °®°í °¢°¢ÀÇ ±×·¯ÇÑ ÆÐŶ µð½ºÅ©¸³Å͸¦ ÇÒ´çÇØ¾ßÇÑ´Ù.
ÇÁ·ÎÅäÄÝÀº NdisSendPackets ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO¸¦ °¡Áö°í º¸³»±â ¸®Äù½ºÆ®¸¦ ¼öÇàÇÏ´Â OOB Á¤º¸¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ°í NDIS_SET_PACKET_TIME_TO_SEND¸¦ °¡Áö°í ÀÌ Å¸ÀÓ½ºÅÆÇÁ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÇϺÎÀÇ µå¶óÀ̹ö´Â À̿ʹ ¹Ý´ë·Î NDIS_GET_PACKET_XXX ¸ÅÅ©·Î¸¦ °¡Áö°í ÀÌ Á¤º¸µéÀ» ¾òÀ» ¼ö ÀÖ´Ù.
ÇÊ¿äÇÏ´Ù¸é ÇÁ·ÎÅäÄÝÀº ÇϺÎÀÇ µå¶óÀ̹ö¸¦ À§Çؼ Á¤º¸¸¦ °¡Áö°í ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ Ç÷¡±×¸¦ ¼³Á¤Çϱâ À§Çؼ NdisSetPacketFlags ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.
¸¸¾à ÇϺÎÀÇ µå¶óÀ̹ö°¡ MiniportSendPackets Çڵ鷯¸¦ ÀͽºÆ÷Æ®ÇÏÁö ¾Ê´Â´Ù¸é NDIS ¶óÀ̺귯¸®´Â µå¶óÀ̹öÀÇ MiniportSend ÇÔ¼ö·Î Á¦°øµÈ ÆÐŶ ¹è¿ÀÇ °¢°¢ÀÇ ÆÐŶÀ» À§Çؼ ÇϳªÀÇ È£ÃâÀ» ¼ø¼ÀûÀ¸·Î ÇÑ´Ù. NDIS´Â ÆÐŶÀÌ Á¦°øµÈ ¹è¿¿¡ µµÂøÇßÀ» ¶§ °°Àº ¼ø¼·Î ÇϺΠµå¶óÀ̹öÀÇ MiniportSend ÇÔ¼ö·Î °¢°¢ÀÇ ÆÐŶÀ» Àü´ÞÇÑ´Ù.
NDIS´Â ÆÐŶÀÌ NdisSendPackets ÇÔ¼ö·Î Àü´ÞµÆÀ» ¶§ °°Àº ¼ø¼·Î ÇϺΠµå¶óÀ̹öÀÇ MiniportSendPackets ÇÔ¼ö·Î ÆÐŶ ¹è¿À» Á¦ÃâÇÑ´Ù. ÇÏÁö¸¸ ÇϺÎÀÇ Á÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®´Â ÇϳªÀÇ ¹è¿ ¿ä¼Ò¸¦ À§Çؼ OOB µ¥ÀÌŸ ºí·°¾È¿¡ NDIS_STATUS_RESOURCES¸¦ ¼³Á¤ÇϹǷνá NDIS·Î µé¾î¿À´Â ¹è¿¾ÈÀ¸·Î ÆÐŶÀÇ ¸ðÀ½À» ¸®ÅÏÇÒ ¼ö ÀÖ´Ù. ÀÌ·² ¶§ NDIS´Â ³ªÁß¿¡ MiniportSendPackets ÇÔ¼ö·ÎÀÇ ÀçÁ¦ÃâÀ» À§Çؼ ¹è¿¾È¿¡ ÆÐŶÀ» Å¥¿¡ ÀúÀåÇÑ´Ù.
Á÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®¿¡¼ NDIS´Â Ç×»ó NdisSend³ª NdisSendPackets ÇÔ¼öÈ£Ãâ·Î Àü´ÞµÇµç ¾ÈµÇµç ÇÁ·ÎÅäÄÝ °áÁ¤ º¸³»±â ÆÐŶÀÇ ¼ø¼¸¦ ÁöŲ´Ù. ±×¸®°í FIFO ¼ø¼·Î ÇϺÎÀÇ µå¶óÀ̹ö·Î ³Ñ¾î°¬´ÂÁö¸¦ È®ÀÎÇÑ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ÆÐŶ µð½ºÅ©¸³ÅÍ Æ÷ÀÎÅÍÀÇ ¹è¿À» °¡Áö°í NdisSendPackets ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ÇÁ·ÎÅäÄÝÀº ÆÐŶÀÌ ³×Æ®¿÷ »óÀ¸·Î º¸³»Á³À» ¶§ °°Àº ¼ø¼·Î Æ÷ÀÎÅÍÀÇ ¹è¿ÀÌ ¼³Á¤µÆ´ÂÁö¸¦ È®½ÇÈ÷ ÇØ¾ßÇÑ´Ù.
NdisSendPackets ÇÔ¼öÀÇ È£ÃâÀÚ´Â ProtocolSendComplete ÇÔ¼ö°¡ ¿Ï·á»óŸ¦ °¡Áö°í È£ÃâµÆÀ» ¶§ ±×·¯ÇÑ ¹è¿ÀÇ °¢°¢ÀÇ ÆÐŶ¿¡ ´ëÇØ¼ ¸®ÅÏµÈ »óŸ¦ Å×½ºÆ®ÇؾßÇÑ´Ù. NDIS°¡ ÇÁ·ÎÅäÄÝ Àü¼Û¿¡ ÀÇÇØ¼ °áÁ¤µÈ FIFO ¼ø¼·Î Àü¼ÛÀ» À§ÇÑ ÆÐŶÀ» Á¦ÃâÇÏ´Â µ¿¾È¿¡ ÇϺÎÀÇ µå¶óÀ̹ö´Â ´ÚÄ¡´Â ´ë·Î ±×·¯ÇÑ º¸³»±âµéÀ» ¿Ï·áÇÑ´Ù.
ÇϺÎÀÇ µå¶óÀ̹ö°¡ ºñÁ÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®¶ó¸é µé¾î¿À´Â ¸ðµç º¸³»±â ÆÐŶÀ» ¹Þ¾Æµé¿©¾ßÇϰí ÇÊ¿äÇÏ´Ù¸é ±×µéÀ» ³»ºÎÀûÀ¸·Î Å¥¿¡ ÀúÀåÇØ¾ßÇÑ´Ù. ºñÁ÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®´Â ÆÐŶ µð½ºÅ©¸³Å͵éÀÌ ³»ºÎÅ¥¿¡ ÀúÀåµÇ´Â µ¿¾È¿¡ ¹ÙÀεùµÈ ÇÁ·ÎÅäÄÝÀÌ NdisSendPackets ÇÔ¼ö·Î Á¦ÃâÇÏ´Â ÇÁ·ÎÅäÄÝ °áÁ¤ ¼ø¼¸¦ °®´Â ÆÐŶ µð½ºÅ©¸³Å͸¦ À¯ÁöÇØ¾ßÇÑ´Ù. Ç×»ó ºñÁ÷·ÄÈµÈ µå¶óÀ̹ö´Â º¸³»±â¸¦ ºñµ¿±âÀûÀ¸·Î ¿Ï·áÇÑ´Ù. °á°úÀûÀ¸·Î ºñÁ÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®¿Í ¹ÙÀεùµÈ ÇÁ·ÎÅäÄÝÀº ±×µéÀÇ ProtocolSendComplete ÇÔ¼ö·Î Àü´ÞµÇ´Â Status °ªÀ» ¸®Äù½ºÆ®µÈ º¸³»±âÀÇ ¸¶Áö¸· »óÅ °ªÀ¸·Î ¼³Á¤ÇؾßÇÑ´Ù.
ÇÁ·ÎÅäÄÝÀº NdisSendPackets ÇÔ¼ö¸¦ È£ÃâÇÏÀÚ¸¶ÀÚ ´ÙÀ½ÀÇ ¼ÒÀ¯±ÇÀ» ¾çµµÇÑ´Ù:
- PacketArray¿¡ ¸ðµç ÆÐŶ µð½ºÅ©¸³ÅÍ
- ±×·¯ÇÑ ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ üÀÎÈµÈ ¹öÆÛ µð½ºÅ©¸³ÅÍ¿¡ ÀÇÇØ¼ ¸ÊµÈ ¸ðµç ¹öÆÛµé
- OOB µ¥ÀÌŸ ºí·°¾È¿¡ ¸í½ÃµÈ ¹Ìµð¾ö ƯÁ¤ ¹öÆÛ¸¦ Æ÷ÇÔÇÏ´Â ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í ¿¬°üµÈ ¸ðµç OOB µ¥ÀÌŸ ºí·°
ÇÁ·ÎÅäÄÝÀº NdisSendPackets ÇÔ¼ö·Î ÁÖ¾îÁø ¹è¿¾È¿¡ °¢°¢ÀÇ ÆÐŶ µð½ºÅ©¸³Å͸¦ °¡Áö°í ProtocolSendComplete ÇÔ¼ö°¡ È£ÃâµÉ ¶§ À̵é ÀÚ¿øÀÇ ¼ÒÀ¯±ÇÀ» ¾ò´Â´Ù.
ÆÐŶ µð½ºÅ©¸³ÅͰ¡ ProtocolSendComplete ÇÔ¼ö·Î ¸®Å쵃 ¶§ NdisUnchainBufferAtXxx ÇÔ¼ö·ÎÀÇ È£ÃâÀ» °¡Áö°í ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ üÀÎÈµÈ ¹öÆÛ µð½ºÅ©¸³Å͸¦ ÀúÀåÇÑ ÈÄ¿¡ Àç»ç¿ëÀ» À§Çؼ ÆÐŶÀ» ÁغñÇÏ´Â NdisReinitializePacket ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ±×·¯ÇÑ ÆÐŶ µð½ºÅ©¸³Å͸¦ Àç»ç¿ëÇÏ´Â °ÍÀº NdisFreePacket ÇÔ¼ö¸¦ °¡Áö°í µå¶óÀ̹ö ÇÒ´ç ÆÐŶ Ç®¿¡ ´ëÇÑ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇÏ°í ³ªÁß¿¡ ¶Ç´Ù¸¥ º¸³»±â¸¦ À§Çؼ ÀÚ¿øÀ» ÀçÇÒ´çÇÏ´Â °Íº¸´Ù ´õ ÁÁÀº ÆÛÆ÷¸Õ½º¸¦ ¾ò´Â´Ù.
ProtocolSendComplete ÇÔ¼ö´Â ¶ÇÇÑ Àç»ç¿ëÀ» À§Çؼ ÇÁ·ÎÅäÄÝÀÌ ¾î¶² OOB Á¤º¸¸¦ Á¦°øÇÑ´Ù¸é ÁÖ¾îÁø ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í ¿¬°üµÈ OOB ºí·°À» ÁغñÇÒ ¼ö ÀÖ´Ù. ¼±ÅÃÀûÀ¸·Î ÇÁ·ÎÅäÄÝÀº ¼øÂ÷ÀûÀÎ º¸³»±â¸¦ À§Çؼ ÆÐŶ µð½ºÅ©¸³ÅͰ¡ ¼³Á¤µÆÀ» ¶§ »ç¿ëÇÏ´Â ¸â¹öµéÀ» È®½ÇÇÏ°Ô ÀçÃʱâÈÇÒ ¼ö ÀÖ´Ù.
NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â NdisSendPackets (ȤÀº NdisSend) ÇÔ¼ö¸¦ °®´Â ÇϺÎÀÇ ¹Ì´ÏÆ÷Æ®·Î ±×·¯ÇÑ º¸³»±â ¸®Äù½ºÆ®¸¦ Àü´ÞÇϱâ Àü¿¡ ½Å¼±ÇÑ ÆÐŶ µð½ºÅ©¸³Å;ȿ¡ ´õ ³ôÀº ·¹º§ÀÇ ÇÁ·ÎÅäÄݷκÎÅÍ °¢°¢ÀÇ µé¾î¿À´Â º¸³»±âµéÀ» ÀçÆÐŰÁöÈÇØ¾ßÇÑ´Ù.
NdisSendPackets ÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼ ½ÇÇàÇÑ´Ù.
|