다음을 통해 공유


ADDRINFOEX5 구조체(ws2def.h)

addrinfoex4 구조는 특정 네트워크 인터페이스가 요청되었을 때 GetAddrInfoEx 함수에서 호스트 주소 정보를 보유하는 데 사용됩니다.

통사론

typedef struct addrinfoex5 {
  int                ai_flags;
  int                ai_family;
  int                ai_socktype;
  int                ai_protocol;
  size_t             ai_addrlen;
  PWSTR              ai_canonname;
  struct sockaddr    *ai_addr;
  void               *ai_blob;
  size_t             ai_bloblen;
  GUID               *ai_provider;
  struct addrinfoex5 *ai_next;
  int                ai_version;
  PWSTR              ai_fqdn;
  int                ai_interfaceindex;
  HANDLE             ai_resolutionhandle;
  unsigned int       ai_ttl;
} ADDRINFOEX5, *PADDRINFOEX5, *LPADDRINFOEX5;

회원

ai_flags

GetAddrInfoEx 함수에 사용되는 옵션을 나타내는 플래그입니다.

ai_flags 멤버에 대해 지원되는 값은 Winsock2.h 포함 파일에 정의되며 다음 옵션의 조합일 수 있습니다.

의미
AI_PASSIVE
0x01
소켓 주소는 바인딩함수에 대한 호출에 사용됩니다.
AI_CANONNAME
0x02
정식 이름은 첫 번째 ai_canonname 멤버에 반환됩니다.
AI_NUMERICHOST
0x04
GetAddrInfoEx 함수에 전달된 nodename 매개 변수는 숫자 문자열이어야 합니다.
AI_ALL
0x0100
이 비트가 설정되면 AI_V4MAPPED있는 IPv6 주소 및 IPv4 주소에 대한 요청이 수행됩니다.

이 옵션은 Windows Vista 이상에서 지원됩니다.

AI_ADDRCONFIG
0x0400
GetAddrInfoEx 전역 주소가 구성된 경우에만 확인됩니다. IPv6 및 IPv4 루프백 주소는 유효한 전역 주소로 간주되지 않습니다.

이 옵션은 Windows Vista 이상에서 지원됩니다.

AI_V4MAPPED
0x0800
IPv6 주소에 대한 GetAddrInfoEx 요청이 실패하면 IPv4 주소에 대한 이름 서비스 요청이 이루어지고 이러한 주소는 IPv4 매핑된 IPv6 주소 형식으로 변환됩니다.

이 옵션은 Windows Vista 이상에서 지원됩니다.

AI_NON_AUTHORITATIVE
0x04000
주소 정보는 신뢰할 수 없는 결과에서 가져옵니다.

이 옵션이 GetAddrInfoExpHints 매개 변수에 설정되면 NS_EMAIL 네임스페이스 공급자는 신뢰할 수 있는 결과와 신뢰할 수 없는 결과를 모두 반환합니다. 이 옵션을 설정하지 않으면 신뢰할 수 있는 결과만 반환됩니다.

이 옵션은 Windows Vista 이상에서는 NS_EMAIL 네임스페이스에서만 지원됩니다.

AI_SECURE
0x08000
주소 정보는 보안 채널에서 가져옵니다.

AI_SECURE 비트가 설정된 경우 NS_EMAIL 네임스페이스 공급자는 가능한 스푸핑을 최소화하기 위해 향상된 보안으로 얻은 결과를 반환합니다.

이 옵션이 GetAddrInfoExpHints 매개 변수에 설정된 경우 NS_EMAIL 네임스페이스 공급자는 가능한 스푸핑을 최소화하기 위해 향상된 보안으로 얻은 결과만 반환합니다.

이 옵션은 Windows Vista 이상에서는 NS_EMAIL 네임스페이스에서만 지원됩니다.

AI_RETURN_PREFERRED_NAMES
0x010000
주소 정보는 특정 네임스페이스가 있는 게시의 기본 설정 이름에 대한 것입니다.

이 옵션이 GetAddrInfoExpHints 매개 변수에서 설정되면 pName 매개 변수에 이름을 입력하지 않아야 하며 NS_EMAIL 네임스페이스 공급자는 게시에 대한 기본 이름을 반환합니다.

이 옵션은 Windows Vista 이상에서는 NS_EMAIL 네임스페이스에서만 지원됩니다.

AI_FQDN
0x00020000
정규화된 도메인 이름은 첫 번째 ai_fqdn 멤버에 반환됩니다.

