ClientEventConnect

NTSTATUS
   ClientEventConnect (
       IN PVOID TdiEventContext,
       IN LONG RemoteAddressLength,
       IN PVOID RemoteAddress,
       IN LONG UserDataLength,
       IN PVOID UserData,
       IN LONG OptionsLength,
       IN PVOID Options,
       OUT CONNECTION_CONTEXT *ConnectionContext,
       OUT PIRP *AcceptIrp
  
   );

ClientEventConnect ÇÔ¼ö´Â ¿ø°ÝÁö·ÎºÎÅÍ µé¾î¿À´Â ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°á Á¦°ø¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î TDI µå¶óÀ̹ö°¡ È£ÃâÇÏ´Â À̺¥Æ® Çڵ鷯ÀÌ´Ù.

¸Å°³º¯¼ö

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

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

RemoteAddress
ÀÌ ¿¬°áÀ» Á¦°øÇÑ ¿ø°ÝÁö Ŭ¶óÀ̾ðÆ®ÀÇ Æ®·£½ºÆ÷Æ® ÁÖ¼Ò¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ °¡¸®Å²´Ù.

UserDataLength
UserData¿¡ ¹öÆÛÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼­¼úÇÑ´Ù. 0Àº µ¥ÀÌŸ°¡ »ç¿ëµÉ ¼ö ¾øÀ½À» ÀεðÄÉÀÌÆ®Çϰųª ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ Á¦°øµÈ ¿¬°á¿¡¼­ µ¥ÀÌŸ º¸³»±â¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ÀεðÄÉÀÌÆ®ÇÑ´Ù. ÀÌ ¸Å°³º¯¼ö°¡ 0À̸é UserData´Â NULLÀÌ´Ù.

UserData
¿¬°á Á¦°øÀ» °¡Áö°í ¿ø°ÝÁöÀÇ Å¬¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼­ Á¦°øµÈ ¿¬°á µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ °¡¸®Å²´Ù. UserDataLength°¡ 0À̸é ÀÌ ¸Å°³º¯¼ö´Â NULLÀÌ´Ù.

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

Options
Æ®·£½ºÆ÷Æ® ƯÁ¤ Æ÷¸ä¿¡¼­ ¿¬°á¿¡ ´ëÇØ¼­ ¿É¼ÇÀ» Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ °¡¸®Å²´Ù. OptionsLength°¡ 0À̸é ÀÌ ¸Å°³º¯¼ö´Â NULLÀÌ´Ù.

ConnectionContext
ÀÌ ¿¬°á ¿£µåÆ÷ÀÎÆ®¿¡ ´ëÇØ¼­ Ŭ¶óÀÌ¾ðÆ® °áÁ¤ »óŸ¦ À¯ÁöÇϴ Ŭ¶óÀÌ¾ðÆ® ÄÁÅØ½ºÆ® Áö¿ªÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ´Â ClientEventConnect ÇÔ¼öÀÇ È£ÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. º¸Åë ¸í½ÃµÈ ÁּҴ Ŭ¶óÀÌ¾ðÆ®°¡ ·ÎÄà ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ ¿­±â À§Çؼ­ ZwCreateFile ÇÔ¼ö¸¦ È£ÃâÇßÀ» ¶§ EaBuffer¿¡ °ªÀ» À§Çؼ­ ¼³Á¤ÇÑ °ª°ú °°´Ù. ClientEventConnect ÇÔ¼ö°¡ Á¦°øµÈ ¿¬°áÀ» °ÅÀýÇß´Ù¸é ¸®ÅÏÇÏ´Â °ªÀº NULLÀÌ´Ù.

AcceptIrp
TdiBuildAccept ÇÔ¼ö¸¦ °¡Áö°í ClientEventConnect ÇÔ¼ö¿¡ ÀÇÇØ¼­ ¼³Á¤µÈ IRP¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ´Â ClientEventConnect ÇÔ¼öÀÇ È£ÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. Æ®·£½ºÆ÷Æ®°¡ Á¤»óÀûÀÎ ½ÂÀÎ ¸®Äù½ºÆ®¸¦ ÇÒ ¶§ Á¦°øµÈ´Ù¸é Æ®·£½ºÆ÷Æ®´Â ÀÌ IRP¸¦ ¿Ï·áÇÑ´Ù. ClientEventConnect ÇÔ¼ö°¡ ¿¬°á Á¦°øÀ» °ÅÀýÇÑ´Ù¸é ÀÌ ¸Å°³º¯¼ö´Â NULLÀÌ´Ù.

