MiniportTransferData

NDIS_STATUS 

  MiniportTransferData(

    OUT PNDIS_PACKET  Packet,

    OUT PUINT  BytesTransferred,

    IN NDIS_HANDLE  MiniportAdapterContext,

    IN NDIS_HANDLE  MiniportReceiveContext,

    IN UINT  ByteOffset,

    IN UINT  BytesToTransfer

    );

MiniportTransferData´Â ¸ÖƼ ÆÐŶ ¸®½Ãºêµé ȤÀº ±×¸®°í ¹Ìµð¾î ƯÁ¤ Á¤º¸¸¦ NdisMIndicateReceivePacketÀ¸·Î ÀεðÄÉÀÌÆ®ÇÏÁö ¾Ê´Â NIC µå¶óÀ̹öµé ³»¿¡¼­ ÇÊ¿äÇÑ ÇÔ¼öÀ̰í WAN ¹Ìµð¾î´Â Áö¿øÇÏÁö ¾Ê´Â´Ù.

¸Å°³º¯¼ö

Packet
MiniportTransferData´Â ¼ö½ÅµÈ µ¥ÀÌÅ͸¦ º¹»çÇØ¾ß ÇÏ´Â ¿¬°áµÈ ¹öÆÛµéÀ» °¡Áø ÆÐŶ µð½ºÅ©¸³Å͸¦ °¡¸®Å²´Ù.

BytesTransferred
MiniportTransferData°¡ ÆÐŶ¿¡ º¹»çµÇ¾îÁö´Â ¹ÙÀÌÆ® ¼ö¸¦ ¼³Á¤ÇÏ´Â º¯¼ö¸¦ °¡¸®Å²´Ù. ÀÌ °ªÀº ¸¸¾à MiniportTransferData°¡ NDIS_STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸éÀº Àǹ̰¡ ¾ø´Ù.

MiniportAdapterContext
µå¶óÀ̹ö°¡ MiniportInitialize¿¡ ÀÇÇØ ¼³Á¤µÈ NIC ´ç »óŸ¦ À¯ÁöÇÏ´Â ¹Ì´ÏÆ÷Æ® ÇÒ´ç ÄÁÅØ½ºÆ® ¿µ¿ª¿¡ ´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

MiniportReceiveContext
Àü¿¡ NdisM..IndicateReceive¿¡ Àü´ÞµÈ ÄÁÅØ½ºÆ® ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â ÀÌ °ªÀ» Á¶»çÇØ¼­ º¹»çÇÏ´Â ¸®½Ãºê¸¦ °áÁ¤ÇÒ ¼ö ÀÖ´Ù.

ByteOffset
MiniportTransferData°¡ º¹»ç¸¦ ½ÃÀÛÇØ¾ß ÇÏ´Â ¼ö½ÅµÈ ÆÐŶ³»¿¡¼­ offset¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à ¿ÏÀüÇÑ ÆÐŶÀÌ º¹»çµÇ¾îÁø´Ù¸éÀº, ByteOffsetÀº 0ÀÌ´Ù.

BytesToTransfer
¾ó¸¶³ª ¸¹Àº ÆÐŶÀÌ º¹»çµÇ¾ú´ÂÁö¸¦ ÁöÁ¤ÇÑ´Ù. ByteOffset°ú BytesToTransferÀÇ ÇÕÀÌ ¹Ì´ÏÆ÷Æ®ÀÇ ¸®½Ãºê ÀεðÄÉÀ̼dz»¿¡¼­ ÁöÁ¤µÈ ÆÐŶ Å©±â¿Í µ¿µîÇϰųª ȤÀº ÀÛ°Ô µÉ °ÍÀÌ´Ù. ÀÌ °ªÀº 0ÀÌ µÉ °ÍÀÌ´Ù.

¸®Åϰª

MiniportTransferData´Â ´ÙÀ½°ú Çϳª·Î ¸®ÅÏÇÒ ¼ö ÀÖ´Ù:

NDIS_STATUS_SUCCESS
MiniportTransferData´Â ¿ä±¸µÈ µ¥ÀÌÅ͸¦ ÇÁ·ÎÅäÄÝ Á¦°ø ÆÐŶ¿¡ º¹»çÇϰí BytesTransferred´Â º¹»çµÈ ¹ÙÀÌÆ® ¼ö·Î ¼³Á¤ÇÑ´Ù.

NDIS_STATUS_PENDING
µå¶óÀ̹ö´Â NdisMTransferDataComplete¿¡ ´ëÇÑ È£Ãâ·Î ºñµ¿±âÀûÀ¸·Î Àü¼ÛÀ» ¿Ï·áÇÒ °ÍÀÌ´Ù.

NDIS_STATUS_FAILURE
µ¥ÀÌÅͰ¡ º¹»çµÇÁö ¾Ê°Å³ª ÀÔ·Â Àü¼Û ¹üÀ§°¡ À¯È¿ÇÏÁö ¾Ê´Ù.

ÁÖ¼®

MiniportTransferData´Â ¼ö½ÅµÈ ÆÐŶÀÇ ³»¿ëµéÀ» ÁÖ¾îÁø ÇÁ·ÎÅäÄÝ ÇÒ´ç ÆÐŶ¿¡ º¹»çÇÑ´Ù.

