TdiReturnChainedReceives

VOID
   TdiReturnChainedReceives(
       IN PVOID *TsduDescriptors,
       IN ULONG NumberOfTsdus
       );

TdiReturnChainedReceives ÇÔ¼ö´Â üÀÎÈ­µÈ °¢°¢ÀÇ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀ» À§Çؼ­ STATUS_PENDINGÀ» ¸®ÅÏÇÑ Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®·Î Àü¿¡ Àü´ÞµÈ ÇϳªÀÌ»óÀÇ °ÍÀ¸·Î üÀÎÈ­µÈ ¸®½Ãºê ÀεðÄÉÀ̼ǿ¡ ´ëÇØ¼­ TSDU µð½ºÅ©¸³ÅÍÀÇ ¹è¿­À» ¸®ÅÏÇÑ´Ù.

¸Å°³º¯¼ö

TsduDescriptors
NDIS_PACKET ŸÀÔÀÇ µð½ºÅ©¸³ÅÍ ¹è¿­À» °¡¸®Å²´Ù.

NumberOfTsdus
TsduDescriptors¿¡ ¹è¿­¿¡¼­ ¹¦¼ÒÀÇ ¼ö¸¦ ¼­¼úÇÑ´Ù.

ÁÖ¼®

´õ ºü¸¥ ³×Æ®¿÷ÀÇ È¿À²À» À§Çؼ­ TDI Æ®·£½ºÆ÷Æ®´Â ´ÙÀ½ÀÇ »óȲ¿¡¼­ ÁÖ¾îÁö´Â ¸®½ÃºêµÈ Àüü ³×Æ®¿÷ ÆÐŶÀ» Æ÷ÇÔÇÏ´Â NDIS ¹Ì´ÏÆ÷Æ® ÇÒ´ç ¹öÆÛÀÇ Ã¼ÀÎÀ¸·ÎÀÇ Á¢±ÙÀ» Ŭ¶óÀÌ¾ðÆ®¿¡°Ô Àü´ÞÇÑ´Ù:

  • Æ®·£½ºÆ÷Æ® ½ºÅÃÀÇ ¹Ø¿¡¼­ NDIS ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ NdisRegisterProtocol ÇÔ¼ö¸¦ °¡Áö°í ProtocolReceivePacket ÇÔ¼ö¸¦ µî·ÏÇß´Ù. ±×·¡¼­ ÇϺÎÀÇ NDIS ¹Ì´ÏÆ÷Æ® ¸®½Ãºê ¹öÆÛÀÇ ³»¿ëÀ¸·ÎÀÇ ÀбâÀü¿ë Á¢±ÙÀ» Çã¶ôÇÏ´Â ÀεðÄÉÀ̼ÇÀ» ¸®½ÃºêÇÒ ¼ö ÀÖ´Ù. Æ®·£½ºÆ÷Æ®°¡ µå¶óÀ̹öÀÇ ¹°¸® NIC°ú Á÷Á¢ ¹ÙÀεùÇÑ´Ù¸é ProtocolReceivePacket ÇÔ¼ö´Â NICÀÇ ¸®½Ãºê ¹öÆÛ¿¡ ´ëÇØ¼­ Àбâ Àü¿ëÁ¢±ÙÀ» ¾ò´Â´Ù.
  • ÇϺÎÀÇ NIC µå¶óÀ̹ö´Â ÀεðÄÉÀ̼ÇÀ» ¸®½ÃºêÇϱâ À§Çؼ­ NdisMIndicateReceivePacket ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. µû¶ó¼­ Æ®·£½ºÆ÷Æ® ½ºÅÃÀÇ »óÀ§¿¡¼­ TDI µå¶óÀ̹ö¿¡ ´ëÇÑ ÇϳªÀÌ»óÀÇ Å¬¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼­ ¼ö½ÅµÈ µ¥ÀÌŸ¸¦ ¼ÒºñÇÒ ¶§±îÁö ProtocolReceivePacket ÇÔ¼ö¸¦ Á¦°øÇÏ´Â ¹ÙÀεùµÈ ÇÁ·ÎÅäÄÝ·Î ÇÏ¿©±Ý NIC µå¶óÀ̹öÀÇ ¸®½Ãºê ¹öÆÛ¾È¿¡ ¸®½ÃºêµÈ µ¥ÀÌŸ·ÎÀÇ ÀбâÀü¿ë Á¢±ÙÀ» Çã¶ôÇÑ´Ù. ±×·¯ÇÑ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀº Ç×»ó °¢°¢ÀÇ ÀεðÄÉÀÌÆ®µÈ NDIS_PACKET ŸÀÔÀÇ TSDU µð½ºÅ©¸³ÅÍ¿¡ üÀÎÈ­µÈ ¹öÆÛ µð½ºÅ©¸³ÅÍ(MDL)¿¡ ÀÇÇØ¼­ ¸ÊµÈ Àüü ³×Æ®¿÷ ÆÐŶÀÌ´Ù.
  • Ŭ¶óÀÌ¾ðÆ®´Â Æ®·£½ºÆ÷Æ®¿Í ÇÔ²² TDI_EVENT_CHAINED_RECEIVE ȤÀº TDI_EVENT_RECEIVE_DATAGRAM À̺¥Æ®¸¦ À§Çؼ­ ±×µéÀÇ Çڵ鷯¸¦ µî·ÏÇß´Ù.
