ClientEventReceive
NTSTATUS
ClientEventReceive (
IN PVOID TdiEventContext,
IN CONNECTION_CONTEXT ConnectionContext,
IN ULONG ReceiveFlags,
IN ULONG BytesIndicated,
IN ULONG BytesAvailable,
OUT ULONG *BytesTaken,
IN PVOID Tsdu,
OUT PIRP *IoRequestPacket
);
ClientEventReceive ÇÔ¼ö´Â Ŭ¶óÀÌ¾ðÆ®°¡ ¼º¸³ÇÑ ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀ» °¡Áö°í ¿ø°ÝÁö·ÎºÎÅÍ µé¾î¿À´Â ¸®½Ãºê¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ®°¡ È£ÃâÇÏ´Â À̺¥Æ® Çڵ鷯ÀÌ´Ù. º¸Åë Ŭ¶óÀÌ¾ðÆ®°¡ ClientEventReceiveExpedited Çڵ鷯¸¦ µî·ÏÇÑ´Ù¸é À̰ÍÀº Á¤»óÀûÀÎ TSDUÀÌ´Ù.
¸Å°³º¯¼ö
- TdiEventContext
- ClientEventReceive ÇÔ¼ö°¡ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®¸¦ °¡Áö°í µî·ÏµÆÀ» ¶§ TdiBuildSetEventHandler ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ IRP¾È¿¡ Á¦°øµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ÄÁÅØ½ºÆ®¸¦ °¡¸®Å²´Ù.
- ConnectionContext
- ÀÌ ¿¬°á ¿£µåÆ÷ÀÎÆ®¿¡ ´ëÇÑ Å¬¶óÀ̾ðÆ®ÀÇ ÄÁÅØ½ºÆ® Áö¿ªÀ» °¡¸®Å²´Ù. ClientEventConnect Çڵ鷯°¡ ¿ø°ÝÁö·ÎºÎÅÍ ¿¬°áÁ¦°øÀ» ½ÂÀÎÇßÀ» ¶§³ª ZwCreateFile ÇÔ¼ö¸¦ °¡Áö°í ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ ¿¾úÀ» ¶§ Ŭ¶óÀÌ¾ðÆ®´Â Àü¿¡ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®·Î ÀÌ °ªÀ» Á¦°øÇß´Ù.
- ReceiveFlags
- ÇϳªÀÌ»óÀÇ ´ÙÀ½ Ç÷¡±×µéÀ» °¡Áö°í OR °áÇÕÀ¸·Î½á ¸®½Ãºê ÀεðÄÉÀ̼ÇÀÇ Æ¯Â¡À» ¼¼úÇÑ´Ù:
- TDI_RECEIVE_NORMAL
- Tsdu¿¡ ¹öÆÛ´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¿ø°ÝÁö·ÎºÎÅÍ ¸®½ÃºêµÈ Á¤»óÀûÀÎ µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÑ´Ù. ÀÌ Ç÷¡±×¿Í TDI_RECEIVE_EXPEDITED´Â »óÈ£ ¹èŸÀûÀÌ´Ù.
- TDI_RECEIVE_EXPEDITED
- Tsdu¿¡ ¹öÆÛ´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¿ø°ÝÁö·ÎºÎÅÍ ¸®½ÃºêµÈ ½Å¼ÓÇÑ µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ClientEventReceiveExpedited ȤÀº ClientEventChainedReceiveExpedited Çڵ鷯¸¦ µî·ÏÇÏÁö ¾ÊÀ» ¶§¸¸ ÀÌ Ç÷¡±×´Â ¼³Á¤µÉ ¼ö ÀÖ´Ù.
- TDI_RECEIVE_ENTIRE_MESSAGE
- Tsdu¿¡ ¹öÆÛ´Â Àüü TSDU¸¦ Æ÷ÇÔÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ TSDU¸¦ ¹Þ¾ÆµéÀÎ´Ù¸é ³»ºÎ ¹öÆÛ¾ÈÀ¸·Î ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸ¸¦ º¹»çÇÑ ÈÄ¿¡ °¡´ÉÇÑ ÇÑ »¡¸® ÅëÁ¦¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù.
ÀÌ Ç÷¡±×°¡ Ŭ¸®¾îµÇ´Ù¸é ClientEventReceive ÇÔ¼ö´Â TSDU°¡ ¾ó¸¶³ª ¸¹ÀÌ Á¦°øµÆ´ÂÁö¸¦ °áÁ¤Çϱâ À§Çؼ BytesIndicated°ú BytesAvailable ¸Å°³º¯¼ö¸¦ °Ë»çÇØ¾ßÇÑ´Ù. ¸®°Å½Ã TDI Æ®·£½ºÆ÷Æ®°¡ TDI_RECEIVE_PARTIAL Ç÷¡±× ¼³Á¤À» °è¼ÓÇÑ´Ù°í ÇÏ´õ¶óµµ ´õ »õ·Î¿î Æ®·£½ºÆ÷Æ®´Â ±×µéÀÇ Å¬¶óÀÌ¾ðÆ®·Î ºÎºÐÀûÀÎ TSDU¸¦ ÀεðÄÉÀÌÆ®Çϱâ À§Çؼ TDI_RECEIVE_ENTIRE_MESSAGE Ç÷¡±×¸¦ Ŭ¸®¾î »óÅ·Π³²°ÜµÐ´Ù.
- TDI_RECEIVE_COPY_LOOKAHEAD
- TDI_RECEIVE_ENTIRE_MESSAGE °¡ ¼³Á¤µÇÁö ¾Ê´Â´Ù¸é BytesIndicated´Â BytesAvailableº¸´Ù ÀÛÀº °ªÀ̰í ClientEventReceive ÇÔ¼ö´Â ³»ºÎ ¹öÆÛ¾ÈÀ¸·Î ÀεðÄÉÀÌÆ®µÈ ¹ÙÀÌÆ®ÀÇ ¼ö¸¦ º¹»çÇØ¾ßÇϰí BytesTaken¿¡ º¯¼ö¸¦ ¼³Á¤Çؼ ÅëÁ¦¸¦ ¸®ÅÏÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â TSDUÀÇ ³ª¸ÓÁö¸¦ ¾ò±â À§Çؼ ¼øÂ÷ÀûÀ¸·Î ÇϳªÀÌ»óÀÇ TDI_RECEIVE ¸®Äù½ºÆ®¸¦ Á¦½ÃÇÒ °ÍÀÌ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ClientEventReceive ÇÔ¼ö´Â TSDUÀÇ ³ª¸ÓÁö¸¦ º¹»çÇϱâ À§Çؼ ´Ù½Ã È£ÃâµÉ °ÍÀÌ´Ù.
- TDI_RECEIVE_FRAGMENT
- Tsdu¿¡ ¹öÆÛ´Â ´ÜÆíÈµÈ TSDU¸¦ Æ÷ÇÔÇÑ´Ù.
- TDI_RECEIVE_PEEK
- Æ®·£½ºÆ÷Æ®´Â ³»ºÎÀûÀ¸·Î ¸î¸î ¸®½Ãºê µ¥ÀÌŸ¸¦ ¹öÆÛÈÇÑ´Ù. ÇÏÁö¸¸ Àüü TSDU´Â ¾Æ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®´Â TSDU¿¡ ´ëÇØ¼ TDI_RECEIVE ¸®Äù½ºÆ®¸¦ Á¦½ÃÇÒ °ÍÀÎÁö¸¦ °áÁ¤Çϱâ À§Çؼ Tsdu¿¡ ¹öÆÛ¸¦ °Ë»çÇÒ ¼ö ÀÖ´Ù.
- BytesIndicated
- Tsdu¿¡ ¹öÆÛ¾È¿¡ ¸Þ¼¼Áö ¸ðµå³ª ½ºÆ®¸² ¸ðµåÀÇ ¹ÙÀÌÆ® ¼ö¸¦ ¼¼úÇÑ´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç×»ó BytesAvailableÀÇ °ªº¸´Ù À۰ųª °°´Ù. ¸®½ÃºêµÈ ¸Þ¼¼Áö ȤÀº ½ºÆ®¸² ¼¼±×¸ÕÆ®ÀÇ ±æÀ̰¡ 128 ¹ÙÀÌÆ®º¸´Ù ¹ÚÁö ¾Ê´Ù¸é TDI Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾îÆ®·ÎÀÇ ¸®½Ãºê ÀεðÄÉÀ̼ǿ¡¼ Àû¾îµµ 128 ¹ÙÀÌÆ®ÀÇ µ¥ÀÌŸ¸¦ Á¦°øÇÑ´Ù. BytesAvailableÀÌ BytesIndicatedº¸´Ù ´õ Å©´Ù¸é Æ®·£½ºÆ÷Æ®´Â ClientEventReceive ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ÀÌ¿ëÇÒ ¼ö ¾ø´Â ¸®½Ãºê µ¥ÀÌŸ¸¦ °®´Â´Ù.
- BytesAvailable
- ¸®½ÃºêµÈ TSDU¾È¿¡ ¹ÙÀÌÆ®ÀÇ Àüü ¼ö¸¦ ¼¼úÇÑ´Ù.
- BytesTaken
- TSDU·ÎºÎÅÍ º¹»çÇÏ´Â µ¥ÀÌŸÀÇ ¹ÙÀÌÆ® ¼ö¸¦ ¸®ÅÏÇÏ´Â ClientEventReceive ÇÔ¼öÀÇ È£ÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù.
- Tsdu
- ¸®½ÃºêµÈ TSDU µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ °¡¸®Å²´Ù.
- IoRequestPacket
- TdiBuildReceive ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ È£ÃâÀÚ ÇÒ´ç IRP¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ´Â ClientEventReceive ÇÔ¼öÀÇ º¯¼ö¸¦ °¡¸®Å²´Ù. ÀÌ º¯¼ö°¡ NULL·Î ¼³Á¤µÈ´Ù¸é Ŭ¶óÀÌ¾ðÆ®´Â TSDUÀÇ ³ª¸ÓÁö¿¡ ´ëÇØ¼ ¸®½Ãºê ¸®Äù½ºÆ®¸¦ ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.
¸®Åϰª
ClientEventReceive ÇÔ¼ö´Â ´ÙÀ½Áß Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù:
- STATUS_SUCCESS
- Ŭ¶óÀÌ¾ðÆ®°¡ ÁÖ¾îÁø TSDU¾È¿¡ ¸ðµç µ¥ÀÌŸ¸¦ º¹»çÇß´Ù°í ÀεðÄÉÀÌÆ®Çϰųª Ŭ¶óÀÌ¾ðÆ®°¡ BytesTakenÀ» BytesAvailable·Î ¼³Á¤Çß°í Áï½Ã ÅëÁ¦¸¦ ¸®ÅÏÇß´Ù(»ç½Ç»ó "tossing" ÀεðÄÉÀ̼Ç)°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.
- STATUS_MORE_PROCESSING_REQUIRED
- º¸Åë ³»ºÎ ¹öÆÛ¾ÈÀ¸·Î BytesIndicated¸¦ º¹»çÇÑ ÈÄ¿¡ Ŭ¶óÀÌ¾ðÆ®´Â TSDUÀÇ ³ª¸ÓÁö¸¦ ¸®Äù½ºÆ®ÇÏ´Â IRP¸¦ Á¦°øÇß´Ù°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.
- STATUS_DATA_NOT_ACCEPTED
- ÀÌ Å¬¶óÀÌ¾ðÆ®´Â TSDU¿Í ¹«°üÇÏ´Ù°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.
ÁÖ¼®
ClientEventReceive ÇÔ¼ö´Â ¼º¸³µÈ ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°á¿¡¼ ÇϺÎÀÇ TDI µå¶óÀ̹ö°¡ ¸®½ÃºêÇÑ TSDU¸¦ ½ÂÀÎÇϰųª °ÅÀýÇÑ´Ù. TSDU´Â µ¥ÀÌŸ ½ºÆ®¸²ÀÇ ¼¼±×¸ÕÆ®¸¦ ±¸ÇöÇÏ´Â ½ºÆ®¸² ¸ðµå ȤÀº ¸Þ¼¼Áö ¸ðµå µ¥ÀÌŸ¿Í Àüü ¸Þ¼¼Áö, ±×¸®°í ¸Þ¼¼Áö Á¶°¢À¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù. Æ®·£½ºÆ÷Æ®´Â ClientEventReceive ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ TSDU·ÎºÎÅÍ Æ®·£½ºÆ÷Æ® Ãþ Çì´õ¸¦ Á¦°ÅÇÑ´Ù.
ClientEventReceive ÇÔ¼ö´Â TDI µå¶óÀ̹ö°¡ ³×Æ®¿÷¿¡¼ ¸®½ÃºêÇÑ Á¤»óÀûÀÎ µ¥ÀÌŸ¸¦ º¹»çÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ µÎµå·¯Áø Á¤»óÀÇ ¸®½Ãºê ¸®Äù½ºÆ®¸¦ °¡Áö°Å³ª ¸®½Ãºê°¡ ³¡³¯ ¶§±îÁö µé¾î¿À´Â ƯÁ¤ Á¤»óÀûÀÎ ¸®½Ãºê¿¡ ´ëÇØ¼ ¹Ì¸® ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸ¸¦ °ÅÀýÇÏ´Â µ¿¾È¿¡ Æ®·£½ºÆ÷Æ®´Â ClientEvent(Chained)Receive ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ¾ø´Ù. ±×·¯³ª ½Å¼ÓÇÑ µ¥ÀÌŸ¸¦ Áö¿øÇÏ´Â Æ®·£½ºÆ÷Æ®´Â ½Å¼ÓÇÑ TSDU°¡ ¿ø°ÝÁö·ÎºÎÅÍ µé¾î¿Â´Ù¸é Á¤»óÀûÀÎ TSDU¸¦ ÀεðÄÉÀÌÆ®ÇÏ´Â Áß¿¡ ClientEvent(Chained)ReceiveExpedited ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.
¸Þ¼¼Áö ¸ðµå Æ®·£½ºÆ÷Æ®´Â ·¹ÄÚµåÀÇ ³¡ Ç¥½Ã¸¦ »ç¿ëÇÏ¿© ¸Þ¼¼ÁöÀÇ ÇѰ踦 Á¤ÇÑ´Ù. ±×·¯ÇÑ Æ®·£½ºÆ÷Æ®´Â ¸®½ÃºêµÈ ƯÁ¤ TSDU¾È¿¡¼ ·¹ÄÚµåÀÇ ³¡À» °¡Áö°í Á¾·áµÈ °¢°¢ÀÇ µ¥ÀÌŸ ºí·°À» À§Çؼ ¼øÂ÷ÀûÀÎ ºÐ¸®µÈ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀ» ÇÒ ¼ö ÀÖ´Ù. ±×·¯ÇÑ ¸®½Ãºê´Â º¸Åë ¿ø°ÝÁöÀÇ Å¬¶óÀÌ¾ðÆ®°¡ TSDU¸¦ Àü¼ÛÇϱâ À§Çؼ ¼øÂ÷ÀûÀÎ º¸³»±â¸¦ Á¦½ÃÇÑ´Ù°í ÀεðÄÉÀÌÆ®ÇÑ´Ù.
ClientEventReceive ÇÔ¼ö°¡ È£ÃâµÆÀ» ¶§ ´ÙÀ½Áß Çϳª¸¦ ÇÒ ¼ö ÀÖ´Ù:
- STATUS_DATA_NOT_ACCEPTED¸¦ ¸®ÅÏÇÏ¹Ç·Î½á µ¥ÀÌŸ¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù¸é ÀεðÄÉÀÌÆ®µÈ TSDU¸¦ °ÅÀýÇÑ´Ù.
- TDI_RECEIVE_ENTIRE_MESSAGE°¡ ReceiveFlags¿¡ ¼³Á¤µÇ°í STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù¸é ³»ºÎÀÇ ¹öÆÛ¾ÈÀ¸·Î ¸ðµç µ¥ÀÌŸ¸¦ º¹»çÇÑ´Ù.
- TDI_RECEIVE_ENTIRE_MESSAGE°¡ Ŭ¸®¾îµÈ´Ù¸é(ȤÀº TDI_RECEIVE_PARTIALÀÌ ¼³Á¤µÈ´Ù¸é) ¼öÇàµÇ´Â ¿¬»ê¿¡ ÀÇÁ¸ÇÏ¿© ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸÀÇ ÀϺΠȤÀº ÀüºÎ¸¦ º¹»çÇÏ°í ´ÙÀ½Áß Çϳª¸¦ ¸®ÅÏÇÑ´Ù:
Ŭ¶óÀÌ¾ðÆ®°¡ ³²¾ÆÀÖ´Â TSDU µ¥ÀÌŸ¸¦ ¾ò±â À§Çؼ IoRequestPacket¿¡ TDI_RECEIVE ¸®Äù½ºÆ®¸¦ Á¦°øÇÑ´Ù¸é STATUS_MORE_PROCESSING_REQUIRED¸¦ ¸®ÅÏÇÑ´Ù.
Æ®·£½ºÆ÷Æ®°¡ ³²¾ÆÀÖ´Â TSDU µ¥ÀÌŸ¸¦ °¡Áö°í ´Ù½Ã ClientEventReceive ÇÔ¼ö¸¦ È£ÃâÇϱ⸦ ±â´ëÇÑ´Ù¸é STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù.
¸®½ÃºêµÈ µ¥ÀÌŸÀÇ º¹»ç°¡ ³¡³µÀ» ¶§ ClientEventReceive ÇÔ¼ö´Â ÅëÁ¦¸¦ ¸®ÅÏÇϱâ Àü¿¡ ¹Þ¾ÆµéÀÎ µ¥ÀÌŸÀÇ ¹ÙÀÌÆ® ¼ö¸¦ BytesTaken¿¡ º¯¼ö¿¡ ¼³Á¤ÇÑ´Ù.
ClientEventReceive ÇÔ¼ö°¡ ÇϺÎÀÇ µå¶óÀ̹ö¸¦ À§Çؼ IoRequestPacket¿¡ TDI_RECEIVE ¸®Äù½ºÆ®¸¦ Á¦°øÇÑ´Ù¸é Æ®·£½ºÆ÷Æ®´Â »ç¿ë°¡´ÉÇÑ »õ·Î¿î µ¥ÀÌŸ¸¦ °¡Áö°í Ŭ¶óÀÌ¾ðÆ®·Î ¾ÆÁ÷ Àü´ÞµÇÁö ¾ÊÀº µ¥ÀÌŸ¸¦ ¾ò´Â´Ù. IRP¾È¿¡ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ°¡ ²ËÂ÷°Å³ª Æ®·£½ºÆ÷Æ®°¡ ·¹ÄÚµåÀÇ ³¡ Ç¥½Ã¸¦ ¸¸³¯ ¶§±îÁö µ¥ÀÌŸ ¾ò±â´Â °è¼ÓµÈ´Ù. ÀÌ Å¬¶óÀÌ¾ðÆ®¸¦ À§Çؼ ClientEvent(Chained)Receive Çڵ鷯·ÎÀÇ ¼øÂ÷ÀûÀΠȣÃâÀ» Á¦½ÃÇϱâ Àü¿¡ Æ®·£½ºÆ÷Æ®´Â ÁÖ¾îÁø IRP¸¦ Ç×»ó ¿Ï·áÇÑ´Ù. °á±¹ Ŭ¶óÀÌ¾ðÆ®´Â Æ®·£½ºÆ÷Æ®°¡ Ŭ¶óÀÌ¾îÆ®·Î ¼øÂ÷ÀûÀÎ Á¤»óÀûÀÎ ¸®½Ãºê¸¦ ÀεðÄÉÀÌÆ®Çϱâ Àü¿¡ ¸®½ÃºêµÈ °¢°¢ÀÇ Á¤»óÀûÀÎ TSDU¸¦ ¿Ï·á·Î ó¸®ÇÑ´Ù. À̰ÍÀº °¢°¢ÀÇ Å¬¶óÀÌ¾ðÆ®·Î ÇÏ¿©±Ý Á¤È®ÇÏ°Ô µ¥ÀÌŸÀÇ ¸®½Ãºê¸¦ µ¿±âÈÇϵµ·Ï Çã¶ôÇÑ´Ù.
Ŭ¶óÀÌ¾ðÆ®°¡ TSDU·ÎºÎÅÍ ¸î¸î µ¥ÀÌŸ¸¦ ¹Þ¾ÆµéÀÎ ÈÄ¿¡ ClientEventReceive ÇÔ¼ö°¡ STATUS_DATA_NOT_ACCEPTED¸¦ ¸®ÅÏÇÑ´Ù¸é TDI µå¶óÀ̹ö´Â ´ÙÀ½°ú °°ÀÌ Å¬¶óÀÌ¾ðÆ®°¡ ¹Þ¾ÆµéÀÎ ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌŸÀÇ ¾ç°ú Ãß°¡ÀûÀÎ µ¥ÀÌŸÀÇ »ç¿ë¿¡ µû¶ó¼ °è¼Ó ÁøÇàÇÑ´Ù:
TDI Æ®·£½ºÆ÷Æ®´Â TDI_EVENT_RECEIVE ÀεðÄÉÀ̼ÇÀ» °¡Áö°í ³×Æ®¿÷À¸·ÎºÎÅÍ µ¥ÀÌŸ ¼ö½ÅÀ» ¿¬°ü½Ãų Çʿ䰡 ¾ø´Ù. µå¶óÀ̹ö°¡ ³»ºÎÀÇ ¹öÆÛȸ¦ Á¦°øÇÑ´Ù¸é ¾î´ÀÁ¤µµÀÇ µ¥ÀÌŸ¸¦ ¹Þ°Å³ª ³»ºÎÀÇ ¹öÆÛ°¡ °ÅÀÇ Ã¡À» ¶§ ¾î¶² ½Ã°£¿¡ µ¥ÀÌŸ¸¦ ÀνÄÇÒ ¼ö ÀÖ°í ÇÊ¿äÇÒ ¶§ ¸®½Ãºê ÀεðÄÉÀ̼ÇÀ» ÇÑ´Ù. ¹öÆÛÈÇÑ µå¶óÀ̹ö´Â Ŭ¶óÀÌ¾ðÆ®°¡ Ŭ¶óÀ̾ðÆ®ÀÇ ¸®½Ãºê ¸®Äù½ºÆ®°¡ ¸¸Á·ÇÑ´Ù°í Æ®·£½ºÆ÷Æ®¿¡°Ô ¾Ë¸± ¶§±îÁö Ŭ¶óÀÌ¾ðÆ®°¡ ÀεðÄÉÀ̼ǿ¡¼ ¹Þ¾ÆµéÀÌÁö ¾Ê´Â ¾î¶² µ¥ÀÌŸ¸¦ À¯ÁöÇØ¾ßÇÑ´Ù. ³»ºÎÀÇ µ¥ÀÌŸ ¹öÆÛȸ¦ Áö¿øÇÏÁö ¾Ê´Â Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ ClientEventReceive ÇÔ¼ö·ÎºÎÅÍ µ¥ÀÌŸ¸¦ ¹Þ¾ÆµéÀÎ Èijª µå¶óÀ̹ö°¡ Ŭ¶óÀÌ¾ðÆ® Á¦°ø IRP ¾ÈÀ¸·Î ¸®½ÃºêµÈ µ¥ÀÌŸ¸¦ Àü¼ÛÇÑ ÈÄ¿¡ ¸®½ÃºêµÈ µ¥ÀÌŸ¸¦ ÀνÄÇÒ ¼ö ÀÖ´Ù.
Æ®·£½ºÆ÷Æ®°¡ ¸®½ÃºêµÈ µ¥ÀÌŸ¸¦ ³»ºÎÀûÀ¸·Î ¹öÆÛÈÇÑ´Ù¸é ReceiveBufferSize¿¡ ´ëÇØ¼ ¸®ÅÏµÈ °ªÀ» °Ë»çÇϰí QType TDI_QUERY_CONNECTION_INFO¿¡ ´ëÇØ¼ TdiBuildQueryInformation ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ ¸®Äù½ºÆ®¸¦ Á¦½ÃÇϹǷνá Ŭ¶óÀÌ¾ðÆ®°¡ ãÀ» ¼ö ÀÖ´Â Æ®·£½ºÆ÷Æ® ƯÁ¤ Á¦ÇÑÀ¸·Î ¸®½ÃºêµÈ TSDU´Â ±æÀ̸¦ ¸ÂÃâ ¼ö ÀÖ´Ù. ±×·¯³ª ClientEventReceive ÇÔ¼ö´Â Àüü TSDU³ª TSDUÀÇ »ç¿ë°¡´ÉÇÑ ºÎºÐÀ» ÀÌ Çڵ鷯°¡ È£ÃâµÉ ¶§¸¶´Ù ¸®½ÃºêÇÒ Çʿ䰡 ¾ø´Ù. ÃÖ¼Ò°ªÀÌ Àû¾îµµ 128 ¹ÙÀÌÆ®ÀÎ ÇÑ °¢°¢ÀÇ TDI Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®·ÎÀÇ °¢°¢ÀÇ ¸®½Ãºê¿¡¼ ÀεðÄÉÀÌÆ®ÇÏ´Â µ¥ÀÌŸÀÇ ÃÖ´ë ÃÖ¼Ò ¾ç¿¡¼ ÀÚ½ÅÀÇ Á¦ÇÑÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â QType TDI_QUERY_PROVIDER_INFO¿¡ ´ëÇØ¼ ¶Ç´Ù¸¥ Á¤º¸ Äõ¸® ¸®Äù½ºÆ®¸¦ Á¦½ÃÇÏ¹Ç·Î½á ±×¸®°í MinimumLookaheadData¿Í MaximumLookaheadData¿¡ ´ëÇØ¼ ¸®ÅÏµÈ °ªÀ» °Ë»çÇϹǷνá ÀÌ·± Á¦ÇÑÀ» ãÀ» ¼ö ÀÖ´Ù.
ClientEventReceive ÇÔ¼ö´Â IRQL DISPATCH_LEVEL¿¡¼ ¿¬»êÀ» ¼öÇàÇÒ ´É·ÂÀÌ ÀÖ¾î¾ßÇÑ´Ù.
|