¸®Åϰª

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

STATUS_MORE_PROCESSING_REQUIRED
ClientEventConnect ÇÔ¼ö´Â Á¦°øµÈ ¿¬°áÀ» ¹Þ¾ÆµéÀÌ´Â ÁßÀ̰í AcceptIrp¿¡ ½ÂÀÎ ¸®Äù½ºÆ®¸¦ Á¦°øÇß´Ù.

¸î¸î Æ®·£½ºÆ÷Æ®´Â ClientEventConnect ÇÔ¼ö°¡ ÀÌ ¸®Åϰª¿Ü¿¡ ´Ù¸¥ ¹«¾ð°¡¸¦ ¸®ÅÏÇÑ´Ù¸é ¿¬°á Á¦°øÀÌ °ÅÀýµÈ´Ù°í °¡Á¤ÇÑ´Ù.

STATUS_CONNECTION_REFUSED
ClientEventConnect ÇÔ¼ö´Â Á¦°øµÈ ¿¬°áÀ» °ÅÀýÇÏ´Â ÁßÀÌ´Ù.

STATUS_INSUFFICIENT_RESOURCES
ClientEventConnect ÇÔ¼ö´Â Á¦°øµÈ ¿¬°áÀ» ¹Þ¾ÆµéÀÏ ¸¸ÇÑ ÃæºÐÇÑ ÀÚ¿øÀ» ÇÒ´çÇÏÁö ¾Ê¾Ò´Ù. Æ®·£½ºÆ÷Æ®´Â ¿ø°ÝÁö¿À °ÅÀýÀ» º¸³¾ °ÍÀÌ´Ù.

ÁÖ¼®

ÀÌ È£ÃâÀº ¿ø°ÝÁöÀÇ ÇÁ·Î¼¼½º·ÎºÎÅÍ µé¾î¿À´Â ¿¬°á Á¦°øÀ» ·ÎÄÃÀÇ Å¬¶óÀÌ¾ðÆ®¿¡°Ô ¾Ë¸°´Ù. ·ÎÄÃÀÇ ClientEventConnect Çڵ鷯´Â ¿ø°ÝÁöÀÇ Å¬¶óÀÌ¾ðÆ®¸¦ È®ÀÎÇÏ´Â Æ®·£½ºÆ÷Æ® Á¦°ø ÁÖ¼Ò Á¤º¸¸¦ °Ë»çÇϰí ÀÌ ¿¬°á Á¦°øÀ» ½ÂÀÎÇÒ °ÍÀÎÁö¸¦ °áÁ¤Çϱâ À§Çؼ­ UserData¿Í Options¿¡ µ¥ÀÌŸ¸¦ °Ë»çÇÑ´Ù.

Á¦°øµÈ ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀ» ½ÂÀÎÇϱâ À§Çؼ­ ClientEventConnect ÇÔ¼ö´Â TDI_ACCEPT ¸®Äù½ºÆ®¿Í ÇÔ²² ConnectionContext¿¡ ¹öÆÛ¸¦ ¼³Á¤ÇؾßÇÑ´Ù. ±×¸®°í³ª¼­ STATUS_MORE_PROCESSING_REQUIRED¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù. ·ÎÄà Ʈ·£½ºÆ÷Æ®´Â ½ÂÀÎ IRP¾ÈÀ¸·Î Ŭ¶óÀÌ¾ðÆ®°¡ Á¦°øÇÑ ¾î¶² ¿¬°á µ¥ÀÌŸ¸¦ Àü¼ÛÇÑ´Ù´Â ½ÂÀÎÀ» ¿ø°ÝÁö¿¡°Ô ¾Ë¸°´Ù. ±×¸®°í Á¤»óÀûÀ¸·Î TDI_ACCEPT ¸®Äù½ºÆ®¸¦ ¿Ï·áÇÑ´Ù.

