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 헤더 파일에 정의되어 있습니다.
다음 값이 가능합니다.
값 | 의미 |
---|---|
|
연결 없는(데이터그램) 서비스를 제공합니다. 설정되지 않은 경우 프로토콜은 연결 지향 데이터 전송을 지원합니다. |
|
전송된 모든 데이터가 의도한 대상에 도달할 수 있도록 보장합니다. |
|
데이터가 전송된 순서대로만 도착하고 중복되지 않도록 보장합니다. 이 특성이 반드시 데이터가 항상 전달된다는 것을 의미하지는 않지만 전달되는 모든 데이터는 전송된 순서대로 전달됩니다. |
|
메시지 경계 개념이 없는 스트림 지향 프로토콜과 달리 메시지 경계를 적용합니다. |
|
메시지 지향 프로토콜이지만 모든 수신에 대해서는 메시지 경계가 무시됩니다. 이는 애플리케이션이 프로토콜에서 메시지 프레이밍을 수행하지 않는 경우에 편리합니다. |
|
2단계(정상) 닫기를 지원합니다. 설정하지 않으면 중단된 닫기만 수행됩니다. |
|
신속한(긴급) 데이터를 지원합니다. |
|
데이터 연결을 지원합니다. |
|
데이터 연결 끊기를 지원합니다. |
|
브로드캐스트 메커니즘을 지원합니다. |
|
멀티포인트 또는 멀티캐스트 메커니즘을 지원합니다. 컨트롤 및 데이터 평면 특성은 아래에 표시됩니다. |
|
컨트롤 플레인의 루트(value = 1) 또는 루트가 아닌지(value = 0) 여부를 나타냅니다. |
|
데이터 평면이 루트(값 = 1) 또는 루트가 아닌지(value = 0) 여부를 나타냅니다. |
|
서비스 품질 요청을 지원합니다. |
|
비트가 예약되어 있습니다. |
|
프로토콜은 전송 방향에서 단방향입니다. |
|
프로토콜은 사각형 방향으로 단방향입니다. |
|
공급자가 반환하는 소켓 설명자는 운영 체제 IFS(설치 가능한 파일 시스템) 핸들입니다. |
|
MSG_PARTIAL 플래그는 WSASend 및 WSASendTo에서 지원됩니다. |
|
프로토콜은 SAN에 대한 지원을 제공합니다.
이 값은 Windows 7 및 Windows Server 2008 R2에서 지원됩니다. |
dwServiceFlags2
형식:DWORD
추가 프로토콜 특성 정의를 위해 예약됩니다.
dwServiceFlags3
형식:DWORD
추가 프로토콜 특성 정의를 위해 예약됩니다.
dwServiceFlags4
형식:DWORD
추가 프로토콜 특성 정의를 위해 예약됩니다.
dwProviderFlags
형식:DWORD
Winsock 카탈로그에서 이 프로토콜을 나타내는 방법에 대한 정보를 제공하는 플래그 집합입니다. 이 멤버에 대한 가능한 값은 Winsock2.h 헤더 파일에 정의되어 있습니다.
다음 플래그 값이 가능합니다.
값 | 의미 |
---|---|
|
이는 여러 동작을 구현할 수 있는 단일 프로토콜(지정된 공급자)에 대한 두 개 이상의 항목 중 하나임을 나타냅니다. 예를 들어 수신 쪽에서 메시지 지향 프로토콜 또는 스트림 지향 프로토콜로 동작할 수 있는 SPX가 있습니다. |
|
이는 여러 동작을 구현할 수 있는 프로토콜에 권장되거나 가장 자주 사용되는 항목임을 나타냅니다. |
|
공급자가 WSAEnumProtocols에서 생성된 결과 버퍼에서 이 프로토콜을 반환해서는 안 됨을 Ws2_32.dll 나타내도록 설정합니다. 물론 Windows Sockets 2 애플리케이션에는 이 비트 집합이 있는 항목이 표시되지 않아야 합니다. |
|
소켓 또는 WSASocket의 프로토콜 매개 변수에 있는 값이 이 프로토콜 항목과 일치한다는 것을 나타냅니다. |
|
공급자가 네트워크 직접 액세스에 대한 지원을 나타내도록 설정합니다.
이 값은 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 Sockets 2 SPI가 위쪽 및 아래쪽 가장자리 모두인 계층화된 프로토콜을 나타냅니다. 체인 길이가 1인 경우 이 항목은 카탈로그 항목 식별자가 WSAPROTOCOL_INFO 구조체의 dwCatalogEntryId 멤버에 있는 기본 프로토콜을 나타냅니다. 체인의 길이가 1보다 큰 경우 이 항목은 기본 프로토콜 위에 하나 이상의 계층화된 프로토콜로 구성된 프로토콜 체인을 나타냅니다. 해당 카탈로그 항목 식별자는 맨 위에 있는 계층화된 프로토콜(ProtocolChain.ChainEntries 배열의 0개 요소)으로 시작하여 기본 프로토콜로 끝나는 ProtocolChain.ChainEntries 배열에 있습니다. 프로토콜 체인에 대한 자세한 내용은 Windows Sockets 2 서비스 공급자 인터페이스 사양을 참조하세요.
iVersion
형식: int
프로토콜 버전 식별자입니다.
iAddressFamily
형식: int
이 프로토콜에 대한 소켓을 열기 위해 소켓 또는 WSASocket 함수에 주소 패밀리 매개 변수로 전달할 값입니다. 또한 이 값은 프로토콜에서 사용하는 sockaddr 에 대한 프로토콜 주소의 구조를 고유하게 정의합니다.
Windows Vista 이상용으로 릴리스된 Windows SDK 주소 패밀리에 대한 가능한 값은 Ws2def.h 헤더 파일에 정의됩니다. Ws2def.h 헤더 파일은 Winsock2.h에 자동으로 포함되며 직접 사용하면 안 됩니다.
Windows Server 2003 이상용 플랫폼 SDK 버전에서는 주소 패밀리에 대한 가능한 값이 Winsock2.h 헤더 파일에 정의되어 있습니다.
현재 지원되는 값은 IPv4 및 IPv6의 인터넷 주소 패밀리 형식인 AF_INET 또는 AF_INET6. 주소 패밀리에 대한 Windows 소켓 서비스 공급자가 설치된 경우 주소 패밀리(예: NetBIOS에서 사용할 AF_NETBIOS)에 대한 다른 옵션이 지원됩니다. AF_ 주소 패밀리 및 PF_ 프로토콜 패밀리 상수의 값은 동일하므로(예: AF_INET 및 PF_INET) 상수를 사용할 수 있습니다.
아래 표에는 주소 패밀리에 대한 공통 값이 나열되어 있지만 다른 많은 값이 가능합니다.
iAddressFamily | 의미 |
---|---|
|
IPv4(인터넷 프로토콜 버전 4) 주소 패밀리입니다. |
|
IPX/SPX 주소 패밀리입니다. 이 주소 패밀리는 NWLink IPX/SPX NetBIOS 호환 전송 프로토콜이 설치된 경우에만 지원됩니다.
이 주소 패밀리는 Windows Vista 이상에서 지원되지 않습니다. |
|
AppleTalk 주소 패밀리입니다. 이 주소 패밀리는 AppleTalk 프로토콜이 설치된 경우에만 지원됩니다.
이 주소 패밀리는 Windows Vista 이상에서 지원되지 않습니다. |
|
NetBIOS 주소 패밀리입니다. 이 주소 패밀리는 NetBIOS용 Windows 소켓 공급자가 설치된 경우에만 지원됩니다.
NetBIOS용 Windows 소켓 공급자는 32비트 버전의 Windows에서 지원됩니다. 이 공급자는 기본적으로 32비트 버전의 Windows에 설치됩니다. NetBIOS용 Windows 소켓 공급자는 Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 또는 Windows XP를 포함한 64비트 버전의 창에서 지원되지 않습니다. NetBIOS용 Windows 소켓 공급자는 형식 매개 변수가 SOCK_DGRAM 설정된 소켓만 지원합니다. NetBIOS용 Windows 소켓 공급자는 NetBIOS 프로그래밍 인터페이스와 직접 관련이 없습니다. NetBIOS 프로그래밍 인터페이스는 Windows Vista, Windows Server 2008 이상에서 지원되지 않습니다. |
|
IPv6(인터넷 프로토콜 버전 6) 주소 패밀리입니다. |
|
IrDA(적외선 데이터 연결) 주소 패밀리.
이 주소 패밀리는 컴퓨터에 적외선 포트와 드라이버가 설치된 경우에만 지원됩니다. |
|
Bluetooth 주소 패밀리입니다.
컴퓨터에 Bluetooth 어댑터와 드라이버가 설치된 경우 이 주소 패밀리는 WINDOWS XP SP2 이상에서 지원됩니다. |
iMaxSockAddr
형식: int
최대 주소 길이(바이트)입니다.
iMinSockAddr
형식: int
최소 주소 길이(바이트)입니다.
iSocketType
형식: int
이 프로토콜에 대한 소켓을 열기 위해 소켓 형식 매개 변수로 소켓 또는 WSASocket 함수로 전달할 값입니다. 소켓 형식에 대한 가능한 값은 Winsock2.h 헤더 파일에 정의되어 있습니다.
다음 표에서는 Windows 소켓 2에 지원되는 iSocketType 멤버에 대한 가능한 값을 나열합니다.
iSocketType | 의미 |
---|---|
|
OOB 데이터 전송 메커니즘을 사용하여 시퀀스된 신뢰할 수 있는 양방향 연결 기반 바이트 스트림을 제공하는 소켓 형식입니다. 이 소켓 유형은 인터넷 주소 패밀리(AF_INET 또는 AF_INET6)에 TCP(Transmission Control Protocol)를 사용합니다. |
|
연결되지 않고 고정된(일반적으로 작은) 최대 길이의 신뢰할 수 없는 버퍼인 데이터그램을 지원하는 소켓 형식입니다. 이 소켓 유형은 인터넷 주소 패밀리(AF_INET 또는 AF_INET6)에 UDP(사용자 데이터그램 프로토콜)를 사용합니다. |
|
애플리케이션이 다음 상층 프로토콜 헤더를 조작할 수 있는 원시 소켓을 제공하는 소켓 유형입니다. IPv4 헤더를 조작하려면 소켓에서 IP_HDRINCL 소켓 옵션을 설정해야 합니다. IPv6 헤더를 조작하려면 소켓에서 IPV6_HDRINCL 소켓 옵션을 설정해야 합니다. |
|
신뢰할 수 있는 메시지 데이터그램을 제공하는 소켓 유형입니다. 이 유형의 예로 Windows에서 PGM(실용 일반 멀티캐스트) 멀티캐스트 프로토콜 구현이 있으며, 이를 신뢰할 수 있는 멀티캐스트 프로그래밍이라고도 합니다.
이 값은 신뢰할 수 있는 멀티캐스트 프로토콜이 설치된 경우에만 지원됩니다. |
|
데이터그램을 기반으로 의사 스트림 패킷을 제공하는 소켓 형식입니다. |
iProtocol
형식: int
이 프로토콜 에 대한 소켓을 열기 위해 프로토콜 매개 변수로 소켓 또는 WSASocket 함수로 전달할 값입니다. iProtocol 멤버에 대한 가능한 옵션은 지정된 주소 패밀리 및 소켓 유형에 따라 다릅니다.
Windows Vista 이상용으로 릴리스된 Windows SDK 이 멤버는 Ws2def.h 헤더 파일에 정의된 IPPROTO 열거형 형식의 값 중 하나일 수 있습니다. Ws2def.h 헤더 파일은 Winsock2.h에 자동으로 포함되며 직접 사용하면 안 됩니다.
Windows Server 2003 이하의 플랫폼 SDK 버전에서는 iProtocol 멤버에 대한 가능한 값이 Winsock2.h 및 Wsrm.h 헤더 파일에 정의됩니다.
아래 표에는 다른 많은 값이 가능하지만 iProtocol 에 대한 공통 값이 나열되어 있습니다.
iProtocolMaxOffset
형식: int
프로토콜 매개 변수의 값을 소켓 또는 WSASocket 함수에 제공할 때 iProtocol에 추가할 수 있는 최대값입니다. 모든 프로토콜이 값 범위를 허용하는 것은 아닙니다. 이 경우 iProtocolMaxOffset 은 0입니다.
iNetworkByteOrder
형식: int
현재 이러한 값은 각각 값이 0과 1인 big-endian 또는 little-endian을 나타내는 매니페스트 상수(BIGENDIAN 및 LITTLEENDIAN)입니다.
iSecurityScheme
형식: int
채택된 보안 체계의 유형입니다(있는 경우). SECURITY_PROTOCOL_NONE(0) 값은 보안 프로비저닝을 통합하지 않는 프로토콜에 사용됩니다.
dwMessageSize
형식:DWORD
프로토콜에서 지원하는 최대 메시지 크기(바이트)입니다. 호스트의 로컬 인터페이스에서 보낼 수 있는 최대 크기입니다. 메시지 프레이밍을 지원하지 않는 프로토콜의 경우 지정된 주소로 보낼 수 있는 실제 최대값이 적을 수 있습니다. 최대 인바운드 메시지 크기를 결정하는 표준 프로비저닝은 없습니다. 다음 특수 값이 정의됩니다.
값 | 의미 |
---|---|
|
프로토콜은 스트림 지향이므로 메시지 크기의 개념은 관련이 없습니다. |
|
최대 아웃바운드(송신) 메시지 크기는 기본 네트워크 MTU(최대 크기 전송 단위)에 따라 달라지므로 소켓이 바인딩될 때까지 알 수 없습니다. 애플리케이션은 소켓이 로컬 주소에 바인딩된 후 getsockopt 를 사용하여 SO_MAX_MSG_SIZE 값을 검색해야 합니다. |
|
프로토콜은 메시지 지향이지만 전송될 수 있는 메시지 크기에 대한 최대 제한은 없습니다. |
dwProviderReserved
형식:DWORD
서비스 공급자가 사용하도록 예약되어 있습니다.
szProtocol[WSAPROTOCOL_LEN + 1]
형식: TCHAR[WSAPROTOCOL_LEN+1]
프로토콜을 식별하는 사람이 읽을 수 있는 이름을 포함하는 문자 배열(예: "MSAFD Tcpip [UDP/IP]")입니다. 허용되는 최대 문자 수는 WSAPROTOCOL_LEN 255로 정의됩니다.
설명
참고
winsock2.h 헤더는 WSAPROTOCOL_INFO 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
머리글 | winsock2.h |