ClientEventChainedReceiveDatagram

NTSTATUS
   ClientEventChainedReceiveDatagram(
       IN PVOID TdiEventContext,
       IN LONG SourceAddressLength,
       IN PVOID SourceAddress,
       IN LONG OptionsLength,
       IN PVOID Options,
       IN ULONG ReceiveDatagramFlags,
       IN ULONG ReceiveDatagramLength,
       IN ULONG StartingOffset,
       IN PMDL Tsdu,
       IN PVOID TsduDescriptor
       );

ClientEventChainedReceiveDatagram ÇÔ¼ö´Â Ŭ¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼­ ¿­¸° ·ÎÄà Ʈ·£½ºÆ÷Æ® ÁÖ¼Ò·Î Áö½ÃµÇ´Â ¿ø°ÝÁö·ÎºÎÅÍ µé¾î¿À´Â ¸®½Ãºê¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ®°¡ È£ÃâÇÏ´Â À̺¥Æ® Çڵ鷯ÀÌ´Ù.

NDIS ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ¼­ Æ®·£½ºÆ÷Æ®·Î ÀεðÄÉÀÌÆ®µÈ Àüü TSDU¸¦ Àü´ÞÇÒ ¶§ ±×¸®°í Ŭ¶óÀÌ¾ðÆ®°¡ µ¥ÀÌŸ¸¦ ¼ÒºñÇÒ ¶§±îÁö ¹öÆÛÈ­µÈ TSDU·ÎÀÇ Á÷Á¢ Àбâ Àü¿ëÁ¢±ÙÀ» ¾òÀ» ¶§ Æ®·£½ºÆ÷Æ®´Â ClientEventReceiveDatagram ÇÔ¼öº¸´Ù´Â ÀÌ Çڵ鷯¸¦ È£ÃâÇÑ´Ù.

¸Å°³º¯¼ö

TdiEventContext
ClientEventChainedReceiveDatagram ÇÔ¼ö°¡ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®¸¦ °¡Áö°í µî·ÏµÉ ¶§ TdiBuildSetEventHandler ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ IRP¾È¿¡ Á¦°øµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ÄÁÅØ½ºÆ®¸¦ °¡¸®Å²´Ù.

SourceAddressLength
SourceAddress¿¡ ¹öÆÛÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼­¼úÇÑ´Ù.

SourceAddress
º¸³»Áö´Â µ¥ÀÌŸ±×·¥À¸·ÎºÎÅÍ ¿ø°ÝÁ¦ÀÇ Æ®·£½ºÆ÷Æ® ÁÖ¼Ò¸¦ ¼­¼úÇÏ´Â ¹öÆÛ¸¦ °¡¸®Å²´Ù.

OptionsLength
Options¿¡ ¹öÆÛÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼­¼úÇÑ´Ù. 0Àº¿É¼ÇÀÇ ¹®ÀÚ¿­ÀÌ »ç¿ëµÉ ¼ö ¾øÀ½À» ÀǹÌÇÑ´Ù. ÀÌ ¸Å°³º¯¼ö°¡ 0À̸é Options´Â NULLÀÌ´Ù.

Options
µ¥ÀÌŸ±×·¥À» °¡Áö°í º¸³»Áø Æ®·£½ºÆ÷Æ® ƯÁ¤ ¿É¼ÇÀÇ ¹®ÀÚ¿­À» ¼­¼úÇÏ´Â ¹öÆÛ¸¦ °¡¸®Å²´Ù. OptionsLength°¡ 0À̸é ÀÌ Æ÷ÀÎÅÍ´Â NULLÀÌ´Ù.

ReceiveDatagramFlags
´ÙÀ½ÀÇ Ç÷¡±×¸¦ OR ¿¬»êÇÏ¹Ç·Î½á ¸®½Ãºê µ¥ÀÌŸ±×·¥ ÀεðÄÉÀ̼ÇÀÇ Æ¯Â¡À» ¼­¼úÇÑ´Ù:

