TDI_CONNECT
Ä¿³Î ¸ðµå Ŭ¶óÀÌ¾ðÆ®°¡ TDI_CONNECT ¸®Äù½ºÆ®¸¦ ÇÒ ¶§ Ä¿³Î ¸ðµå Ŭ¶óÀÌ¾ðÆ®´Â ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ® µå¶óÀ̹ö¿¡°Ô ¿ø°ÝÁö·ÎÀÇ Æ¯Á¤ ·ÎÄà ¿¬°á ¿£µåÆ÷ÀÎÆ®¿¡¼ÀÇ ¿¬°áÀ» Á¦°øÇϵµ·Ï ¿ä±¸ÇÑ´Ù.
IRP
IrpSp·Î½á ´ÙÀ½ÀÇ ¸®½ºÆ®¿¡ º¸¿©Áö´Â °Íó·³ IRP¾È¿¡ ÀÚ½ÅÀÇ I/O ½ºÅà ·ÎÄÉÀ̼ǿ¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¾ò±â À§Çؼ Æ®·£½ºÆ÷Æ®´Â ÁÖ¾îÁø Irp¸¦ °¡Áö°í IoGetCurrentIrpStackLocation ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. IRP¿¡ ´ëÇÑ Æ÷ÀÎÅÍ´Â Irp·Î½á ´ÙÀ½ÀÇ ¸®½ºÆ®¿¡¼ º¸¿©Áø´Ù. ÀÌ ¸®Äù½ºÆ®¿Í ¿¬°üµÈ IRP ¸â¹ö´Â ´ÙÀ½°ú °°´Ù:
- Irp->IoStatus.Status
- connection ¸®Äù½ºÆ®ÀÇ ¸¶Áö¸· »óŸ¦ ¼¼úÇÑ´Ù. Æ®·£½ºÆ÷Æ®´Â IRP¸¦ ¿Ï·áÇϱâ Àü¿¡ ´ÙÀ½Áß Çϳª·Î ÀÌ ¸â¹ö¸¦ ¼³Á¤ÇÑ´Ù:
STATUS_SUCCESS
STATUS_PENDING
STATUS_BAD_NETWORK_PATH
STATUS_INVALID_CONNECTION
STATUS_REMOTE_NOT_LISTENING
STATUS_INSUFFICIENT_RESOURCES
STATUS_REQUEST_TIMED_OUT
- IrpSp->MajorFunction
- IRP_MJ_INTERNAL_DEVICE_CONTROLÀ» ¼¼úÇÑ´Ù. Æ®·£½ºÆ÷Æ®´Â TDI_XXX ¸®Äù½ºÆ®¸¸À» ´Ù·ç´Â TdiDispatchInternalDeviceControl ·çƾÀ» ÀͽºÆ÷Æ®ÇÑ´Ù¸é ÀÌ ¸â¹ö¸¦ ¹«½ÃÇÒ ¼ö ÀÖ´Ù.
- IrpSp->MinorFunction
- TDI_CONNECT¸¦ ¼¼úÇÑ´Ù.
- IrpSp->FileObject
- ·ÎÄà ÁÖ¼Ò¿Í ¹Ì¸® ¿¬°üµÈ ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ ±¸ÇöÇÏ´Â ¿¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®Å²´Ù. ÀÌ ¿¬°á¿¡ ´ëÇØ¼ À¯ÁöµÇ´Â »óÅ·ÎÀÇ Á¢±ÙÀ» À§Çؼ Æ®·£½ºÆ÷Æ®´Â FsContext¿Í °¡´ÉÇÏ´Ù¸é FsContext2 Çʵ带 »ç¿ëÇÑ´Ù.
- IrpSp->Parameters
- TDI_REQUEST_KERNEL ±¸Á¶Ã¼¿Í ´ëµîÇÑ TDI_REQUEST_KERNEL_CONNECT ±¸Á¶Ã¼¸¦ °¡¸®Å²´Ù.
RequestFlags ¸â¹ö´Â ¿¬°á ¸®Äù½ºÆ®¿Í´Â °ü°è°¡ ¾ø´Ù. Æ®·£½ºÆ÷Æ®´Â RequestConnectionInformation¿¡ ¹öÆÛ¾È¿¡ ¿¬°áÀÌ Á¦°øµÇ¾î¾ßÇÏ´Â ¿ø°ÝÁöÀÇ ÁÖ¼Òó·³ Ŭ¶óÀÌ¾ðÆ® Á¦°ø Á¤º¸¸¦ »ç¿ëÇÑ´Ù. Æ®·£½ºÆ÷Æ®´Â RequestConnectionInformation¿¡ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ °¢°¢ÀÇ ¹öÆÛ´Â TDI_CONNECTION_INFORMATION ±¸Á¶Ã¼·Î Æ÷¸ËµÈ´Ù.
-
- IrpSp->Parameters.RequestSpecific
- ¿¬°á Á¦°øÀ» À§Çؼ ŸÀӾƿô °ªÀ» ¼¼úÇÏ´Â LARGE_INTEGER º¯¼ö¸¦ °¡¸®Å°°Å³ª NULLÀÌ´Ù. ¸íÈ®ÇÑ Å¸ÀӾƿôÀº ŸÀӾƿô °£°ÝÀ» À§Çؼ ÇöÀç ½Ã½ºÅÛ ½Ã°£°ú ¿¬°üµÈ À½ÀÇ 100 ³ª³ëÃÊ À¯´ÖÀ¸·Î ¼¼úµÈ´Ù. ÀÌ ¸â¹ö°¡ NULLÀÌ¸é Æ®·£½ºÆ÷Æ®´Â 1ÃÊ º¸´Ù ÀÛÀº °ªÀ¸·Î ÀûÀýÇÑ Å¸ÀӾƿô °£°ÝÀ» ¼±ÅÃÇØ¾ßÇÑ´Ù.
ÁÖ¼®
¿ø°ÝÁö¿Í ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀ» ¼º¸³Çϱâ À§ÇÑ ·ÎÄÃÀÇ Å¬¶óÀÌ¾ðÆ®¿¡ ´ëÇØ¼ TDI_CONNECT ¸®Äù½ºÆ®¸¦ ÇϱâÀü¿¡ ¿¸° Æ®·£½ºÆ÷Æ® ÁÖ¼Ò¸¦ °¡Áö°í idleÇÑ ·ÎÄà ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ ¿¬°üÁö¾î¾ßÇÑ´Ù. ¼¼úµÈ ·ÎÄà ¿£µåÆ÷ÀÎÆ®°¡ Ȱ¼ºÈµÇ°Å³ª Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é Æ®·£½ºÆ÷Æ®´Â ¿¬°á ¸®Äù½ºÆ®¸¦ ½ÇÆÐÇÑ´Ù.
¼º°øÇÑ TDI_CONNECT ¸®Äù½ºÆ®¿¡ ´ëÇØ¼ ¿ø°ÝÁöÀÇ Å¬¶óÀÌ¾ðÆ®´Â ¿¸° TDI_LISTEN ¸®Äù½ºÆ®¸¦ °¡Áö°Å³ª ¿ø°ÝÁö »ó¿¡¼ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®¿¡ ÀÇÇØ¼ ÀεðÄÉÀÌÆ®µÈ ¿¬°á Á¦°øÀ» ¹Þ±â À§Çؼ ClientEventConnect Çڵ鷯¸¦ µî·ÏÇØ¾ßÇÑ´Ù.
TdiBuildConnect´Â Ŭ¶óÀÌ¾ðÆ®°¡ IRP¾È¿¡ ä¿ì±â À§Çؼ »ç¿ëÇÏ´Â ¸ÅÅ©·ÎÀÌ´Ù.
|