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¿¡¼ ¿¬»êÀ» ¼öÇàÇÒ ´É·ÂÀÌ ÀÖ¾î¾ßÇÑ´Ù.
|