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