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 헤더 파일에 정의됩니다.
다음 값이 가능합니다.
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 소켓 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_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비트 버전의 Windows에서 지원되지 않습니다. 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 이하 버전의 Platform 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 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 WSAPROTOCOL_INFO 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱만 해당] |
헤더 | winsock2.h |
참고 항목
WSAEnumProtocols
WSAPROTOCOLCHAIN
WSASend
WSASocket
WSCInstallProvider
WSCUpdateProvider