WSAPROTOCOL_INFO
typedef struct _WSAPROTOCOL_INFOW {
DWORD dwServiceFlags1;
DWORD dwServiceFlags2;
DWORD dwServiceFlags3;
DWORD dwServiceFlags4;
DWORD dwProviderFlags;
GUID ProviderId;
DWORD dwCatalogEntryId;
WSAPROTOCOLCHAIN ProtocolChain;
int iVersion;
int iAddressFamily;
int iMaxSockAddr;
int iMinSockAddr;
int iSocketType;
int iProtocol;
int iProtocolMaxOffset;
int iNetworkByteOrder;
int iSecurityScheme;
DWORD dwMessageSize;
DWORD dwProviderReserved;
WCHAR szProtocol[WSAPROTOCOL_LEN+1];
} WSAPROTOCOL_INFOW, FAR * LPWSAPROTOCOL_INFOW;
Members
dwServiceFlags1
ÇÁ·ÎÅäÄÝ·Î
Áö¿øµÈ ¼ºñ½ºµéÀ» Ç¥ÇöÇÏ´Â ºñÆ®¸¶½ºÅ©·Î, ¾Æ·¡¿¡ ³ª¿ÇÑ °ªµéÀÌ »ç¿ëµË´Ï´Ù.
XP1_CONNECTIONLESS
ÇÁ·ÎÅäÄÝÀº ºñÁ¢¼Ó(µ¥ÀÌÅͱ׷¥)
¼ºñ½º¸¦ Áö¿øÇÕ´Ï´Ù. ¼³Á¤ÀÌ µÇ¾î ÀÖÁö ¾Ê´Ù¸é, ÇÁ·ÎÅäÄÝÀº Á¢¼ÓÁöÇâÇü µ¥ÀÌÅÍ
Àü¼ÛÀ» Áö¿øÇÕ´Ï´Ù.
XP1_GUARANTEED_DELIVERY
ÇÁ·ÎÅäÄÝÀº ¸ðµç
µ¥ÀÌÅͰ¡ ¿øÇÏ´Â ¸ñÀûÁö¿¡ µµ´ÞÇϵµ·Ï Ã¥ÀÓÀ» Áý´Ï´Ù.
XP1_GUARANTEED_ORDER
ÇÁ·ÎÅäÄÝÀº Àü¼ÛÇÑ
µ¥ÀÌÅͰ¡ Áߺ¹µÇÁö ¾Ê°Ô ¼ø¼´ë·Î µµÂøÇÏ°Ô Çϴ åÀÓÀ» Áý´Ï´Ù. ÀÌ·¯ÇÑ Æ¯¼ºÀ»
ÁÖ¾ú´Ù°í µ¥ÀÌÅͰ¡ Ç×»ó ¼º°øÀûÀ¸·Î Àü´ÞµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ´ÜÁö Àü¼ÛµÈ µ¥ÀÌÅͰ¡
º¸³»Áø ¼ø¼´ë·Î Àü´ÞµÇµµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù.
XP1_MESSAGE_ORIENTED
ÇÁ·ÎÅäÄÝÀº ¸Þ½ÃÁö
Á¦ÇÑ(boundary) °³³äÀÌ ¾ø´Â ½ºÆ®¸² ÁöÇâÇü ÇÁ·ÎÅäÄÝ(TCP)¿Í ´Þ¸®, ¸Þ½ÃÁö Á¦ÇÑÀ»
µÓ´Ï´Ù..
XP1_PSEUDO_STREAM
ÀÌ °ªÀº ¸Þ½ÃÁö ÁöÇâÇü
ÇÁ·ÎÅäÄÝ ÀÌÁö¸¸, ¸Þ½ÃÁö Á¦ÇÑ(boundary)Àº ¸ðµç ¼ö½Å¿¡ ¹«½Ã µË´Ï´Ù. ÀÌ °ªÀº
¾îÇø®ÄÉÀ̼ÇÀÌ ÇÁ·ÎÅäÄÝ¿¡ ÀÇÇØ¼ ¿Ï·áµÈ ¸Þ½ÃÁö ÇÁ·¹ÀÓÀ» ¿øÇÏÁö ¾ÊÀ» ¶§ Æí¸®ÇϰÔ
»ç¿ëµË´Ï´Ù.
XP1_GRACEFUL_CLOSE
ÇÁ·ÎÅäÄÝÀº µÎ¹øÀÇ ÀýÂ÷(two-phase)¸¦
°ÅÃļ Á¾·áÇÏ´Â ±â´ÉÀ» Áö¿øÇÕ´Ï´Ù. ÀÌ °ªÀÌ ¼³Á¤µÇÁö ¾Ê´Â´Ù¸é, abort Á¾·á¸¸ÀÌ
¼öÇàµË´Ï´Ù.
XP1_EXPEDITED_DATA
ÇÁ·ÎÅäÄÝÀº ±ä±Þµ¥ÀÌÅÍÀÇ
󸮸¦ Áö¿øÇÕ´Ï´Ù.
XP1_CONNECT_DATA
ÇÁ·ÎÅäÄÝÀº Á¢¼Ó µ¥ÀÌÅ͸¦
Áö¿øÇÕ´Ï´Ù.
XP1_DISCONNECT_DATA
ÇÁ·ÎÅäÄÝÀº µð½ºÄÁ³ØÆ®
µ¥ÀÌÅ͸¦ Áö¿øÇÕ´Ï´Ù.
XP1_INTERRUPT
¿¹¾àµÈ ºñÆ®ÀÔ´Ï´Ù.
XP1_SUPPORT_BROADCAST
ÇÁ·ÎÅäÄÝÀº ºê·ÎƮij½ºÆ®
¸ÅÄ¿´ÏÁòÀ» Áö¿øÇÕ´Ï´Ù.
XP1_SUPPORT_MULTIPOINT
ÇÁ·ÎÅäÄÝÀº ¸ÖƼÆ÷ÀÎÆ®
¶Ç´Â ¸ÖƼij½ºÆ® ¸ÅÄ¿´ÏÁòÀ» Áö¿øÇÕ´Ï´Ù.
XP1_MULTIPOINT_CONTROL_PLANE
Á¦¾î¼öÁØ(control
plane)ÀÌ ·çÆ®(value=1)ÀÎÁö ·çÆ®°¡ ¾Æ´ÑÁö(value=0)¸¦ ³ªÅ¸³À´Ï´Ù.
XP1_MULTIPOINT_DATA_PLANE
µ¥ÀÌÅÍ ¼öÁØ(data
plane)ÀÌ ·çÆ®(value=1)ÀÎÁö ·çÆ®°¡ ¾Æ´ÑÁö(value=0)¸¦ ³ªÅ¸³À´Ï´Ù.
XP1_QOS_SUPPORTED
ÇÁ·ÎÅäÄÝÀº ¼ºñ½ºÀÇ Æ¯¼º(QOS,
Quality Of Service)¿äûÀ» Áö¿øÇÕ´Ï´Ù.
XP1_UNI_SEND
ÇÁ·ÎÅäÄÝÀº Àü¼Û½Ã¿¡ ÇÑÂʹæÇâÀ¸·Î¸¸
ÀÛµ¿ÇÕ´Ï´Ù.
XP1_UNI_RECV
ÇÁ·ÎÅäÄÝÀº ¼ö½Å½Ã¿¡ ÇÑÂʹæÇâ¿¡¼¸¸
ÀÛµ¿ÇÕ´Ï´Ù.
XP1_IFS_HANDLES
ÇÁ·Î¹ÙÀÌ´õ¿¡ ÀÇÇØ¼ ¹ÝȯµÇ´Â
¼ÒÄÏ ±â¼úÀÚ´Â ¿î¿µ üüÀÇ IFS(Installable File System)ÇÚµé ÀÔ´Ï´Ù.
XP1_PARTIAL_MESSAGE
MSG_PARTIAL Ç÷¡±×´Â
WSASend
¿Í WSASendTo
ÇÔ¼ö¿¡¼ Á¦°øµÇ¾î Áý´Ï´Ù.
dwServiceFlags2
Ãß°¡ ÇÁ·ÎÅäÄÝ ¼Ó¼º Á¤ÀǸ¦
À§ÇØ ¿¹¾àµÇ¾î ÀÖ½À´Ï´Ù.
dwServiceFlags3
Ãß°¡ ÇÁ·ÎÅäÄÝ ¼Ó¼º Á¤ÀǸ¦
À§ÇØ ¿¹¾àµÇ¾î ÀÖ½À´Ï´Ù.
dwServiceFlags4
Ãß°¡ ÇÁ·ÎÅäÄÝ ¼Ó¼º Á¤ÀǸ¦
À§ÇØ ¿¹¾àµÇ¾î ÀÖ½À´Ï´Ù.
dwProviderFlags
ÇÁ·ÎÅäÄÝÀÌ ÇÁ·ÎÅäÄÝ
¸ñ·Ï¿¡¼ ¾î¶»°Ô Ç¥ÇöµÉ °ÍÀΰ¡¿¡ ´ëÇÑ Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù. ¾Æ·¡ÀÇ °ªµéÀÌ »ç¿ëµÉ
¼ö ÀÖ½À´Ï´Ù.
PFL_MULTIPLE_PROTO_ENTRIES
¿©·¯ µ¿ÀÛÀÌ
°¡´ÉÇÑ ´ÜÀÏ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ÇÑ °³ ¶Ç´Â ¿©·¯°³ÀÇ ¸é¸ðÁß Çϳª°¡ ÀÖ´Ù´Â °ÍÀ»
³ªÅ¸³À´Ï´Ù. ¿¹¸¦µé¾î, ¼ö½ÅÃø¿¡¼ÀÇ SPX ÇÁ·ÎÅäÄÝÀº ¸Þ½ÃÁö ÁöÇâÇüÀ̳ª, ½ºÆ®¸²
ÁöÇâÇüÀ̳ª µ¿ÀÛÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌÁÒ.
PFL_RECOMMENDED_PROTO_ENTRY
¿©·¯ µ¿ÀÛÀÌ
°¡´ÉÇÑ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ Ç׸ñÀÌ ÀÚÁÖ »ç¿ëµÇ°Å³ª ±ÇÀåµÊÀ» ³ªÅ¸³À´Ï´Ù.
PFL_HIDDEN
À©¼Ó DLLÀ» ³ªÅ¸³»´Â ÇÁ·Î¹ÙÀÌ´õ¿¡
ÀÇÇØ¼ ¼³Á¤µË´Ï´Ù. ÀÌ ÇÁ·ÎÅäÄÝÀº WSAEnumProtocols
ÇÔ¼ö¿¡ ÀÇÇØ¼ »ý¼ºµÇ´Â °á°ú ¹öÆÛ¸¦ ¹ÝȯÇÏÁö ¾Ê½À´Ï´Ù. ¾î·µç ºÐ¸íÇÑ°Ç À©¼Ó2
¾îÇø®ÄÉÀ̼ǿ¡¼´Â ÀÌ ºñÆ®¸¦ ¼³Á¤ÇÏ´Â Ç׸ñÀ» º¼¼ø ¾øÀ» °Ì´Ï´Ù.
PFL_MATCHES_PROTOCOL_ZERO
socket À̳ª WSASocket
ÇÔ¼ö¿¡¼ 0 °ªÀ» °¡Áö´Â ÇÁ·ÎÅäÄÝ ¸Å°³º¯¼ö°¡ ÀÌ ÇÁ·ÎÅäÄÝ Ç׸ñ°ú ÀÏÄ¡ µÈ´Ù´Â
°ÍÀ» ³ªÅ¸³À´Ï´Ù.
ProviderId
ÀüüÀûÀ¸·Î º¼ ¶§ À¯ÀÏÇÑ ½Äº°ÀÚ´Â
¼ºñ½º ÇÁ·Î¹ÙÀÌ´õ º¥´õ¿¡ À§ÇÑ ÇÁ·Î¹ÙÀÌ´õ¿¡ ÇÒ´çµÇ¾î Áý´Ï´Ù. ÀÌ °ªÀº ¿©·¯°³ÀÇ
¼ºñ½º ÇÁ·Î¹ÙÀÌ´õ°¡ °¡´ÉÇÑ °÷¿¡¼ À¯¿ëÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.
dwCatalogEntryId
°¢°¢ÀÇ WSAPROTOCOL_INFO
±¸Á¶Ã¼¿¡ ´ëÇÑ À©µµÁî ¼ÒÄÏ DLL¿¡ ÀÇÇØ ÇÒ´çµÇ´Â À¯ÀÏÇÑ ½Äº°ÀÚ.
iVersion
ÇÁ·ÎÅäÄÝ ¹öÀü ½Äº°ÀÚ
iAddressFamily
ÀÌ ±¸Á¶Ã¼°¡ °¡¸®Å°´Â
ÇÁ·ÎÅäÄÝ·Î ¼ÒÄÏÀ» °³¹æÇϱâ À§ÇØ socket/WSASocket
ÇÔ¼öÀÇ ¾îµå·¹½º ÁýÇÕ(family) ¸Å°³º¯¼ö¸¦ ³Ñ±â±âÀ§ÇÑ °ªÀÔ´Ï´Ù. ÀÌ °ªÀº ¶ÇÇÑ ÇÁ·ÎÅäÄÝ
¾îµå·¹½º(SOCKADDR)¸¦
À¯ÀÏÇÏ°Ô Á¤ÀÇ ÇÕ´Ï´Ù.
iMaxSockAddr
ÃÖ´ë ¾îµå·¹½º ±æÀÌ
iMinSockAddr
ÃÖ¼Ò ¾îµå·¹½º ±æÀÌ
iSocketType
ÀÌ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ¼ÒÄÏÀ»
°³¹æ ÇϱâÀ§ÇÑ socket
ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ³Ñ±æ ¼ÒÄÏŸÀÔ ¸Å°³º¯¼ö °ªÀÔ´Ï´Ù.
iProtocol
ÀÌ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ¼ÒÄÏÀ»
°³¹æ ÇϱâÀ§ÇÑ socket
ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ³Ñ±æ ÇÁ·ÎÅäÄÝ ¸Å°³º¯¼ö °ªÀÔ´Ï´Ù.
iProtocolMaxOffset
socket
°ú WSASocket
ÇÔ¼ö¿¡ protocol ¸Å°³º¯¼ö·Î °ªÀ» ÁöÁ¤ÇÒ ¶§ iProtocol ¿¡ ´õÇØÁö´Â
ÃÖ´ë °ªÀ¸·Î. ¸ðµç ÇÁ·ÎÅäÄÝÀÌ ÀÌ °ªÀÇ ¹üÀ§¸¦ Çã¿ëÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù.
iNetworkByteOrder
"big-endian"³ª
"little-endian"ÀÎ »ó¼ö°ªÀ» °¡Áý´Ï´Ù. (Á¤ÀÇµÈ »ó¼ö: BIGENDIAN, LITTLEENDIAN)
iSecurityScheme
º¸¾È Á¤Ã¥ÀÇ ÇüŸ¦ ³ªÅ¸³À´Ï´Ù.
SECURITY_PROTOCOL_NONE °ªÀº º¸¾È Á¤Ã¥À» ±¸Ã¼ÀûÀ¸·Î ¼¼¿ìÁö ¾Ê´Â ÇÁ·ÎÅäÄÝ¿¡ »ç¿ëµË´Ï´Ù.
dwMessageSize
ÀÌ ÇÁ·ÎÅäÄÝ¿¡¼ Á¦°øµÇ´Â
ÃÖ´ë ¸Þ½ÃÁö Å©±âÀÔ´Ï´Ù. ÀÌ °ªÀº ÃÖ´ëÀÇ ¸Þ½ÃÁö Å©±â°¡ Á¤ÀǵǴ ǥÁرÔÁ¤ÀÌ ¾ø½À´Ï´Ù.
¾Æ·¡¿¡ Á¦½ÃµÈ °ªÀº Ưº°È÷ Á¤ÀǵǾî ÀÖ½À´Ï´Ù.
0
ÇÁ·ÎÅäÄÝÀÌ ½ºÆ®¸² ÁöÇâÇü À̰í, µû¶ó¼
¸Þ½ÃÁö Å©±â¿¡ ´ëÇÑ °³³äÀº ¾ø½À´Ï´Ù.
0x1
ÃÖ´ë·Î Àü¼ÛµÇ´Â ¸Þ½ÃÁö Å©±â°¡ ±âº»
³×Æ®¿÷ MTU(Maximum sized Transmission Unit)¿¡ ´Þ·ÁÀÖ°í, µû¶ó¼ ¼ÒÄÏÀÌ ¹ÙÀεå
µÇ±â Àü±îÁö´Â ¾Ë ¼ö ¾ø½À´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº ¼ÒÄÏÀÌ ·ÎÄà ¾îµå·¹½º¿Í ¹ÙÀεå
µÇ°í ³ª¼ getsockopt
ÇÔ¼ö¸¦ ÀÌ¿ëÇØ SO_MAX_MSG_SIZEÀÇ °ªÀ» ¾ò¾î³¾ ¼ö ÀÖ½À´Ï´Ù.
0xFFFFFFFF
ÇÁ·ÎÅäÄÝÀÌ ¸Þ½ÃÁö ÁöÇâÇü ÀÌÁö¸¸,
¸Þ½ÃÁö¸¦ Àü¼ÛÇϴµ¥ ÃÖ´ëÅ©±â¶ó´Â Á¦ÇÑÀÌ ¾øÀ½À» ÀǹÌÇÕ´Ï´Ù.
dwProviderReserved
¼ºñ½º ÇÁ·Î¹ÙÀÌ´õ°¡ »ç¿ëÇϱâ À§ÇØ ¿¹¾à µÇ¾î ÀÖ½À´Ï´Ù.
szProtocol
ÇÁ·ÎÅäÄÝ ¹øÈ£¸¦ ÀбâÆíÇÑ À̸§À¸·Î ±¸¼ºµÇ¾î ÀÖ´Â ¹è¿ÀÔ´Ï´Ù. ÀÏ·Ê·Î "SPX2"
ÇÁ·ÎÅäÄÝ À̸§À» µé ¼ö ÀÖÁÒ. ÀÌ ¹è¿ÀÇ ÃÖ´ë Å©±â´Â WSAPROTOCOL_LENÀ¸·Î Á¤ÀÇ µÇ¾î
ÀÖ½À´Ï´Ù. Áï, ÃÖ´ë ±æÀÌ´Â 255 ¹ÙÀÌÆ® ÀÔ´Ï´Ù.