ClientEventChainedReceiveExpedited
NTSTATUS
ClientEventChainedReceiveExpedited(
IN PVOID TdiEventContext,
IN CONNECTION_CONTEXT ConnectionContext,
IN ULONG ReceiveFlags,
IN ULONG ReceiveLength,
IN ULONG StartingOffset,
IN PMDL Tsdu,
IN PVOID TsduDescriptor
);
ClientEventChainedReceiveExpedited ÇÔ¼ö´Â Ŭ¶óÀÌ¾ðÆ®°¡ ¼º¸³µÈ ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀ» °¡Áö°í ¿ø°ÝÁö·ÎºÎÅÍ µé¾î¿À´Â ½Å¼ÓÇÑ ¸®½Ãºê¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ®°¡ È£ÃâÇÏ´Â À̺¥Æ® Çڵ鷯ÀÌ´Ù.
Ŭ¶óÀÌ¾ðÆ®°¡ NDIS ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ¼ Æ®·£½ºÆ÷Æ®·Î ÀεðÄÉÀÌÆ®µÈ Àüü TSDU¸¦ Àü´ÞÇϰí Ŭ¶óÀÌ¾ðÆ®°¡ µ¥ÀÌŸ¸¦ ¼ºñÇÒ ¶§±îÁö ¹öÆÛÈµÈ TSDU·ÎÀÇ Á÷Á¢ Àбâ Àü¿ëÁ¢±ÙÀ» ¾òÀ» ¼ö ÀÖÀ» ¶§ Æ®·£½ºÆ÷Æ®´Â ClientEventReceiveExpedited ÇÔ¼öº¸´Ù´Â ÀÌ Çڵ鷯¸¦ È£ÃâÇÑ´Ù.
¸Å°³º¯¼ö
- TdiEventContext
- ClientEventChainedReceiveExpedited ÇÔ¼ö¸¦ µî·ÏÇϱâ À§Çؼ Ŭ¶óÀÌ¾ðÆ®°¡ TdiBuildSetEventHandler ÇÔ¼ö¸¦ °¡Áö°í Àü¿¡ ¼³Á¤ÇÑ IRP¾È¿¡ Á¦°øÇÑ ÄÁÅØ½ºÆ®¸¦ °¡¸®Å²´Ù.
- ConnectionContext
- ÀÌ ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ À§ÇÑ Å¬¶óÀ̾ðÆ®ÀÇ ÄÁÅØ½ºÆ®¸¦ °¡¸®Å²´Ù. ClientEventConnect Çڵ鷯°¡ ¿ø°ÝÁö·ÎºÎÅÍ ¿¬°áÁ¦°øÀ» ½ÂÀÎÇϰí ZwCreateFile ÇÔ¼ö¸¦ °¡Áö°í ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ ¿¾úÀ» ´ë Ŭ¶óÀÌ¾ðÆ®´Â Àü¿¡ ÀÌ °ªÀ» ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®·Î Á¦°øÇß´Ù.
- ReceiveFlags
- ´ÙÀ½ Ç÷¡±×µéÀÇ OR ¿¬»êÀ¸·Î½á ¸®½Ãºê ÀεðÄÉÀ̼ÇÀÇ Æ¯Â¡À» ¼¼úÇÑ´Ù:
- TDI_RECEIVE_EXPEDITED
- Tsdu¿¡ ¸ÊµÈ ¹öÆÛ´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¿ø°ÝÁö·ÎºÎÅÍ ¸®½ÃºêµÈ ½Å¼ÓÇÑ µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÑ´Ù. ClientEventChainedReceiveExpedited ÇÔ¼ö°¡ È£ÃâµÉ ¶§ ÀÌ Ç÷¡±×´Â Ç×»ó ¼³Á¤µÈ´Ù.
- TDI_RECEIVE_ENTIRE_MESSAGE
- Tsdu¿¡ ¸ÊµÈ ¹öÆÛ´Â Àüü TSDU¸¦ Æ÷ÇÔÇϰí Ŭ¶óÀÌ¾ðÆ®´Â ClientEventChainedReceiveExpedited ÇÔ¼ö°¡ STATUS_PENDINGÀ» ¸®ÅÏÇÒ ¶§ ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸ¸¦ ¼ÒºñÇÒ ¶§±îÁö ÀÌ ¹öÆÛ·ÎÀÇ Àбâ Àü¿ëÁ¢±ÙÀ» À¯ÁöÇÑ´Ù.
- ReceiveLength
- Tsdu¿¡ ¸ÊµÈ ¹öÆÛ¾È¿¡ Ŭ¶óÀÌ¾ðÆ® µ¥ÀÌŸÀÇ ¹ÙÀÌÆ® ¼ö¸¦ ¼¼úÇÑ´Ù.
- StartingOffset
- Tsdu¿¡ ¸ÊµÈ ¹öÆÛ¾È¿¡¼ Ŭ¶óÀÌ¾ðÆ® µ¥ÀÌŸ°¡ ½ÃÀÛÇÏ´Â ¹ÙÀÌÆ® ¿É¼ÂÀ» ¼¼úÇÑ´Ù.
- Tsdu
- ¸®½ÃºêµÈ µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ ¸ÅÇÎÇϴ üÀÎÈµÈ MDLÀÇ Ã³À½ MDLÀ» °¡¸®Å²´Ù.
- TsduDescriptor
- ¸®½ÃºêµÈ TSDU¿¡ ´ëÇÑ µð½ºÅ©¸³Å͸¦ °¡¸®Å²´Ù. ClientEventChainedReceiveExpedited ÇÔ¼ö°¡ ÀÌ ¸®½Ãºê ÀεðÄÉÀ̼ǿ¡ ´ëÇØ¼ STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é Ŭ¶óÀÌ¾ðÆ®´Â ¼øÂ÷ÀûÀ¸·Î ÀÌ Æ÷ÀÎÅ͸¦ °¡Áö°í TdiReturnChainedReceives ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù. ÀÌ Æ÷ÀÎÅÍ´Â ClientEventChainedReceiveExpedited ÇÔ¼ö°¡ STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é TdiReturnChainedReceives ÇÔ¼ö¿¡ ´ëÇÑ ¸Å°³º¯¼ö·Î½á¸¸ÀÌ Å¬¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼ »ç¿ëµÇ´Â ºÒÅõ¸íÇÑ º¯¼ö¿¡ ´ëÇÑ ÇÚµé·Î½á Ãë±ÞµÇ¾î¾ßÇÑ´Ù.
¸®Åϰª
ClientEventChainedReceiveExpedited ÇÔ¼ö´Â ´ÙÀ½Áß Çϳª¸¦ ¸®ÅÏÇÑ´Ù:
- STATUS_SUCCESS
- Ŭ¶óÀÌ¾ðÆ®°¡ ÁÖ¾îÁø TSDU¾È¿¡ ¸ðµç µ¥ÀÌŸ¸¦ ¼ÒºñÇß°í Áï½Ã ¹öÆÛÀÇ ¼ÒÀ¯±ÇÀ» ¸®ÅÏÇÏ´Â ÁßÀ̶ó°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.
- STATUS_PENDING
- Ŭ¶óÀÌ¾ðÆ®°¡ ÁÖ¾îÁø TsduDescriptor¸¦ °¡Áö°í TdiReturnChainedReceives ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§±îÁö ÁÖ¾îÁø TSDU¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇϰí ÀÖ´Ù°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.
- STATUS_DATA_NOT_ACCEPTED
- Ŭ¶óÀÌ¾ðÆ®°¡ TSDU¿Í ¹«°üÇÏ´Ù°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.
ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ ³»ºÎÀûÀ¸·Î ¸®½ÃºêµéÀ» ¹öÆÛÈÇÒ ¶§ Æ®·£½ºÆ÷Æ®°¡ ClientEventChainedReceive(Xxx) Çڵ鷯·Î ÀεðÄÉÀÌÆ®µÈ ¹öÆÛÈµÈ µ¥ÀÌŸ¸¦ ¹ö¸®Áö ¾Ê´Â´Ù¸é Ŭ¶óÀÌ¾ðÆ®´Â TDI_RECEIVE ¸®Äù½ºÆ®¸¦ °¡Áö°í µ¥ÀÌŸ¸¦ ¾ò´Â´Ù.
ÁÖ¼®
ClientEventChainedReceiveExpedited ÇÔ¼ö·ÎÀÇ È£ÃâÀº ÀÔ·Â StartingOffset°ú ReceiveLength¿¡ ÀÇÇØ¼ ¼¼úµÈ ¹öÆÛ¾È¿¡ ¹üÀ§¿¡ ´ëÇØ¼ ÀεðÄÉÀÌÆ®µÈ TSDU·ÎÀÇ ÀбâÀü¿ëÁ¢±ÙÀ» Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ÁØ´Ù. ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸ°¡ Ŭ¶óÀÌ¾ðÆ®¿Í °ü°è°¡ ÀÖ´Ù¸é ClientEventChainedReceiveExpedited ÇÔ¼ö´Â Ŭ¶óÀÌ¾ðÆ® ÇÒ´ç ³»ºÎ ¹öÆÛ¾ÈÀ¸·Î ÀεðÄÉÀÌÆ®µÈ TSDU µ¥ÀÌŸÀÇ ¹üÀ§¸¦ º¹»çÇϰí Áï½Ã STATUS_SUCCESS¸¦ ¸®ÅÏÇϰųª STATUS_PENDINGÀ» ¸®ÅÏÇÏ¹Ç·Î½á ¹öÆÛÀÇ ÅëÁ¦¸¦ À¯ÁöÇÑ´Ù. STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é Ŭ¶óÀÌ¾ðÆ®´Â µ¥ÀÌŸ¸¦ ¼ÒºñÇÑ ÈÄ¿¡ ¹öÆÛÀÇ ÅëÁ¦¸¦ ¾çµµÇϱâ À§Çؼ ÀÔ·Â TsduDescriptor¸¦ °¡Áö°í ¼øÂ÷ÀûÀ¸·Î TdiReturnChainedReceives ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù.
ÀϹÝÀûÀ¸·Î TdiReturnChainedReceives ÇÔ¼ö·ÎÀÇ ±×·¯ÇÑ È£ÃâÀº °¡´ÉÇÑ ÇÑ »¡¸® ¹ß»ýµÇ¾î¾ßÇÑ´Ù. ¿¬ÀåµÈ ±â°£µ¿¾È ClientEventChainedReceiveExpedited ÇÔ¼ú·Î Àü´ÞµÇ´Â ¹öÆÛ¸¦ À¯Áö´Â °ÍÀº ÇϺÎÀÇ µå¶óÀ̹ö¿¡¼ I/O È¿À²À» °¿äÇÑ´Ù. ¿Ö³ÄÇÏ¸é ¹öÆÛ¸¦ ÇÒ´çÇÑ NDIS ¹Ì´ÏÆ÷Æ®´Â TdiReturnChainedReceives ÇÔ¼ö°¡ È£ÃâµÉ ¶§±îÁö ¼øÂ÷ÀûÀÎ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀ» °¡Áö°í ÀÌ ÀÚ¿øÀ» ´Ù½Ã »ç¿ëÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.
ClientEventChainedReceiveExpedited ÇÔ¼ö·ÎÀÇ È£ÃâÀÌ Ç×»ó Àüü TSDUÀÇ »ç¿ëÀ» ÀεðÄÉÀÌÆ®Çϱ⠶§¹®¿¡ Ŭ¶óÀÌ¾ðÆ®´Â ´ëÀÀÇÏ´Â ClientEventReceiveExpedited Çڵ鷯°¡ °¡²û Àüü TSDU¸¦ ¾ò¾î¾ßÇÒ ¶§ ±×·¯ÇÑ ÀεðÄÉÀ̼ǿ¡ ´ëÇØ¼ TDI_RECEIVE ¸®Äù½ºÆ®¸¦ °áÄÚ ¼³Á¤Çؼ´Â ¾ÈµÈ´Ù. °á±¹ ClientEventChainedReceiveExpedited ÇÔ¼ö·Î ¸¸µé¾îÁø ¸®½Ãºê ÀεðÄÉÀ̼ÇÀº Ŭ¶óÀ̾ðÆ®, ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®, ½Ã½ºÅÛ Àüü¿¡ ´ëÇØ¼ È£ÃâÀÇ °úºÎÇϸ¦ ÁÙÀÓÀ¸·Î½á ³×Æ®¿÷ I/O È¿À²°ú ÆÛÆ÷¸Õ½º¸¦ Áõ°¡½ÃŲ´Ù. Æ®·£½ºÆ÷Æ®´Â ClientEventChainedReceiveExpedited ÇÔ¼ö·Î ¸¸µç °°Àº ÀεðÄÉÀ̼ÇÀ» °¡Áö°í ´ëÀÀÇÏ´Â ClientEventReceiveExpedited Çڵ鷯¸¦ °áÄÚ È£ÃâÇØ¼´Â ¾ÈµÈ´Ù.
ClientEventChainedReceiveExpedited ÇÔ¼ö°¡ STATUS_SUCCESS³ª STATUS_DATA_NOT_ACCEPTED¸¦ °¡Áö°í ÅëÁ¦¸¦ ¸®ÅÏÇÒ ¶§ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ ÀÌ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀ» °¡Áö°í ÇàÇØÁ³´Ù°í °¡Á¤ÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ ÀεðÄÉÀÌÆ®µÈ TSDU¸¦ ¼ÒºñÇßÀ» ¶§ TdiReturnChainedReceives ÇÔ¼ö È£ÃâÀÇ Ã¥ÀÓÀÌ Àֱ⠶§¹®¿¡ ÀÌ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀÇ ¿Ï·á¸¦ Æ®·¢ÇÒ ¹æ¹ýÀÌ ¾ø´Ù°í °¡Á¤ÇÑ´Ù.
ClientEventChainedReceiveExpedited ÇÔ¼ö´Â IRQL DISPATCH_LEVEL¿¡¼ ¿¬»êÀ» ¼öÇàÇÒ ´É·ÂÀÌ ÀÖ¾î¾ßÇÑ´Ù.
|