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ÀÌ ¾Æ´Ñ °ªÀ¸·Î ¼­¼úÇÏÁö¸¸ Æ®·£½ºÆ÷Æ®°¡ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ¿¡ ´ëÇØ¼­ ³Ê¹« ±ä ÁÖ¼Ò¸¦ ¹Þ´Â´Ù¸é µå¶óÀ̹ö ÇÔ¼ö´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¹öÆÛ¿¡ Àû¿ë½Ã۱â À§Çؼ­ ÁÖ¼Ò¸¦ ÀÚ¸¥´Ù. ÀÌ °æ¿ì¿¡ Æ®·£½ºÆ÷Æ®´Â ¿¬»êÀ» ¿Ï·áÇÏÁö¸¸ Ŭ¶óÀÌ¾ðÆ®·Î µ¥ÀÌŸ Àý´ÜÀ» ÀεðÄÉÀÌÆ®ÇÏ´Â »óÅ Äڵ带 ¸®ÅÏÇÑ´Ù.