TDI_RECEIVE_ENTIRE_MESSAGE
Tsdu¿¡ ¸ÊµÈ ¹öÆÛ´Â Àüü TSDU¸¦ Æ÷ÇÔÇÑ´Ù. ±×¸®°í ClientEventChainedReceiveDatagram ÇÔ¼ö°¡ STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é Ŭ¶óÀÌ¾ðÆ®´Â ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸ¸¦ ¼ÒºñÇÒ ¶§±îÁö ÀÌ ¹öÆÛ·ÎÀÇ Àбâ Àü¿ëÁ¢±ÙÀ» À¯ÁöÇÑ´Ù. ClientEventChainedReceiveDatagram ÇÔ¼ö°¡ È£ÃâµÉ ¶§ ÀÌ Ç÷¡±×´Â Ç×»ó ¼³Á¤µÈ´Ù.

TDI_RECEIVE_BROADCAST
¸®½Ãºê´Â ºê·Îµåij½ºÆ®ÀÌ´Ù.

TDI_RECEIVE_MULTICAST
¸®½Ãºê´Â ¸ÖƼij½ºÆ®ÀÌ´Ù.

ReceiveLength
Tsdu¿¡ ¸ÊµÈ ¹öÆÛ¾È¿¡ Ŭ¶óÀÌ¾ðÆ® µ¥ÀÌŸÀÇ ¹ÙÀÌÆ® ¼ö¸¦ ¼­¼úÇÑ´Ù.

StartingOffset
tsdu¿¡ ¸ÊµÈ ¹öÆÛ¾È¿¡¼­ ½ÃÀÛÇϴ Ŭ¶óÀÌ¾ðÆ® µ¥ÀÌŸÀÇ ¹ÙÀÌÆ® ¿É¼ÂÀ» ¼­¼úÇÑ´Ù.

Tsdu
¸®½ÃºêµÈ TSDU¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ ¸ÅÇÎÇϴ üÀÎÈ­µÈ MDLÀÇ Ã³À½ MDLÀ» °¡¸®Å²´Ù.

TsduDescriptor
¸®½ÃºêµÈ TSDU¿¡ ´ëÇÑ µð½ºÅ©¸³Å͸¦ °¡¸®Å²´Ù. ÀÌ ¸®½Ãºê ÀεðÄÉÀ̼ǿ¡ ´ëÇØ¼­ ClientEventChainedReceiveDatagram ÇÔ¼ö°¡ STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é Ŭ¶óÀÌ¾ðÆ®´Â ¼øÂ÷ÀûÀ¸·Î ÀÌ Æ÷ÀÎÅ͸¦ °¡Áö°í TdiReturnChainedReceives ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù. ÀÌ Æ÷ÀÎÅÍ´Â ClientEventChainedReceiveDatagram ÇÔ¼ö°¡ STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é TdiReturnChainedReceives ÇÔ¼ö¿¡ ´ëÇÑ ¸Å°³º¯¼ö·Î½á¸¸ÀÌ Å¬¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼­ »ç¿ëµÇ´Â ºÒÅõ¸íÇÑ º¯¼ö¿¡ ´ëÇÑ ÇÚµé·Î½á Ãë±ÞµÇ¾î¾ßÇÑ´Ù.

¸®Åϰª

ClientEventChainedReceiveDatagram ÇÔ¼ö´Â ´ÙÀ½Áß Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù:

STATUS_SUCCESS
Ŭ¶óÀÌ¾ðÆ®°¡ ÁÖ¾îÁø TSDU¿¡¼­ ¸ðµç µ¥ÀÌŸ¸¦ ¼ÒºñÇß°í Áï½Ã ÇϺÎÀÇ µå¶óÀ̹ö·Î ¹öÆÛÀÇ ¼ÒÀ¯±ÇÀ» ¸®ÅÏÇϰí ÀÖ´Ù°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.

STATUS_PENDING
Ŭ¶óÀÌ¾ðÆ®°¡ ÁÖ¾îÁø TsduDescriptor¸¦ °¡Áö°í TdiReturnChainedReceives ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§±îÁö ÁÖ¾îÁø TSDU¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇϰí ÀÖ´Ù°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.

STATUS_DATA_NOT_ACCEPTED
Ŭ¶óÀÌ¾ðÆ®°¡ TSDU¿Í ¹«°üÇÏ´Ù°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.

ÁÖ¼®

