NdisMTrIndicateReceive
VOID
NdisMTrIndicateReceive(
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE MiniportReceiveContext,
IN PVOID HeaderBuffer,
IN UINT HeaderBufferSize,
IN PVOID LookaheadBuffer,
IN UINT LookaheadBufferSize,
IN UINT PacketSize
);
|
NdisMTrIndicateReceive´Â NDIS¿¡°Ô ÅäÅ«¸µÆÐŶ(ȤÀº ÆÐŶÀÇ ¸î¸î Ãʱâ·è¾îÇìµåºÎºÐ)ÀÌ µµÂøÇߴٴ°ÍÀ» ¾Ë·ÁÁØ´Ù. ±×·¡¼ NDIS´Â ÆÐŶÀ» ¹ÙÀεùµÈ ÇÁ·ÎÅäÄݵ鿡°Ô Æ÷¿öµåÇÑ´Ù.
¸Å°³º¯¼ö
- MiniportAdapterHandle
- MiniportInitialize¿¡¼ ³Ö¾îÁØ ¿ø·¡ ÇÚµéÀ» ¸»ÇÑ´Ù.
- MiniportReceiveContext
- È£ÃâÀÚ°¡ Á¦°øÇÏ´Â ÄÁÅØ½ºÆ®ÇÚµéÀ» ¸»ÇÑ´Ù. NDIS´Â MiniportTransferDataÇÔ¼ö¿¡°Ô ÀÌ ÆÄ¶ó¹ÌÅ͸¦ ³Ö¾îÁÜÀ¸·Î½á ÀÌÇÚµéÀ» ¸®ÅÏÇÑ´Ù, ¸¸¾à ±×°ÍÀÌ È£ÃâµÈ´Ù¸é. ¹Ì´ÏÆ÷Æ®´Â ÆÐŶÀÌ ¹Þ¾ÆÁö°í Àִٴ°ÍÀ» °áÁ¤ÇϱâÀ§ÇØ ÀÌÇڵ鿡ÀÇÇØ ¼³°èµÈ ÄÁÅØ½ºÆ® ¿µ¿ªÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- HeaderBuffer
- ¹öÆÛÈµÈ ÆÐŶÇì´õÀÇ º£À̽º°¡»óÁÖ¼Ò¸¦ ¸»ÇÑ´Ù.
- HeaderBufferSize
- ÆÐŶÇì´õÀÇ ¹ÙÀÌÆ®»çÀÌÁ ¸»ÇÑ´Ù.
- LookaheadBuffer
- ÆÐŶ¿¡¼ µ¥ÀÌŸÀÇ Ã³À½ LookaheadBufferSizeÀÇ ¹ÙÀÌÆ®¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛÀÇ º£À̽º °¡»óÁÖ¼Ò¸¦ ¸»ÇÑ´Ù.
- LookaheadBufferSize
- ·è¾îÇìµå¹öÆÛÀÇ ¹ÙÀÌÆ®»çÀÌÁ ¸»ÇÑ´Ù. À̰ªÀº Àû¾îµµ MiniportSetInformationÀÌ OID_GEN_CURRENT_LOOKAHEAD·Î È£ÃâµÉ¶§ ¼³Á¤ÇØÁØ ·è¾îÇìµå¹öÆÛ»çÀÌÁ´Ù Å©´Ù. ÆÐŶÀÌ ÀÛ´Ù¸é ÆÐŶ¸¸Å Å©´Ù. ÆÐŶÀÌ ·è¾îÇìµå¹öÆÛ»çÀÌÁ´Ù ÀÛ´Ù¸é, ·è¾îÇìµå¹öÆÛ´Â ÀüüÇÁ·¹ÀÓÀ» Æ÷ÇÔÇÑ´Ù.
¸¸¾à ÃæºÐÇÑ ¹ÞÀºµ¥ÀÌŸ°¡ ´Ð¿¡¼ ÀÌ¿ëµÉ ¼ö ÀÖ´Ù¸é, ¹Ì´ÏÆ÷Æ®´Â LookaheadBufferSize¸¦ ÃÖ¼Ò·Î ¿ä±¸µÇ¾îÁö´Â °Íº¸´Ù Å©°Ô ¼³Á¤ÇÒ¼ö ÀÖ´Ù.
- PacketSize
- ¹ÞÀºÆÐŶµ¥ÀÌŸÀÇ ¹ÙÀÌÆ®»çÀÌÁ ¸»ÇÑ´Ù. ÀÌ °ªÀº HeaderBufferSize¸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù.
PacketSize°¡ LookaheadBufferSizeº¸´Ù Ŭ¶§, ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ÆÐŶ¾È¿¡ ³²¾Æ ÀÖ´Â µ¥ÀÌŸ¸¦ Àü´ÞÇÏ´Â MiniportTransferDataÇÔ¼ö¸¦ È£Ãâ½ÃŰ´Â NdisTransferData¸¦ È£ÃâÇÑ´Ù.
ÁÖ¼®
¸¸¾à ´ÐÀÌ OID_GEN_MEDIA_IN_USEÄõ¸®¿¡´ëÇÑ ÀÀ´äÀ¸·Î NdisMedium802_5 ·Î ¼³°èµÈ´Ù¸é,¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ NdisMIndicateReceivePacketÀ¸·Î ¹Þ¾Ò´Ù´Â°ÍÀ» ÀεðÄÉÀÌÆ®ÇÏÁö ¾Ê´Â´Ù¸é, ¹Ì´ÏÆ÷Æ®´Â NdisMTrIndicateReceive¸¦ È£ÃâÇÑ´Ù.
¹Ì´ÏÆ÷Æ®°¡ NdisMEthIndicateReceive¸¦ È£ÃâÇÒ¶§, NDIS´Â ÆÐŶÇì´õÀÇ Æ÷ÀÎÅÍ¿Í ÆÐŶÀÇ ÀüºÎȤÀº ÀϺÎÀÇ Æ÷ÀÎÅ͸¦ ¹ÙÀεùµÈ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö(µé)ÀÇ ProtocolReceive ÇÔ¼ö(µé)¿¡°Ô ³Ñ±æ°ÍÀÌ´Ù. ÀεðÄÉÀ̼ÇÀ» ¹ÞÀº °¢ ÇÁ·ÎÅäÄÝÀº ´ÙÀ½À» ÇÒ¼ö ÀÖ´Ù.
- ÀεðÄÉÀ̼ÇÀÌ ÇÁ·ÎÅäÄÝÀÇ Å¬¶óÀ̾ðÆ®(µé)¿¡°Ô °ü½ÉÀ» ²ô´Â°ÍÀÎÁö ¾Æ´ÏÁö¸¦ °áÁ¤ÇϱâÀ§ÇØ ÆÐŶÀÇ Çì´õ¿Í µ¥ÀÌŸ¸¦ °Ë»çÇÑ´Ù.
- ¸¸¾à ±×·¸´Ù¸é, Çì´õ¿Í µ¥ÀÌŸ¸¸ÅÀÇ Ä«ÇÇ´Â ÇÁ·ÎÅäÄÝÀÌ NdisMoveMemory·Î ÇÒ´çÇÑ ¸Þ¸ð¸®¿¡¼ º¼¼ö ÀÖ´Ù.
- ³²¾ÆÀִµ¥ÀÌŸ°¡ ÀÖ´Ù¸é üÀÎÈµÈ ÃæºÐÇÑ ¹öÆÛµð½ºÅ©¸³Å͵é·Î ÆÐŶµð½ºÅ©¸³Å͸¦ ÇÒ´çÇϰí, NdisTransferData¸¦ È£Ãâ·Î ÀÎÇÑ ÀεðÄÉÀ̼ǿ¡´ëÇØ ³²¾ÆÀִµ¥ÀÌŸ¸¦ ¾ò¾î¿Â´Ù.
NdisMTrIndicateReceiveÀ» ÅëÇÑ ÀεðÄÉÀÌÆ®¸¦ ¹ÞÀº ¾î¶² ÇÁ·ÎÅäÄݵå¶óÀ̹ö¿¡´ëÇØ¼, HeaderBuffer¿Í LookaheadBufferÀÇ ÁÖ¼ÒµéÀº ProtocolReceiveÇÔ¼ö¿¡´ëÇÑ ÇöÀç È£Ãâ µ¿¾È¿¡¸¸ À¯È¿Çϰí, ÀÌ·±ÇÑ ¹öÆÛµéÀº ÀбâÀü¿ëÀÌ´Ù. ÇÁ·ÎÅäÄݵå¶óÀ̹ö´Â ÀÌ·¯ÇÑ °ü·ÃµÈ ¹öÆÛµé·Î ÀεðÄÉÀÌÆ®µÈ ÆÐŶÀÇ Æ÷ÀÎÅ͸¦ ¼ÒÀ¯ÇÒ¼ö ¾ø°í,³ªÁß¿¡ »ç¿ëÇϱâÀ§ÇÑ ÀÌ·¯ÇÑ ¹öÆÛµéÀÇ Æ÷ÀÎÅ͵éÀ» ¼ÒÀ¯ÇÒ ¼öµµ ¾ø´Ù. ÇÁ·ÎÅäÄݵå¶óÀ̹ö°¡ ±×·±ÆÐŶÀ¸·ÎºÎÅÍ ¿ä±¸ÇÏ´Â µ¥ÀÌŸ´Â ¸®½ÃºêÀεðÄÉÀÌÆ®Çϴµ¿¾È º¹»çµÇ°í ÀúÀåµÇ¾î¾ß ÇÑ´Ù.
Çì´õ¾ÈÀÇ µ¥ÀÌŸ´Â ´Ð¿¡¼ ¹ÞÀº °Í°ú °°´Ù. ¹Ì´ÏÆ÷Æ®´Â ´Ð¿¡¼ ¹ÞÀº µ¥ÀÌŸÀÇ Çì´õµéȤÀº Æ®·¹ÀÌ·¯(ÀÚ·áÀÇ ¸Ç¸¶Áö¸· ºÎºÐ)¸¦ Á¦°ÅÇÒ Çʿ䰡 ¾ø´Ù.
Àü¼ÛÇÏ´Â µå¶óÀ̹ö´Â ¹Ìµð¾öÀÇ ¿ä±¸¿¡´ëÇØ¼ ³Ê¹« ªÀº ÆÐŶ¿¡°Ô ÆÐµùÀ» µ¡ºÙÀδÙ. ¹Þ´Â ¹Ì´ÏÆ÷Æ®´Â ³ªÁß¿¡ ÀεðÄÉÀÌÆ® ÇÏ´Â µ¥ÀÌŸ¿Í length¾È¿¡ ±×·± ÆÐµùÀ» Æ÷ÇÔÇÒ¼ö ÀÖ´Ù. °¢ ¹ÙÀεùµÈ ÇÁ·ÎÅäÄÝÀº ±×·± ÆÐµùÀ» ŽÁöÇÏ°í ¹«½ÃÇÑ´Ù.
NdisMTrIndicateReceiveÀÇ Á÷·ÄÈµÈ È£ÃâµéÀº IRQL DISPATCH_LEVEL¿¡¼ µ¿ÀÛÇÑ´Ù. NdisMTrIndicateReceiveÀÇ ºñÁ÷·ÄÈµÈ È£ÃâµéÀº IRQL DISPATCH_LEVELº¸´Ù ³·Àº ·¹º§¿¡¼ µ¿ÀÛÇÑ´Ù.
|