TDI_CONNECTION_INFORMATION
typedef struct _TDI_CONNECTION_INFORMATION {
LONG UserDataLength;
PVOID UserData;
LONG OptionsLength;
PVOID Options;
LONG RemoteAddressLength;
PVOID RemoteAddress;
} TDI_CONNECTION_INFORMATION, *PTDI_CONNECTION_INFORMATION;
|
TDI_CONNECTION_INFORMATIONÀº Ä¿³Î ¸ðµå Ŭ¶óÀÌ¾ðÆ®°¡ ƯÈ÷ ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°á°ú ¿¬°üµÈ TDI_XXX ³»ºÎ ÀåÄ¡ ÅëÁ¦ ¸®Äù½ºÆ®ÀÇ ¼ºê¼ÂÀ» À§Çؼ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®·Î Àü´ÞÇϰųª ¹ÞÀº ±¸Á¶Ã¼ÀÇ Á¤º¸¸¦ Á¤ÀÇÇÑ´Ù.
¸â¹ö
- UserDataLength
- UserData¿¡ ¹öÆÛÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼¼úÇÑ´Ù. UserData°¡ NULLÀ̸é 0À» ¼¼úÇÑ´Ù.
- UserData
- ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀÌ ¼º¸³µÇ°Å³ª ÇØÃ¼µÇ¾úÀ» ¶§ º¸³»°Å³ª ¹ÞÀº »ç¿ëÀÚ µ¥ÀÌŸ¿¡ ´ëÇÑ Å¬¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ¸¦ °¡¸®Å²´Ù.
- OptionsLength
- Options¿¡ ¹öÆÛÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼¼úÇÑ´Ù.
- Options
- Ŭ¶óÀÌ¾ðÆ® Á¦°ø µ¥ÀÌŸ¸¦ Æ÷ÇÔÇϰųª ÁÖ¾îÁø IOCTL ¸®Äù½ºÆ®¸¦ À§ÇÑ Æ®·£½ºÆ÷Æ® ¸®ÅÏ µ¥ÀÌŸ¸¦ ±â´Ù¸®´Â Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ¸¦ °¡¸®Å²´Ù.
- RemoteAddressLength
- RemoteAddress¿¡ ¹öÆÛÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼¼úÇÑ´Ù.
- RemoteAddress
- Ŭ¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼ ¸í½ÃµÇ°Å³ª Ŭ¶óÀÌ¾ðÆ®·Î Æ®·£½ºÆ÷Æ®¿¡ ÀÇÇØ¼ ¸®ÅÏµÈ ¿ø°ÝÁöÀÇ Æ®·£½ºÆ÷Æ® ÁÖ¼Ò¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ °¡¸®Å²´Ù. ÀÌ ÁÖ¼ÒÀÇ ½ÅÅýº´Â ³×Æ®¿÷°ú ÇϺΠƮ·£½ºÆ÷Æ®ÀÇ Å¸ÀÔ¿¡ ÀÇÁ¸ÇÑ´Ù.(TA_ADDRESS¸¦ ºÁ¶ó.)
ÁÖ¼®
¸î¸îÀÇ TdiBuildXxx ¸ÅÅ©·Î¿Í ´ëÀÀÇÏ´Â TDI_XXX IOCTL ¸®Äù½ºÆ®°¡ TDI Æ®·£½ºÆ÷Æ®¿Í ±×µéÀÇ Å¬¶óÀÌ¾ðÆ® »çÀÌ¿¡¼ Á¤º¸¸¦ Àü´ÞÇϱâ À§Çؼ ÀÌ ±¸Á¶Ã¼¸¦ »ç¿ëÇÏ´Â µ¿¾È¿¡ °¢°¢Àº TDI_CONNECTION_INFORMATION ±¸Á¶Ã¼ÀÇ ¸ðµç ¸â¹ö¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.
ÀϹÝÀûÀÎ ±ÔÄ¢À¸·Î Æ®·£½ºÆ÷Æ®°¡ ÁÖ¾îÁø IOCTL ¸®Äù½ºÆ®¿¡ ´ëÇØ¼ STATUS_PENDINGÀ» ¸®ÅÏÇÑ´Ù¸é Æ®·£½ºÆ÷Æ®´Â ÀÌ ±¸Á¶Ã¼¿¡ ¾î¶² Á¤º¸µµ ¸®ÅÏÇÏÁö ¾Ê´Â´Ù. ´ë½Å¿¡ µå¶óÀ̹ö´Â IRP¸¦ ¿Ï·áÇÒ ¶§±îÁö¸¸ ÀÌ ±¸Á¶Ã¼¿¡ µ¥ÀÌŸ ¼³Á¤À» Áö¿¬ÇÑ´Ù.
UserData Á¦°øÇϱâ¿Í ¹Þ±â
¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀÌ ¼Í¸³µÈ ÈÄ¿¡ ·ÎÄÃÀÇ Å¬¶óÀÌ¾ðÆ®´Â ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®·Î TDI_SEND ¸®Äù½ºÆ®¸¦ Á¦ÃâÇÏ¹Ç·Î½á ¿ø°ÝÁö·Î TSDU¸¦ º¸³¾ ¼ö ÀÖ´Ù. ·ÎÄà Ŭ¶óÀÌ¾ðÆ®´Â TDI_RECEIVE ¸®Äù½ºÆ®¸¦ Á¦ÃâÇϹǷνá, ȤÀº µî·ÏµÈ ClientEvent(Chained)Receive(Expedited) Çڵ鷯¸¦ È£ÃâÇÏ¹Ç·Î½á ¿ø°ÝÁö·ÎºÎÅÍ TSDU¸¦ ¹ÞÀ» ¼ö ÀÖ´Ù.
±×·¯³ª ±×·¯ÇÑ ¿¬°áÀÌ ¼º¸³µÉ ¶§±îÁö ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀ» ¼º¸³ÁßÀÎ µÎ TDI Ŭ¶óÀÌ¾ðÆ®´Â °¢°¢ÀÇ ÇϺΠƮ·£½ºÆ÷Æ®·Î TDI_CONNECT, TDI_LISTEN, ±×¸®°í °¡´ÉÇÏ´Ù¸é TDI_ACCEPT ¸®Äù½ºÆ®¸¦ °¡Áö°í UserData¿¡ ¹öÆÛ¿¡ µ¥ÀÌŸ¸¦ Á¦°øÇÏ¹Ç·Î½á µ¥ÀÌŸ¸¦ º¸³¾ ¼ö ÀÖ´Ù. À¯»çÇÑ ¹æ¹ýÀ¸·Î ±×·¯ÇÑ µÎ Ŭ¶óÀÌ¾ðÆ®´Â ¶ÇÇÑ °¢°¢ÀÇ Æ®·£½ºÆ÷Æ®°¡ ÅëÁ¦µÈ ¿¬°áÇØÃ¼¸¦ Áö¿øÇÏ´Ù´Â °¡Á¤ÇÏ¿¡ ÅëÁ¦µÈ ¿¬°áÇØÃ¼ ¿¬»êÀÌ ÁøÇàÁßÀÎ ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®·Î ¿¬°áÇØÃ¼ µ¥ÀÌŸ¸¦ Á¦°øÇÒ ¼ö ÀÖ´Ù.
Ŭ¶óÀÌ¾ðÆ®´Â QType TDI_QUERY_PROVIDER_INFO¿¡ ´ëÇØ¼ TdiBuildQueryInformation ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ Äõ¸® Á¤º¸ ¸®Äù½ºÆ®¸¦ Á¦ÃâÇÏ¹Ç·Î½á »ç¿ëÀÚ µ¥ÀÌŸÀÇ ¾ç¿¡ ´ëÇØ¼ Æ®·£½ºÆ÷Æ® ƯÁ¤ Á¦ÇÑÀ» °áÁ¤ÇÒ ¼ö ÀÖ´Ù.
Ŭ¶óÀÌ¾ðÆ®°¡ ƯÁ¤ TDI IOCTL ¸®Äù½ºÆ®¸¦ °¡Áö°í »ç¿ëÀÚ µ¥ÀÌŸ¸¦ º¸³¾ ¶§ 0À¸·Î ¼³Á¤µÈUserDataLength´Â Ŭ¶óÀÌ¾ðÆ®°¡ Æ®·£½ºÆ÷Æ®·Î ±× ¸®Äù½ºÆ®¾È¿¡ »ç¿ëÀÚ µ¥ÀÌŸ¸¦ Á¦°øÇÏÁö ¾Ê¾ÒÀ½À» ¾Ï½ÃÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ƯÁ¤ TDI IOCTL ¸®Äù½ºÆ®¸¦ °¡Áö°í »ç¿ëÀÚ µ¥ÀÌŸ¸¦ ¹ÞÀ» ¶§ 0À¸·Î ¼³Á¤µÈ UserDataLength´Â Æ®·£½ºÆ÷Æ®°¡ UserData¿¡ ¹öÆÛ¾È¿¡ µ¥ÀÌŸ¸¦ ¸®ÅÏÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ¾Ï½ÃÇÑ´Ù. ¹Ý¸é¿¡ Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®¸¦ À§Çؼ ¸®½ÃºêµÈ µ¥ÀÌŸÀÇ ¹ÙÀÌÆ® ¼ö¸¦ UserDataLength·Î ¼³Á¤ÇÑ´Ù.
Ŭ¶óÀÌ¾ðÆ®°¡ 0ÀÌ ¾Æ´Ñ UserDataLength¸¦ ¼¼úÇÏ°í Æ®·£½ºÆ÷Æ®°¡ ¿ø°ÝÁö·ÎºÎÅÍ Å¬¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ¿¡ ÀûÀýÇÑ °Íº¸´Ù ´õ ¸¹Àº µ¥ÀÌŸ¸¦ ¹Þ´Â´Ù¸é Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¹öÆÛ¾È¿¡ ä¿ï ¼ö ÀÖ´Â ¸¹Àº µ¥ÀÌŸ¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ °æ¿ì¿¡ Æ®·£½ºÆ÷Æ®´Â ¿¬»êÀ» ¿Ï·áÇÏÁö¸¸ Ŭ¶óÀÌ¾ðÆ®·Î µ¥ÀÌŸ Àý´ÜÀ» ¾Ë¸®´Â »óŸ¦ ¸®ÅÏÇÑ´Ù.
´ÙÀ½ÀÇ TDI_XXX IOCTL ¸®Äù½ºÆ®¸¦ À§Çؼ UserDataLength´Â 0À̾î¾ßÇϰí UserData´Â NULLÀ̾î¾ßÇÑ´Ù:
- TDI_RECEIVE_DATAGRAM°ú TDI_SEND_DATAGRAM
- TDI_CONNECTION_INFORMATION ±¸Á¶Ã¼´Â ÀÌ ¸®Äù½ºÆ®¿¡ ´ëÇØ¼ ¿ø°ÝÁöÀÇ ÁÖ¼Ò¸¦ ¼¼úÇϱâ À§Çؼ¸¸ »ç¿ëµÈ´Ù.
- Ŭ¶óÀÌ¾ðÆ®°¡ Áö¿¬µÈ ¿¬°á ½ÂÀÎÀ» ¸®Äù½ºÆ®ÇÑ´Ù¸é TDI_LISTEN
- ±×·¯ÇÑ Å¬¶óÀÌ¾ðÆ®´Â ¿ø°ÝÁö·ÎºÎÅÍ Á¦°øµÈ ¿¬°áÀ» ¹Þ¾ÆµéÀÏ ¶§ ¼øÂ÷ÀûÀÎ TDI_ACCEPT ¸®Äù½ºÆ®¸¦ °¡Áö°í ÇÊ¿äÇÑ »ç¿ëÀÚ µ¥ÀÌŸ¸¦ Á¦°øÇÒ ¼ö ÀÖ´Ù.
Æ®·£½ºÆ÷Æ®°¡ ƯÁ¤ TDI IOCTL ¸®Äù½ºÆ®¸¦ À§Çؼ Ŭ¶óÀÌ¾ðÆ®·Î ÇÏ¿©±Ý »ç¿ëÀÚ µ¥ÀÌŸ¸¦ Á¦°øÇϵµ·Ï ÇÏÁö ¾ÊÀ» ¶§ Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ 0ÀÌ ¾Æ´Ñ UserDataLength¸¦ ¸í½ÃÇÑ ¸ðµç ±×·¯ÇÑ ¸®Äù½ºÆ®¸¦ ½ÇÆÐÇÑ´Ù.
Options¿Í OptionsLength »ç¿ëÇϱâ
TDI_LISTEN ¸®Äù½ºÆ®¿¡ ´ëÇØ¼ OptionsLength´Â 0ÀÏ ¼ö ÀÖ°í Ŭ¶óÀÌ¾ðÆ®°¡ TdiBuildListen ÇÔ¼ö¿¡ Flags ¸Å°³º¯¼ö¿¡ TDI_QUERY_ACCEPT¸¦ ¼³Á¤ÇÑ´Ù¸é sizeof(ULONG)ÀÌ´Ù. ±×¸®°í Options´Â NULLÀÏ ¼ö ÀÖ´Ù. ¾Æ´Ï¸é ¹öÆÛ´Â TDI_QUERY_ACCEPT¸¦ Æ÷ÇÔÇÑ´Ù.
TDI_LISTEN ¸®Äù½ºÆ®¸¦ Á¦¿ÜÇÏ°í Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®¸¦ À§Çؼ Áö¿øÇÏ´Â Ãß°¡ÀûÀÎ ¿É¼ÇÀÇ ½ÅÅýº¸¦ Á¤ÀÇÇÑ´Ù:
- Ŭ¶óÀÌ¾ðÆ®°¡ Options¿¡ Æ®·£½ºÆ÷Æ® ƯÁ¤ Á¤º¸¸¦ Á¦°øÇßÀ» ¶§ OptionsLength¸¦ 0À¸·Î ¼³Á¤ÇÏ´Â °ÍÀº ÇϺÎÀÇ µå¶óÀ̹ö°¡ ¿É¼ÇÀ» À§Çؼ ±âº» °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¾Ï½ÃÇÑ´Ù. Æ®·£½ºÆ÷Æ®°¡ Options¿¡ Á¤º¸¸¦ ¸®ÅÏÇÒ ¶§ OptionsLength¸¦ 0À¸·Î ¼³Á¤ÇÏ´Â °ÍÀº Ŭ¶óÀÌ¾ðÆ®°¡ ¸®ÅÏµÈ µ¥ÀÌŸ¸¦ »ç¿ëÇÏÁö ¾Ê°í Æ®·£½ºÆ÷Æ®´Â Options¸¦ ¹«½ÃÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¾Ï½ÃÇÑ´Ù.
- ±×¶óÈù Ŭ¶óÀÌ¾ðÆ®°¡ OptionsLength¸¦ 0ÀÌ ¾Æ´Ñ °ªÀ¸·Î ¼³Á¤ÇÏÁö¸¸ Æ®·£½ºÆ÷Æ®°¡ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ¸¦ À§Çؼ ³Ê¹« ¸¹Àº ¿É¼Ç ¹®ÀÚ¿À» ¹Þ´Â´Ù¸é Æ®·£½ºÆ÷Æ®´Â ¿É¼Ç ¹®ÀÚ¿ÀÇ ³¡À» ÀÚ¸£°í µ¥ÀÌŸ Àý´ÜÀÌ ¹ß»ýÇßÀ½À» ¾Ë¸®´Â »óŸ¦ °¡Áö°í Ŭ¶óÀÌ¾îÆ®ÀÇ ¸®Äù½ºÆ®¸¦ ¿Ï·áÇÑ´Ù.
- ±×·¯ÇÑ Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®°¡ Àü¼ÛÇÏ´Â µå¶óÀ̹ö¿¡ ´ëÇØ¼ ¿É¼Ç °ªÀ» ¼¼úÇÏ´Â Options¸¦ »ç¿ëÇÒ ¶§ µå¶óÀ̹ö°¡ ½ÇÁ¦·Î ¾´ °ªÀº Ŭ¶óÀÌ¾ðÆ® Æ¯Á¤ °ª°ú´Â ´Ù¸¦ ¼ö ÀÖ´Ù.
RemoteAddress¿Í RemoteAddressLength »ç¿ëÇϱâ
ÀÌ ¸â¹öÀÇ »ç¿ëÀº Æ®·£½ºÆ÷Æ® ƯÁ¤ ÁÖ¼ÒÀÇ »çÀÌÁî¿Í TDI_XXX IOCTL¿¡ ÀÇÁ¸ÇÑ´Ù. ÀϹÝÀûÀ¸·Î ·ÎÄÃÀÇ Å¬¶óÀÌ¾ðÆ®°¡ ¿¬°á Á¦°ø°ú º¸³»±â °°Àº ³×Æ®¿÷ Àü¼Û ¿¬»êÀ» ½ÃÀÛÇÒ ¶§ Ÿ°Ù ¿ø°ÝÁö ÁÖ¼Ò¸¦ ¼¼úÇϱâ À§Çؼ RemoteAddress¸¦ »ç¿ëÇÑ´Ù. ±×·¯ÇÑ ¿¬»êÀÌ ´ë±â¿Í ¸®½Ãºê ¸®Äù½ºÆ®¸¦ ¸¸Á·½ÃŰ´Â ¿ø°ÝÁö¿¡¼ ½ÃÀÛµÆÀ» ¶§ Æ®·£½ºÆ÷Æ®´Â RemoteAddress·Î Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
Ŭ¶óÀÌ¾ðÆ®°¡ RemoteAddressLength¸¦ 0À¸·Î ¼¼úÇÑ´Ù¸é Æ®·£½ºÆ÷Æ®´Â RemoteAddress¸¦ NULL·Î °¡Á¤ÇÑ´Ù. ¸¸¾à Ŭ¶óÀÌ¾ðÆ®°¡ RemoteAddressLength¸¦ 0ÀÌ ¾Æ´Ñ °ªÀ¸·Î ¼¼úÇÏÁö¸¸ Æ®·£½ºÆ÷Æ®°¡ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ¿¡ ´ëÇØ¼ ³Ê¹« ±ä ÁÖ¼Ò¸¦ ¹Þ´Â´Ù¸é µå¶óÀ̹ö ÇÔ¼ö´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¹öÆÛ¿¡ Àû¿ë½Ã۱â À§Çؼ ÁÖ¼Ò¸¦ ÀÚ¸¥´Ù. ÀÌ °æ¿ì¿¡ Æ®·£½ºÆ÷Æ®´Â ¿¬»êÀ» ¿Ï·áÇÏÁö¸¸ Ŭ¶óÀÌ¾ðÆ®·Î µ¥ÀÌŸ Àý´ÜÀ» ÀεðÄÉÀÌÆ®ÇÏ´Â »óÅ Äڵ带 ¸®ÅÏÇÑ´Ù.
|