다음을 통해 공유


WSAPROTOCOL_INFOA 구조체(winsock2.h)

WSAPROTOCOL_INFO 구조체는 지정된 프로토콜에 대한 전체 정보를 저장하거나 검색하는 데 사용됩니다.

통사론

typedef struct _WSAPROTOCOL_INFOA {
  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;
  CHAR             szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;

회원

dwServiceFlags1

형식: DWORD

프로토콜에서 제공하는 서비스를 설명하는 비트 마스크입니다. 이 멤버에 대한 가능한 값은 Winsock2.h 헤더 파일에 정의됩니다.

다음 값이 가능합니다.

의미
XP1_CONNECTIONLESS
0x00000001
연결 없는(데이터그램) 서비스를 제공합니다. 설정되지 않은 경우 프로토콜은 연결 지향 데이터 전송을 지원합니다.
XP1_GUARANTEED_DELIVERY
0x00000002
전송된 모든 데이터가 의도한 대상에 도달할 수 있도록 보장합니다.
XP1_GUARANTEED_ORDER
0x00000004
데이터가 전송된 순서로만 도착하고 중복되지 않도록 보장합니다. 이 특성이 반드시 데이터가 항상 배달된다는 것을 의미하지는 않지만 전달되는 모든 데이터는 전송된 순서대로 전달됩니다.
XP1_MESSAGE_ORIENTED
0x00000008
메시지 경계의 개념이 없는 스트림 지향 프로토콜과 달리 메시지 경계를 적용합니다.
XP1_PSEUDO_STREAM
0x00000010
메시지 지향 프로토콜이지만 모든 수신에 대해서는 메시지 경계가 무시됩니다. 이는 애플리케이션이 프로토콜에서 메시지 프레이밍을 수행하지 않는 경우에 편리합니다.
XP1_GRACEFUL_CLOSE
0x00000020
2단계(정상) 닫기를 지원합니다. 설정하지 않으면 중단 닫기만 수행됩니다.
XP1_EXPEDITED_DATA
0x00000040
신속한(긴급) 데이터를 지원합니다.
XP1_CONNECT_DATA
0x00000080
데이터 연결을 지원합니다.
XP1_DISCONNECT_DATA
0x00000100
데이터 연결을 끊을 수 있습니다.
XP1_SUPPORT_BROADCAST
0x00000200
브로드캐스트 메커니즘을 지원합니다.
XP1_SUPPORT_MULTIPOINT
0x00000400
멀티포인트 또는 멀티캐스트 메커니즘을 지원합니다. 컨트롤 및 데이터 평면 특성은 아래에 표시됩니다.
XP1_MULTIPOINT_CONTROL_PLANE
0x00000800
컨트롤 플레인의 루트(값 = 1) 또는 루트가 아닌지(값 = 0) 여부를 나타냅니다.
XP1_MULTIPOINT_DATA_PLANE
0x00001000
데이터 평면이 루트(값 = 1) 또는 루트가 아닌지(값 = 0) 여부를 나타냅니다.
XP1_QOS_SUPPORTED
0x00002000
서비스 품질 요청을 지원합니다.
XP1_INTERRUPT
비트가 예약되어 있습니다.
XP1_UNI_SEND
0x00008000
프로토콜은 전송 방향에서 단방향입니다.
XP1_UNI_RECV
0x00010000
프로토콜은 사각형 방향으로 단방향입니다.
XP1_IFS_HANDLES
0x00020000
공급자가 반환하는 소켓 설명자는 운영 체제 IFS(설치 가능한 파일 시스템) 핸들입니다.
XP1_PARTIAL_MESSAGE
0x00040000
MSG_PARTIAL 플래그는 WSASend WSASendTo지원됩니다.
XP1_SAN_SUPPORT_SDP
0x00080000
이 프로토콜은 SAN에 대한 지원을 제공합니다.

이 값은 Windows 7 및 Windows Server 2008 R2에서 지원됩니다.

 
참고 XP1_UNI_SEND 또는 XP1_UNI_RECV 값 중 하나만 설정할 수 있습니다. 프로토콜이 어느 방향으로든 단방향일 수 있는 경우 두 개의 WSAPROTOCOL_INFOW 구조를 사용해야 합니다. 두 비트가 모두 설정되지 않은 경우 프로토콜은 양방향으로 간주됩니다.
 

dwServiceFlags2

형식: DWORD

추가 프로토콜 특성 정의를 위해 예약됩니다.

dwServiceFlags3

형식: DWORD

추가 프로토콜 특성 정의를 위해 예약됩니다.

dwServiceFlags4

형식: DWORD

추가 프로토콜 특성 정의를 위해 예약됩니다.

dwProviderFlags

형식: DWORD

Winsock 카탈로그에서 이 프로토콜을 나타내는 방법에 대한 정보를 제공하는 플래그 집합입니다. 이 멤버에 대한 가능한 값은 Winsock2.h 헤더 파일에 정의됩니다.

다음 플래그 값이 가능합니다.

의미
PFL_MULTIPLE_PROTO_ENTRIES
0x00000001
여러 동작을 구현할 수 있는 단일 프로토콜(지정된 공급자)에 대한 두 개 이상의 항목 중 하나임을 나타냅니다. 이 예제는 수신 쪽에서 메시지 지향 프로토콜 또는 스트림 지향 프로토콜로 동작할 수 있는 SPX입니다.
PFL_RECOMMENDED_PROTO_ENTRY
0x00000002
여러 동작을 구현할 수 있는 프로토콜에 권장되거나 가장 자주 사용되는 항목임을 나타냅니다.
PFL_HIDDEN
0x00000004
WSAEnumProtocols생성된 결과 버퍼에서 이 프로토콜을 반환해서는 안 됨을 Ws2_32.dll 나타내도록 공급자가 설정합니다. 물론 Windows Sockets 2 애플리케이션에는 이 비트 집합이 있는 항목이 표시되지 않아야 합니다.
PFL_MATCHES_PROTOCOL_ZERO
0x00000008
소켓 또는 WSASocket프로토콜 매개 변수의 값이 이 프로토콜 항목과 일치한다는 것을 나타냅니다.
PFL_NETWORKDIRECT_PROVIDER
0x00000010
공급자가 네트워크 직접 액세스에 대한 지원을 나타내도록 설정합니다.

이 값은 Windows 7 및 Windows Server 2008 R2에서 지원됩니다.

ProviderId

형식: GUID

서비스 공급자 공급업체가 공급자에게 할당한 GUID(Globally Unique Identifier)입니다. 이 값은 둘 이상의 서비스 공급자가 특정 프로토콜을 구현할 수 있는 인스턴스에 유용합니다. 애플리케이션은 ProviderId 멤버를 사용하여 구별할 수 없는 공급자를 구분할 수 있습니다.

dwCatalogEntryId

형식: DWORD

WSAPROTOCOL_INFO 구조에 대해 WS2_32.DLL 할당된 고유 식별자입니다.

ProtocolChain

형식: WSAPROTOCOLCHAIN

WSAPROTOCOLCHAIN은 프로토콜과 연결된 구조를. 체인의 길이가 0인 경우 이 WSAPROTOCOL_INFO 항목은 Windows 소켓 2 SPI를 위쪽 및 아래쪽 가장자리로 사용하는 계층화된 프로토콜을 나타냅니다. 체인의 길이가 1이면 이 항목은 카탈로그 항목 식별자가 WSAPROTOCOL_INFO 구조체의 dwCatalogEntryId 멤버에 있는 기본 프로토콜을 나타냅니다. 체인 길이가 1보다 큰 경우 이 항목은 기본 프로토콜 위에 하나 이상의 계층화된 프로토콜로 구성된 프로토콜 체인을 나타냅니다. 해당 카탈로그 항목 식별자는 맨 위에 있는 계층화된 프로토콜(ProtocolChain.ChainEntries 배열의 0개 요소)부터 시작하여 기본 프로토콜로 끝나는 ProtocolChain.ChainEntries 배열에 있습니다. 프로토콜 체인에 대한 자세한 내용은 Windows 소켓 2 서비스 공급자 인터페이스 사양을 참조하세요.

iVersion

형식: int

프로토콜 버전 식별자입니다.

iAddressFamily

형식: int

이 프로토콜에 대한 소켓을 열기 위해 소켓 또는 WSASocket 함수에 주소 패밀리 매개 변수로 전달할 값입니다. 또한 이 값은 프로토콜에서 사용되는 sockaddr 대한 프로토콜 주소의 구조를 고유하게 정의합니다.

Windows Vista 이상용으로 릴리스된 Windows SDK에서 주소 패밀리에 대한 가능한 값은 Ws2def.h 헤더 파일에 정의됩니다. Ws2def.h 헤더 파일은 Winsock2.h자동으로 포함되며 직접 사용하면 안 됩니다.

Windows Server 2003 이상용 Platform SDK 버전에서 주소 패밀리에 대한 가능한 값은 Winsock2.h 헤더 파일에 정의됩니다.

현재 지원되는 값은 IPv4 및 IPv6의 인터넷 주소 패밀리 형식인 AF_INET 또는 AF_INET6. 주소 패밀리에 대한 다른 옵션(예: NetBIOS에서 사용할 AF_NETBIOS)은 주소 패밀리에 대한 Windows 소켓 서비스 공급자가 설치된 경우 지원됩니다. AF_ 주소 패밀리 및 PF_ 프로토콜 패밀리 상수의 값은 동일하므로(예: AF_INETPF_INET) 상수 중 하나를 사용할 수 있습니다.

아래 표에는 주소 패밀리에 대한 공통 값이 나와 있지만 다른 많은 값이 가능합니다.

iAddressFamily 의미
AF_INET
2
IPv4(인터넷 프로토콜 버전 4) 주소 패밀리입니다.
AF_IPX
6
IPX/SPX 주소 패밀리입니다. 이 주소 패밀리는 NWLink IPX/SPX NetBIOS 호환 전송 프로토콜이 설치된 경우에만 지원됩니다.

이 주소 패밀리는 Windows Vista 이상에서 지원되지 않습니다.

AF_APPLETALK
16
AppleTalk 주소 패밀리입니다. 이 주소 패밀리는 AppleTalk 프로토콜이 설치된 경우에만 지원됩니다.

이 주소 패밀리는 Windows Vista 이상에서 지원되지 않습니다.

AF_NETBIOS
17
NetBIOS 주소 패밀리입니다. 이 주소 패밀리는 NetBIOS용 Windows 소켓 공급자가 설치된 경우에만 지원됩니다.

NetBIOS용 Windows 소켓 공급자는 32비트 버전의 Windows에서 지원됩니다. 이 공급자는 기본적으로 32비트 버전의 Windows에 설치됩니다.

NetBIOS용 Windows 소켓 공급자는 Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 또는 Windows XP를 포함한 64비트 버전의 Windows에서 지원되지 않습니다.

NetBIOS용 Windows 소켓 공급자는 형식 매개 변수가 SOCK_DGRAM설정된 소켓만 지원합니다.

NetBIOS용 Windows 소켓 공급자는 NetBIOS 프로그래밍 인터페이스와 직접 관련이 없습니다. NetBIOS 프로그래밍 인터페이스는 Windows Vista, Windows Server 2008 이상에서 지원되지 않습니다.

AF_INET6
23
IPv6(인터넷 프로토콜 버전 6) 주소 패밀리입니다.
AF_IRDA
26
IrDA(적외선 데이터 연결) 주소 패밀리입니다.

이 주소 패밀리는 컴퓨터에 적외선 포트와 드라이버가 설치된 경우에만 지원됩니다.

AF_BTH
32
Bluetooth 주소 패밀리입니다.

이 주소 패밀리는 컴퓨터에 Bluetooth 어댑터와 드라이버가 설치된 경우 WINDOWS XP SP2 이상에서 지원됩니다.

iMaxSockAddr

형식: int

최대 주소 길이(바이트)입니다.

iMinSockAddr

형식: int

최소 주소 길이(바이트)입니다.

iSocketType

형식: int

이 프로토콜에 대한 소켓을 열기 위해 소켓 또는 WSASocket 함수에 소켓 형식 매개 변수로 전달할 값입니다. 소켓 형식에 대한 가능한 값은 Winsock2.h 헤더 파일에 정의됩니다.

다음 표에서는 Windows 소켓 2에서 지원되는 iSocketType 멤버에 대한 가능한 값을 나열합니다.

iSocketType 의미
SOCK_STREAM
1
OOB 데이터 전송 메커니즘을 사용하여 시퀀스된 신뢰할 수 있는 양방향 연결 기반 바이트 스트림을 제공하는 소켓 형식입니다. 이 소켓 유형은 인터넷 주소 패밀리(AF_INET 또는 AF_INET6)에 TCP(Transmission Control Protocol)를 사용합니다.
SOCK_DGRAM
2
고정(일반적으로 작은) 최대 길이의 연결되지 않고 신뢰할 수 없는 버퍼인 데이터그램을 지원하는 소켓 형식입니다. 이 소켓 유형은 인터넷 주소 패밀리(AF_INET 또는 AF_INET6)에 UDP(사용자 데이터그램 프로토콜)를 사용합니다.
SOCK_RAW
3
애플리케이션이 다음 상층 프로토콜 헤더를 조작할 수 있도록 하는 원시 소켓을 제공하는 소켓 형식입니다. IPv4 헤더를 조작하려면 소켓에서 IP_HDRINCL 소켓 옵션을 설정해야 합니다. IPv6 헤더를 조작하려면 소켓에서 IPV6_HDRINCL 소켓 옵션을 설정해야 합니다.
SOCK_RDM
4
신뢰할 수 있는 메시지 데이터그램을 제공하는 소켓 형식입니다. 이 유형의 예로 Windows의 PGM(실용적 일반 멀티캐스트) 멀티캐스트 프로토콜 구현이 있으며, 신뢰할 수 있는 멀티캐스트 프로그래밍.

이 값은 신뢰할 수 있는 멀티캐스트 프로토콜이 설치된 경우에만 지원됩니다.

SOCK_SEQPACKET
5
데이터그램을 기반으로 의사 스트림 패킷을 제공하는 소켓 형식입니다.

iProtocol

형식: int

이 프로토콜에 대한 소켓을 열기 위해 소켓 또는 WSASocket 함수에 프로토콜 매개 변수로 전달할 값입니다. iProtocol 멤버에 대한 가능한 옵션은 지정된 주소 패밀리 및 소켓 유형에 따라 다릅니다.

Windows Vista 이상용으로 릴리스된 Windows SDK에서 이 멤버는 Ws2def.h 헤더 파일에 정의된 IPPROTO 열거형 형식의 값 중 하나일 수 있습니다. Ws2def.h 헤더 파일은 Winsock2.h자동으로 포함되며 직접 사용하면 안 됩니다.

Windows Server 2003 이하 버전의 Platform SDK에서는 iProtocol 멤버에 대한 가능한 값이 Winsock2.hWsrm.h 헤더 파일에 정의됩니다.

아래 표에는 다른 많은 값이 가능하지만 iProtocol 대한 공통 값이 나와 있습니다.

iProtocol 의미
IPPROTO_ICMP
1
ICMP(인터넷 제어 메시지 프로토콜)입니다.

이 값은 Windows XP 이상에서 지원됩니다.

IPPROTO_IGMP
2
IGMP(인터넷 그룹 관리 프로토콜)입니다.

이 값은 Windows XP 이상에서 지원됩니다.

BTHPROTO_RFCOMM
3
Bluetooth RFCOMM(Bluetooth 무선 주파수 통신) 프로토콜입니다.

이 값은 WINDOWS XP SP2 이상에서 지원됩니다.

IPPROTO_TCP
6
TCP(Transmission Control Protocol)입니다.
IPPROTO_UDP
17
UDP(사용자 데이터그램 프로토콜)입니다.
IPPROTO_ICMPV6
58
ICMPv6(인터넷 제어 메시지 프로토콜 버전 6)입니다.

이 값은 Windows XP 이상에서 지원됩니다.

IPPROTO_RM
113
신뢰할 수 있는 멀티캐스트에 대한 PGM 프로토콜입니다. Windows Vista 이상용으로 릴리스된 Windows SDK에서 이 프로토콜을 IPPROTO_PGM라고도 합니다.

이 값은 신뢰할 수 있는 멀티캐스트 프로토콜이 설치된 경우에만 지원됩니다.

iProtocolMaxOffset

형식: int

프로토콜 매개 변수에 대한 값을 소켓 또는 WSASocket 함수에 제공할 때 iProtocol 추가할 수 있는 최대값입니다. 모든 프로토콜이 값 범위를 허용하는 것은 아닙니다. 이 경우 iProtocolMaxOffset 0입니다.

iNetworkByteOrder

형식: int

현재 이러한 값은 각각 값이 0과 1인 big-endian 또는 little-endian을 나타내는 매니페스트 상수(BIGENDIAN 및 LITTLEENDIAN)입니다.

iSecurityScheme

형식: int

사용하는 보안 체계의 유형입니다(있는 경우). SECURITY_PROTOCOL_NONE(0) 값은 보안 프로비저닝을 통합하지 않는 프로토콜에 사용됩니다.

dwMessageSize

형식: DWORD

프로토콜에서 지원하는 최대 메시지 크기(바이트)입니다. 호스트의 로컬 인터페이스에서 보낼 수 있는 최대 크기입니다. 메시지 프레이밍을 지원하지 않는 프로토콜의 경우 지정된 주소로 보낼 수 있는 실제 최대값이 적을 수 있습니다. 최대 인바운드 메시지 크기를 결정하는 표준 프로비저닝은 없습니다. 다음 특수 값이 정의됩니다.

의미
0
프로토콜은 스트림 지향적이므로 메시지 크기의 개념은 관련이 없습니다.
0x1
최대 아웃바운드(보내기) 메시지 크기는 기본 네트워크 MTU(최대 크기 전송 단위)에 따라 달라지므로 소켓이 바인딩될 때까지 알 수 없습니다. 애플리케이션은 getsockopt 사용하여 소켓이 로컬 주소에 바인딩된 후 SO_MAX_MSG_SIZE 값을 검색해야 합니다.
0xFFFFFFFF
프로토콜은 메시지 지향이지만 전송될 수 있는 메시지의 크기에 대한 최대 제한은 없습니다.

dwProviderReserved

형식: DWORD

서비스 공급자가 사용하도록 예약되어 있습니다.

szProtocol[WSAPROTOCOL_LEN + 1]

형식: TCHAR[WSAPROTOCOL_LEN+1]

프로토콜을 식별하는 사람이 읽을 수 있는 이름을 포함하는 문자 배열입니다(예: "MSAFD Tcpip [UDP/IP]"). 허용되는 최대 문자 수는 WSAPROTOCOL_LEN 255자로 정의됩니다.

발언

메모

winsock2.h 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 WSAPROTOCOL_INFO 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱만 해당]
헤더 winsock2.h

참고 항목

WSAEnumProtocols

WSAPROTOCOLCHAIN

WSAPROTOCOL_INFOW

WSASend

WSASendTo

WSASocket

WSCInstallProvider

WSCInstallProvider64_32

WSCUpdateProvider

WSCUpdateProvider32

getsockopt

소켓