NDIS´Â ProtocolReceive ÇÔ¼ö°¡ NdisTransferData¸¦ È£ÃâÇÒ ¶§ MiniportTransferData¸¦ È£ÃâÇÑ´Ù. ÆÐŶ°ú °ü·ÃµÈ ¹Ìµð¾î Çì´õ´Â º¹»çÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ´ÜÁö ÆÐŶÀÇ µ¥ÀÌÅÍ ºÎºÐÀÌ º¹»çµÉ ¼ö ÀÖ´Ù. NdisTransferData¿¡ Àü´ÞµÇ¾îÁö´Â ºÎºÐÀº °áÄÚ ¹Ìµð¾î Çì´õ¸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù. Ç×»ó, MiniportTransferData¿¡ ByteOffset ÀÔ·ÂÀº ¹Ì´ÏÆ÷Æ®°¡ ÀÌ¹Ì lookahead buffer³»¿¡¼­ ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌÅ͸¦ »«´Ù.(exclude)

¹Ì´ÏÆ÷Æ®´Â Çѹø ÀÌ»ó ÁÖ¾îÁø ÆÐŶÀ» º¹»çÇϱâ À§ÇØ ÁغñµÇ¾îÁú °ÍÀÌ´Ù. ¸¸¾à NICÀÌ ÁÖ¾îÁø ÆÐŶÀ» ´ÜÁö Çѹø¸¸ Àд °ÍÀ» Áö¿øÇÑ´Ù¸éÀº, ¹Ì´ÏÆ÷Æ®´Â °¢ ¼ö½ÅµÈ ³×Æ®¿öÅ© ÆÐŶÀ» staging buffer¿¡ º¹»çÇØ¾ß ÇÑ´Ù. MiniportTrasnferData´Â ¾ó¸¶³ª ¸¹Àº ¹öÆÛ µð½ºÅ©¸³Å͵éÀÌ ÇÒ´çµÈ ÇÁ·ÎÅäÄÝ¿¡¼­ Á¦°øµÇ´Â Áö¸¦ °áÁ¤Çϱâ À§ÇØ NdisQueryPacket¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ÇÁ·ÎÅäÄÝÀº ¿ä±¸µÈ Àü¼ÛÀ» µµ¸ðÇÏ´Â(accommodates) ÆÐŶ µð½ºÅ©¸³Å͸¦ Á¦°øÇϴ åÀÓÀÌ ÀÖ´Ù. MiniportTransferData´Â °¢ ÇÁ·ÎÅäÄÝ Á¦°ø ¹öÆÛ³»¿¡ º¹»çÇÏ´Â µ¥ÀÌÅͰ¡ ¾ó¸¶³ª µÇ´ÂÁö¸¦ °áÁ¤Çϱâ À§ÇØ NdisQueryPacket¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.

MiniportTransferData´Â ¸¸¾à ÁÖ¾îÁø ByteOffset°ú BytesToTransfer°¡ ¿ø·¡ ÀεðÄÉÀÌÆ®µÈ ÆÐŶ Å©±â¸¦ ÃʰúÇÑ´Ù¸éÀº ¿ä±¸¸¦ ½ÇÆÐÇÒ ¼ö ÀÖ´Ù. ´ëüÀûÀ¸·Î, MiniportTransferData°¡ °£´ÜÈ÷ À¯È¿ÇÑ ByteOffset¿¡¼­ ½ÃÀÛÇÏ´Â ¸ðµç ÀÌ¿ëÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ÀÖ´Ù.

MiniportTransferData°¡ ºñµ¿±âÀûÀ̶ó¸éÀº, ÀÌ ÇÔ¼ö¸¦ °¡Áö´Â ¹Ì´ÏÆ÷Æ®´Â Àü¼ÛÀÌ Áö¿¬µÇ´Â µ¿¾È ¸®½Ãºê ÀεðÄÉÀ̼ǵéÀ» Àü´ÞÇÒ ¼ö ¾ø´Ù. ¸¸¾à MiniportTransferData°¡ NDIS_STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸éÀº, ¹Ì´ÏÆ÷Æ®´Â Àü¼ÛÀÌ ¿Ï·áµÉ ¶§ NdisMTransferDataComplete¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.

NdisMIndicateReceivePacket·Î ÆÐŶµéÀ» ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹ö´Â ±×·¯ÇÑ µå¶óÀ̹ö´Â Ç×»ó ¹Ù¿îµåµÈ ÇÁ·ÎÅäÄݵ鿡 ´ëÇØ full ÆÐŶµéÀ» ÀεðÄÉÀÌÆ®Çϱ⠶§¹®¿¡ MiniportTransferDataComplete¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.

ÀÎÅÍ·´Æ®µéÀÌ ¾ÆÁ÷ MiniportTransferData°¡ È£ÃâµÇ¾îÁú ¶§ ºÒ°¡´ÉµÉ °ÍÀÌ´Ù.

µðÆúÆ®·Î, MiniportTransferData´Â IRQL DISPATCH_LEVEL¿¡¼­ ½ÇÇàÇÑ´Ù.