µ¥ÀÌŸ±×·¥ÀÌ ¿ø°ÝÁö·ÎºÎÅÍ µµÂøÇßÀ» ¶§ Æ®·£½ºÆ÷Æ®´Â µ¥ÀÌŸ±×·¥ÀÇ ¸ñÀûÁö ÁÖ¼Ò¿Í ÀÏÄ¡ÇÏ´Â ÁÖ¼Ò¸¦ ±¸ÇöÇÑ ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡Áö°í °¢°¢ÀÇ Å¬¶óÀÌ¾ðÆ®¸¦ À§Çؼ­ µî·ÏµÈ ClientEvent(Chained)ReceiveDatagram Çڵ鷯¸¦ È£ÃâÇÑ´Ù. µ¥ÀÌŸ±×·¥Àº ¼º¸³µÈ ¿¬°á°ú ¹«°üÇϱ⠶§¹®¿¡ TDI µå¶óÀ̹ö´Â µ¥ÀÌŸ±×·¥À» µû¶ó¼­ ¸®½ÃºêÇϴ Ŭ¶óÀÌ¾ðÆ®·Î SourceAddress¿¡ ¿ø°ÝÁöÀÇ Àü¼ÛÀÚÀÇ Æ®·£½ºÆ÷Æ® ÁÖ¼Ò¸¦ Àü´ÞÇÑ´Ù.

ClientEventChainedReceiveDatagram ÇÔ¼öÀÇ È£ÃâÀº ÀÔ·Â StartingOffset°ú ReceiveLength¿¡ ÀÇÇØ¼­ ¼­¼úµÈ ¹öÆÛ¾È¿¡ ¹üÀ§¿¡ ´ëÇØ¼­ ÀεðÄÉÀÌÆ®µÈ TSDU·ÎÀÇ Àбâ Àü¿ëÁ¢±ÙÀ» Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ÁØ´Ù. ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸ°¡ Ŭ¶óÀÌ¾ðÆ®¿Í °ü°èµÈ °ÍÀ̶ó¸é ClientEventChainedReceiveDatagram ÇÔ¼ö´Â Ŭ¶óÀÌ¾ðÆ® ÇÒ´ç ³»ºÎ ¹öÆÛ¾ÈÀ¸·Î ÀεðÄÉÀÌÆ®µÈ TSDU µ¥ÀÌŸÀÇ ¹üÀ§¸¦ º¹»çÇϰí Áï½Ã STATUS_SUCCESS¸¦ ¸®ÅÏÇϰųª STATUS_PENDINGÀ» ¸®ÅÏÇÏ¹Ç·Î½á ¹öÆÛÀÇ ÅëÁ¦¸¦ À¯ÁöÇÑ´Ù. STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é Ŭ¶óÀÌ¾ðÆ®°¡ µ¥ÀÌŸ¸¦ ¼ÒºñÇÑ ÈÄ¿¡ ¹öÆÛÀÇ ÅëÁ¦¸¦ ¾çµµÇϱâ À§Çؼ­ ÀÔ·Â TsduDescriptor¸¦ °¡Áö°í ¼øÂ÷ÀûÀ¸·Î TdiReturnChainedReceives ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù.

ÀϹÝÀûÀ¸·Î TdiReturnChainedReceives ÇÔ¼ö·ÎÀÇ ±×·¯ÇÑ È£ÃâÀº °¡´ÉÇÑ ÇÑ »¡¸® ¹ß»ýÇØ¾ßÇÑ´Ù. ¿¬ÀåµÈ ±â°£µ¿¾È ClientEventChainedReceiveDatagram ÇÔ¼ö·Î Àü´ÞµÈ ¹öÆÛ¸¦ À¯ÁöÇÏ´Â °ÍÀº ÇϺÎÀÇ µå¶óÀ̹ö¿¡¼­ I/OÀÇ È¿À²À» °­¿äÇÑ´Ù. ¿Ö³ÄÇÏ¸é ¹öÆÛ¸¦ ÇÒ´çÇÑ NDIS ¹Ì´ÏÆ÷Æ®´Â TdiReturnChainedReceives ÇÔ¼ö°¡ È£ÃâµÉ ¶§±îÁö ¼øÂ÷ÀûÀÎ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀ» À§Çؼ­ ÀÌ ÀÚ¿øÀ» ´Ù½Ã »ç¿ëÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.

