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 ÇÔ¼ö(µé)¿¡°Ô ³Ñ±æ°ÍÀÌ´Ù. ÀεðÄÉÀ̼ÇÀ» ¹ÞÀº °¢ ÇÁ·ÎÅäÄÝÀº ´ÙÀ½À» ÇÒ¼ö ÀÖ´Ù.

  1. ÀεðÄÉÀ̼ÇÀÌ ÇÁ·ÎÅäÄÝÀÇ Å¬¶óÀ̾ðÆ®(µé)¿¡°Ô °ü½ÉÀ» ²ô´Â°ÍÀÎÁö ¾Æ´ÏÁö¸¦ °áÁ¤ÇϱâÀ§ÇØ ÆÐŶÀÇ Çì´õ¿Í µ¥ÀÌŸ¸¦ °Ë»çÇÑ´Ù.
  2. ¸¸¾à ±×·¸´Ù¸é, Çì´õ¿Í µ¥ÀÌŸ¸¸Å­ÀÇ Ä«ÇÇ´Â ÇÁ·ÎÅäÄÝÀÌ NdisMoveMemory·Î ÇÒ´çÇÑ ¸Þ¸ð¸®¿¡¼­ º¼¼ö ÀÖ´Ù.
  3. ³²¾ÆÀִµ¥ÀÌŸ°¡ ÀÖ´Ù¸é üÀÎÈ­µÈ ÃæºÐÇÑ ¹öÆÛµð½ºÅ©¸³Å͵é·Î ÆÐŶµð½ºÅ©¸³Å͸¦ ÇÒ´çÇϰí, NdisTransferData¸¦ È£Ãâ·Î ÀÎÇÑ ÀεðÄÉÀ̼ǿ¡´ëÇØ ³²¾ÆÀִµ¥ÀÌŸ¸¦ ¾ò¾î¿Â´Ù.
NdisMTrIndicateReceiveÀ» ÅëÇÑ ÀεðÄÉÀÌÆ®¸¦ ¹ÞÀº ¾î¶² ÇÁ·ÎÅäÄݵå¶óÀ̹ö¿¡´ëÇØ¼­, HeaderBuffer¿Í LookaheadBufferÀÇ ÁÖ¼ÒµéÀº ProtocolReceiveÇÔ¼ö¿¡´ëÇÑ ÇöÀç È£Ãâ µ¿¾È¿¡¸¸ À¯È¿Çϰí, ÀÌ·±ÇÑ ¹öÆÛµéÀº ÀбâÀü¿ëÀÌ´Ù. ÇÁ·ÎÅäÄݵå¶óÀ̹ö´Â ÀÌ·¯ÇÑ °ü·ÃµÈ ¹öÆÛµé·Î ÀεðÄÉÀÌÆ®µÈ ÆÐŶÀÇ Æ÷ÀÎÅ͸¦ ¼ÒÀ¯ÇÒ¼ö ¾ø°í,³ªÁß¿¡ »ç¿ëÇϱâÀ§ÇÑ ÀÌ·¯ÇÑ ¹öÆÛµéÀÇ Æ÷ÀÎÅ͵éÀ» ¼ÒÀ¯ÇÒ ¼öµµ ¾ø´Ù. ÇÁ·ÎÅäÄݵå¶óÀ̹ö°¡ ±×·±ÆÐŶÀ¸·ÎºÎÅÍ ¿ä±¸ÇÏ´Â µ¥ÀÌŸ´Â ¸®½ÃºêÀεðÄÉÀÌÆ®Çϴµ¿¾È º¹»çµÇ°í ÀúÀåµÇ¾î¾ß ÇÑ´Ù.

Çì´õ¾ÈÀÇ µ¥ÀÌŸ´Â ´Ð¿¡¼­ ¹ÞÀº °Í°ú °°´Ù. ¹Ì´ÏÆ÷Æ®´Â ´Ð¿¡¼­ ¹ÞÀº µ¥ÀÌŸÀÇ Çì´õµéȤÀº Æ®·¹ÀÌ·¯(ÀÚ·áÀÇ ¸Ç¸¶Áö¸· ºÎºÐ)¸¦ Á¦°ÅÇÒ Çʿ䰡 ¾ø´Ù.

Àü¼ÛÇÏ´Â µå¶óÀ̹ö´Â ¹Ìµð¾öÀÇ ¿ä±¸¿¡´ëÇØ¼­ ³Ê¹« ªÀº ÆÐŶ¿¡°Ô ÆÐµùÀ» µ¡ºÙÀδÙ. ¹Þ´Â ¹Ì´ÏÆ÷Æ®´Â ³ªÁß¿¡ ÀεðÄÉÀÌÆ® ÇÏ´Â µ¥ÀÌŸ¿Í length¾È¿¡ ±×·± ÆÐµùÀ» Æ÷ÇÔÇÒ¼ö ÀÖ´Ù. °¢ ¹ÙÀεùµÈ ÇÁ·ÎÅäÄÝÀº ±×·± ÆÐµùÀ» ŽÁöÇÏ°í ¹«½ÃÇÑ´Ù.

NdisMTrIndicateReceiveÀÇ Á÷·ÄÈ­µÈ È£ÃâµéÀº IRQL DISPATCH_LEVEL¿¡¼­ µ¿ÀÛÇÑ´Ù. NdisMTrIndicateReceiveÀÇ ºñÁ÷·ÄÈ­µÈ È£ÃâµéÀº IRQL DISPATCH_LEVELº¸´Ù ³·Àº ·¹º§¿¡¼­ µ¿ÀÛÇÑ´Ù.