ClientEventConnect Çܵ鷯°¡ È£ÃâµÇ±â Àü¿¡ Ŭ¶óÀÌ¾ðÆ®´Â ¿¬°á Á¦°øÀ» ½ÂÀÎÇϱâ À§Çؼ­ »ç¿ëÇÒ IRP¸¦ ¹Ì¸® ÇÒ´çÇØ¾ßÇÑ´Ù. ÀϹÝÀûÀ¸·Î ¾î¶² Ŭ¶óÀÌ¾ðÆ®´Â IRQL DISPATCH_LEVEL¿¡¼­ ½ÇÇàµÇ´Â µ¿¾È¿¡ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®·Î ¼øÂ÷ÀûÀ¸·Î Á¦½ÃµÇ´Â TDI_XXX IOCTL ¸®Äù½ºÆ®¸¦ À§Çؼ­ ¸î¸î IRP¸¦ ¹Ì¸® ÇÒ´çÇØ¾ßÇÑ´Ù. TdiBuildInternalDeviceControlIrp ÇÔ¼ö·ÎÀÇ Å¬¶óÀÌ¾ðÆ® È£ÃâÀº IRQL PASSIVE_LEVEL¿¡¼­ ¹ß»ýÇÒ ¼ö ÀÖ´Ù.

ClientEventConnect ÇÔ¼ö°¡ STATUS_MORE_PROCESSING_REQUIRED¸¦ °¡Áö°í ÅëÁ¦¸¦ ¸®ÅÏÇÒ ¶§ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®´Â ·ÎÄà Ŭ¶óÀÌ¾ðÆ®·Î µ¹¾Æ°¡´Â ÁÖ¾îÁø ½ÂÀÎ IRP¸¦ ¿Ï·áÇϱâ Àü¿¡ Ŭ¶óÀ̾ðÆ®ÀÇ µî·ÏµÈ ClientEvent(Chained)Receive(Expedited) Çڵ鷯¿¡ ´ëÇÑ ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°á »ó¿¡¼­ µé¾î¿À´Â ¸®½ÃºêµéÀ» ÀεðÄÉÀÌÆ®ÇÒ ¼ö ÀÖ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â ¿ø°ÝÁö·ÎºÎÅÍ ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°á Á¦°øÀÇ ½ÂÀο¡ µ¿ÀÇÇÏÀÚ¸¶ÀÚ ¸®½ÃºêµÈ µ¥ÀÌŸ¸¦ ¹Þ¾ÆµéÀÏ Áغñ¸¦ ÇØ¾ßÇÑ´Ù.

Á¦°øµÈ ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀ» °ÅÀýÇϱâ À§Çؼ­ ClientEventConnect ÇÔ¼ö´Â ´ÜÁö STATUS_CONNECTION_REFUSED¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù. ÀÌ ¸®ÅÏ »óÅ¿¡ ´ëÇØ¼­ ·ÎÄÃÀÇ Æ®·£½ºÆ÷Æ®´Â ¿¬°á Á¦°øÀÌ °ÅÀýµÈ ¿ø°ÝÁöÀÇ Æ®·£½ºÆ÷Æ®¿¡°Ô ¾Ë¸°´Ù.

Ŭ¶óÀÌ¾ðÆ®°¡ ¿¬°á Á¦°øÀ» ¹Þ¾ÆµéÀ̱â À§Çؼ­ ÃæºÐÇÑ ÀÚ¿øÀ» ÇÒ´çÇÏÁö ¾Ê°Å³ª °¡Áö°í ÀÖÁö ¾Ê´Ù¸é ClientEventConnect ÇÔ¼ö´Â STATUS_INSUFFICIENT_RESOURCES¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ¸®ÅÏ »óÅ¿¡ ´ëÇØ¼­ TDI Æ®·£½ºÆ÷Æ®´Â ¿ø°ÝÁö »ó¿¡¼­ ´ëÀÀÇÏ´Â Æ®·£½ºÆ÷Æ®·ÎÀÇ ¿ø°ÝÁö Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°á Á¦°ø °ÅÀýÀ» º¸³»°Å³ª ¾Æ´Ï¸é ´Ü¼øÈ÷ ¿¬°á Á¦°øÀ» µå¶øÇÑ´Ù.

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