ClientEventChainedReceiveDatagram ÇÔ¼ö·ÎÀÇ È£ÃâÀÌ Ç×»ó Àüü TSDUÀÇ »ç¿ëÀ» ÀεðÄÉÀÌÆ®Çϱ⠶§¹®¿¡ Ŭ¶óÀÌ¾ðÆ®´Â ´ëÀÀÇÏ´Â ClientEventReceiveDatagram Çڵ鷯°¡ °¡²û Àüü TSDU¸¦ ¾ò¾î¾ßÇÒ ¶§ ±×·¯ÇÑ ÀεðÄÉÀ̼ǿ¡ ´ëÇØ¼­ TDI_RECEIVE_DATAGRAM ¸®Äù½ºÆ®¸¦ °áÄÚ ¼³Á¤Çؼ­´Â ¾ÈµÈ´Ù. °á±¹ ClientEventChainedReceiveDatagram ÇÔ¼ö·Î ¸¸µé·¯Áø ¸®½Ãºê ÀεðÄÉÀ̼ÇÀº Ŭ¶óÀ̾ðÆ®, ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®, ½Ã½ºÅÛ Àüü¿¡ ´ëÇÑ È£Ãâ °úºÎÇϸ¦ ÁÙÀÓÀ¸·Î½á ³×Æ®¿÷ I/O È¿À²°ú ÆÛÆ÷¸Õ½º¸¦ Áõ°¡½ÃŲ´Ù. Æ®·£½ºÆ÷Æ®´Â ClientEventChainedReceiveDatagram ÇÔ¼ö·Î ¸¸µé¾îÁø °°Àº ÀεðÄÉÀ̼ÇÀ» °¡Áö°í ´ëÀÀÇÏ´Â ClientEventReceiveDatagram Çڵ鷯¸¦ °áÄÚ È£ÃâÇÒ ¼ö ¾ø´Ù.

ClientEventChainedReceiveDatagram ÇÔ¼ö°¡ STATUS_SUCCESS³ª STATUS_DATA_NOT_ACCEPTED¸¦ °¡Áö°í ÅëÁ¦¸¦ ¸®ÅÏÇÒ ¶§ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ ÀÌ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀ» °¡Áö°í ÇàÇØÁø´Ù°í °¡Á¤ÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ ÀεðÄÉÀÌÆ®µÈ TSDU¸¦ ¼ÒºñÇßÀ» ¶§ TdiReturnChainedReceives ÇÔ¼öÀÇ È£Ãâ¿¡ Ã¥ÀÓÀÌ Àֱ⠶§¹®¿¡ ÀÌ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀÇ ¿Ï·á¸¦ Æ®·¢ÇÒ ¹æ¹ýÀÌ ¾ø´Ù°í °¡Á¤ÇÑ´Ù.

Ŭ¶óÀÌ¾ðÆ®°¡ µé¾î¿À´Â µ¥ÀÌŸ±×·¥ÀÇ Å¸°ÙÀÎ ·ÎÄà Ʈ·£½ºÆ÷Æ® ÁÖ¼Ò»ó¿¡¼­ µÎµå·¯Áø ¸®½Ãºê ȤÀº ¸®½Ãºê µ¥ÀÌŸ±×·¥ ¸®Äù½ºÆ®¸¦ °¡Áø´Ù¸é ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ®´Â ClientEventChainedReceiveDatagram ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù.

³×Æ®¿÷¿¡¼­ TDI µå¶óÀ̹ö°¡ ¸®½ÃºêÇÏ´Â ºê·Îµåij½ºÆ® µ¥ÀÌŸ±×·¥¿¡ ´ëÇØ¼­ ÀεðÄÉÀ̼ÇÀ» ¹Þ±â À§Çؼ­ Ŭ¶óÀÌ¾ðÆ®´Â ÇϺΠƮ·£½ºÆ÷Æ®ÀÇ ºê·Îµåij½ºÆ® ÁÖ¼Ò¸¦ ¿­°í ClientEvent(Chained)ReceiveDatagram Çڵ鷯¸¦ µî·ÏÇØ¾ßÇÑ´Ù.

ClientEventChainedReceiveDatagram ÇÔ¼ö´Â IRQL DISPATCH_LEVEL¿¡¼­ ¿¬»êÀ» ¼öÇàÇÒ ´É·ÂÀÌ ÀÖ¾î¾ßÇÑ´Ù.