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¿¡¼ ½ÇÇàÇÑ´Ù.
|