±×·¯ÇÑ Æ®·£½ºÆ÷Æ®ÀÇ ProtocolReceivePacket ÇÔ¼ö°¡ È£ÃâµÉ ¶§ Æ®·£½ºÆ÷Æ® ½ºÅÿ¡¼­ TDI µå¶óÀ̹ö·Î ¸®½Ãºê ÀεðÄÉÀ̼ÇÀ» Àü´ÞÇÒ ¼ö ÀÖ´Ù. TDI µå¶óÀ̹ö´Â ±× ¸®½Ãºê¸¦ ÀûÀýÇÑ ClientEventReceive(Datagram) ÇÔ¼ö·Î ÀεðÄÉ´ÏÆ®ÇÑ´Ù. µû¶ó¼­ Æ®·£½ºÆ÷Æ®¿¡¼­ ÀÌÁßÀ¸·Î ¹öÆÛÈ­µÈ ±×·¯ÇÑ ¸®½Ãºê ÆÐŶÀÇ °úºÎÇÏ ¾øÀÌ ÀεðÄÉÀÌÆ®µÈ TSDU¸¦ ó¸®ÇÒ ±âȸ¸¦ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ÁØ´Ù. ClientEventReceive(Datagram) ÄÝ¹é ·çÆ¾ÀÌ STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é Ŭ¶óÀÌ¾ðÆ®´Â TSDU µð½ºÅ©¸³Å͸¦ °¡Áö°í TdiReturnChainedReceives ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§±îÁö ÀεðÄÉÀÌÆ®µÈ ÆÐŶÀ¸·ÎÀÇ À¯ÀÏÇÑ ÀбâÀü¿ë Á¢±ÙÀ» À¯ÁöÇÑ´Ù.

TdiReturnChainedReceives ÇÔ¼ö·ÎÀÇ TDI Ŭ¶óÀ̾ðÆ®ÀÇ È£ÃâÀº ÀεðÄÉÀÌÆ®µÈ ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í ¸ðµç ¿¬°üµÈ ÀÚ¿øÀ» Æ®·£½ºÆ÷Æ® ½ºÅÿ¡¼­ ÀεðÄÉÀÌÆ®ÇÏ´Â TDI µå¶óÀ̹ö¿Í ÇÏÀ§ µå¶óÀ̹ö¸¦ ¿ìȸÇϹǷνá Á÷Á¢ NDIS¿¡°Ô ¸®ÅÏÇÑ´Ù. À̰ÍÀº NDIS·Î ÇÏ¿©±Ý NDIS°¡ °°Àº NDIS ¹Ì´ÏÆ÷Æ®¿Í ÀڽŵéÀ» ¹ÙÀεùÇÑ ´Ù¸¥ Æ®·£½ºÆ÷Æ®·Î ÀÌ Ã¼ÀÎÈ­µÈ ¸®½Ãºê¸¦ ÀεðÄÉÀÌÆ®ÇÑ ÈÄ¿¡ ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í ¿¬°üµÈ ÀÚ¿øÀ» ¿ø·¡ ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í Ã¼ÀÎÈ­µÈ ¹öÆÛ µð½ºÅ©¸³Å͸¦ ÇÒ´çÇÑ ÇϺÎÀÇ NDIS ¹Ì´ÏÆ÷Æ®(ȤÀº NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö)·Î ½Å¼ÓÇÏ°Ô ¸®ÅÏÇÏ´Â °ÍÀ» Çã¶ôÇÑ´Ù.

ÇϺÎÀÇ NDIS µå¶óÀ̹ö¿¡ ÀÇÇØ¼­ Æ®·£½ºÆ÷Æ®ÀÇ ProtocolReceive ÇÔ¼ö·Î ÀεðÄÉÀÌÆ®µÈ ÆÐŶÀº ³»ºÎÀûÀ¸·Î Æ®·£½ºÆ÷Æ®¾È¿¡ ¹öÆÛÈ­µÇ¾î¾ß ÇÏÁö¸¸ ±×µéÀº Ŭ¶óÀ̾ðÆ®ÀÇ ClientEventReceive, ClientEventReceiveExpedited, ȤÀº ClientEventReceiveDatagram ÇÔ¼ö·Î ÀεðÄÉÀÌÆ®µÇ¾î¾ßÇÑ´Ù. À̵é Ŭ¶óÀÌ¾ðÆ® À̺¥Æ® Çڵ鷯·ÎÀÇ È£ÃâÀº Ŭ¶óÀÌ¾ðÆ®¿¡°Ô °¡´ÉÇÑ ÇÑ »¡¸® ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸ¸¦ º¹»çÇϵµ·Ï Áö½ÃÇÑ´Ù. ±×¸®°í ClientEventReceive(Expedited/Datagram) ÇÔ¼ö´Â À̺¥Æ® Çڵ鷯°¡ ÅëÁ¦¸¦ ¸®ÅÏÇÒ ¶§ ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ·ÎÀÇ Å¬¶óÀÌ¾ðÆ® Á¢±ÙÀ» Çã¶ôÇÑ´Ù.

µî·ÏµÈ ClientEventChainedReceive, ClientEventChainedReceiveExpedited, ±×¸®°í ClientEventChainedReceiveDatagram Çڵ鷯¸¦ °¡Áö´Â Ä¿³Î ¸ðµå Ŭ¶óÀÌ¾ðÆ®¸¸ÀÌ TdiReturnChainedReceives ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

TdiReturnChainedReceives ÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼­ ½ÇÇàÇÑ´Ù.