이 옵션이 GetAddrInfoExpHints 매개 변수에 설정되고 pName 매개 변수에 플랫 이름(단일 레이블)이 지정되면 이름이 최종적으로 확인되는 정규화된 도메인 이름이 반환됩니다.

이 옵션은 Windows 7, Windows Server 2008 R2 이상에서 지원됩니다.

AI_FILESERVER
0x00040000
쿼리 중인 호스트 이름이 파일 공유 시나리오에서 사용되고 있다는 네임스페이스 공급자에 대한 힌트입니다. 네임스페이스 공급자는 이 힌트를 무시할 수 있습니다.

이 옵션은 Windows 7, Windows Server 2008 R2 이상에서 지원됩니다.

AI_DISABLE_IDN_ENCODING
0x00080000
GetAddrInfoEx 함수에서 호출하는 이름 확인 함수에서 Punycode를 사용하여 자동 International Domain Name 인코딩을 사용하지 않도록 설정합니다.

이 옵션은 Windows 8, Windows Server 2012 이상에서 지원됩니다.

AI_EXTENDED
0x80000000
현재 개체가 확장되었음을 나타냅니다. 즉, addrinfoex2 이상입니다.

이 옵션은 Windows 8.1, Windows Server 2012 R2 이상에서 지원됩니다.

AI_RESOLUTION_HANDLE
0x40000000
ai_resolutionhandle 멤버에 확인 핸들이 반환됩니다.

이 옵션은 Windows 10, Windows Server 2016 이상에서 지원됩니다.

AI_RETURN_TTL
0x0080
DNS 레코드가 유효한 시간(초)입니다. 이 플래그가 있으면 GetAddrInfoEx가.ppResult 매개 변수는 ai_ttl 멤버가 DNS 레코드의 개별 TTL을 포함하는 addrinfoex5 구조 목록을 반환합니다.

ai_family

주소 패밀리입니다.

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

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

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

의미
AF_UNSPEC
0
주소 패밀리가 지정되지 않았습니다.
AF_INET
2
IPv4(인터넷 프로토콜 버전 4) 주소 패밀리입니다.
AF_NETBIOS
17
NetBIOS 주소 패밀리입니다. 이 주소 패밀리는 NetBIOS용 Windows 소켓 공급자가 설치된 경우에만 지원됩니다.
AF_INET6
23
IPv6(인터넷 프로토콜 버전 6) 주소 패밀리입니다.
AF_IRDA
26
IrDA(적외선 데이터 연결) 주소 패밀리입니다. 이 주소 패밀리는 컴퓨터에 적외선 포트와 드라이버가 설치된 경우에만 지원됩니다.
AF_BTH
32
Bluetooth 주소 패밀리입니다. 이 주소 패밀리는 Bluetooth 어댑터가 설치된 경우에만 지원됩니다.

ai_socktype

소켓 유형입니다. 소켓 형식에 대한 가능한 값은 Winsock2.h 포함 파일에 정의됩니다.

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

의미
SOCK_STREAM
1
OOB 데이터 전송 메커니즘을 사용하여 시퀀스, 신뢰할 수 있는 양방향 연결 기반 바이트 스트림을 제공합니다. 인터넷 주소 패밀리(AF_INET 또는 AF_INET6)에 TCP(Transmission Control Protocol)를 사용합니다. ai_family 멤버가 AF_IRDA경우 SOCK_STREAM 유일하게 지원되는 소켓 유형입니다.
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
데이터그램을 기반으로 의사 스트림 패킷을 제공합니다.
 

Windows 소켓 2에서는 새 소켓 유형이 도입되었습니다. 애플리케이션은 WSAEnumProtocols 함수를 통해 사용 가능한 각 전송 프로토콜의 특성을 동적으로 검색할 수 있습니다. 따라서 애플리케이션은 주소 패밀리에 대해 가능한 소켓 유형 및 프로토콜 옵션을 결정하고 이 매개 변수를 지정할 때 이 정보를 사용할 수 있습니다. Winsock2.hWs2def.h 헤더 파일의 소켓 형식 정의는 새 소켓 형식, 주소 패밀리 및 프로토콜이 정의될 때 주기적으로 업데이트됩니다.

Windows 소켓 1.1에서 가능한 소켓 유형은 SOCK_DATAGRAMSOCK_STREAM.

ai_protocol

프로토콜 형식입니다. 가능한 옵션은 지정된 주소 패밀리 및 소켓 유형에 따라 다릅니다. ai_protocol 가능한 값은 Winsock2.hWsrm.h 헤더 파일에 정의됩니다.

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

ai_protocol값이 0으로 지정된 경우 호출자는 프로토콜을 지정하지 않으며 서비스 공급자는 사용할 ai_protocol 선택합니다. IPv4 및 IPv6 이외의 프로토콜의 경우 ai_protocol 0으로 설정합니다.

다음 표에서는 다른 많은 값이 가능하지만 ai_protocol 멤버의 공통 값을 나열합니다.

의미
IPPROTO_TCP
6
TCP(Transmission Control Protocol)입니다. ai_family 멤버가 AF_INET 또는 AF_INET6ai_socktype 멤버가 SOCK_STREAM경우 가능한 값입니다.
IPPROTO_UDP
17
UDP(사용자 데이터그램 프로토콜)입니다. ai_family 멤버가 AF_INET 또는 AF_INET6형식 매개 변수가 SOCK_DGRAM경우 가능한 값입니다.
IPPROTO_RM
113
신뢰할 수 있는 멀티캐스트에 대한 PGM 프로토콜입니다. ai_family 멤버가 AF_INETai_socktype 멤버가 SOCK_RDM경우 가능한 값입니다. Windows Vista 이상용으로 릴리스된 Windows SDK에서 이 값을 IPPROTO_PGM라고도 합니다.
 

ai_family 멤버가 AF_IRDA경우 ai_protocol 0이어야 합니다.

ai_addrlen

ai_addr 멤버가 가리키는 버퍼의 길이(바이트)입니다.

ai_canonname

호스트의 정식 이름입니다.

ai_addr

sockaddr 구조체에 대한 포인터입니다. 반환된 각 addrinfoex4 구조체의 ai_addr 멤버는 채워진 소켓 주소 구조를 가리킵니다. 반환된 각 addrinfoex4 구조체의 길이(바이트)는 ai_addrlen 멤버에 지정됩니다.

ai_blob

주소 목록 이외의 이름과 연결된 공급자별 네임스페이스 정보를 반환하는 데 사용되는 데이터에 대한 포인터입니다. ai_blob 가리키는 버퍼의 길이(바이트)를 ai_bloblen 멤버에 지정해야 합니다.

ai_bloblen

ai_blob 멤버의 길이(바이트)입니다.

ai_provider

특정 네임스페이스 공급자의 GUID에 대한 포인터입니다.

ai_next

연결된 목록의 다음 구조체에 대한 포인터입니다. 이 매개 변수는 연결된 목록의 마지막 addrinfoex4 구조에서 NULL 설정됩니다.

ai_version

이 구조체의 버전 번호입니다. 현재 이 구조체 버전에 사용되는 값은 4입니다.

ai_fqdn

호스트의 정규화된 도메인 이름입니다.

ai_interfaceindex

IP_ADAPTER_ADDRESSES정의된 인터페이스 인덱스입니다. GetAdaptersAddresses반환된 IfIndex 속성을.

ai_resolutionhandle

호스트의 정규화된 도메인 이름을 가리키는 핸들입니다.

ai_ttl

이 DNS 레코드가 유효한 시간(초)입니다.

발언

ADDRINFOEX5 구조는 GetAddrInfoExW 함수에서 AI_EXTENDED 또는 AI_RETURN_TTL 비트가 GetAddrInfoExW힌트 매개 변수를 통해 전달된 ai_flags 멤버에 설정된 경우 호스트 주소 정보를 보유하는 데 사용됩니다.

ADDRINFOEX5 구조체는 ADDRINFOEX4 구조체의 확장입니다. ADDRINFOEX4 구조의 모든 필드 외에도 반환된 각 IP 주소에 대한 개별 DNS TTL을 ai_ttl 멤버에 보관합니다.

AI_RETURN_TTL 비트가 GetAddrInfoEx힌트 매개 변수를 통해 전달된 ai_flags 멤버에 설정된 경우 GetAddrInfoExWppResult 매개 변수는 ADDRINFOEX5 구조 목록을 반환합니다. 이 목록의 각 노드는 ai_ttl 멤버에 sockaddr 멤버에 있는 IP 주소에 대한 개별 DNS TTL을 포함합니다.

예제

ADDRINFOEX4 구조 항목의 예제 코드를 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows 10 빌드 20348
지원되는 최소 서버 Windows 10 빌드 20348
헤더 ws2def.h

참고 항목

GetAddrInfoEx

addrinfo

addrinfoW

addrinfoex

addrinfoex3