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_canonname 멤버에 반환됩니다. |
|
GetAddrInfoEx 함수에 전달된 nodename 매개 변수는 숫자 문자열이어야 합니다. |
|
이 비트가 설정되면 AI_V4MAPPED있는 IPv6 주소 및 IPv4 주소에 대한 요청이 수행됩니다.
이 옵션은 Windows Vista 이상에서 지원됩니다. |
|
GetAddrInfoEx 전역 주소가 구성된 경우에만 확인됩니다. IPv6 및 IPv4 루프백 주소는 유효한 전역 주소로 간주되지 않습니다.
이 옵션은 Windows Vista 이상에서 지원됩니다. |
|
IPv6 주소에 대한 GetAddrInfoEx 요청이 실패하면 IPv4 주소에 대한 이름 서비스 요청이 이루어지고 이러한 주소는 IPv4 매핑된 IPv6 주소 형식으로 변환됩니다.
이 옵션은 Windows Vista 이상에서 지원됩니다. |
|
주소 정보는 신뢰할 수 없는 결과에서 가져옵니다.
이 옵션이 GetAddrInfoExpHints 매개 변수에 설정되면 NS_EMAIL 네임스페이스 공급자는 신뢰할 수 있는 결과와 신뢰할 수 없는 결과를 모두 반환합니다. 이 옵션을 설정하지 않으면 신뢰할 수 있는 결과만 반환됩니다. 이 옵션은 Windows Vista 이상에서는 NS_EMAIL 네임스페이스에서만 지원됩니다. |
|
주소 정보는 보안 채널에서 가져옵니다.
AI_SECURE 비트가 설정된 경우 NS_EMAIL 네임스페이스 공급자는 가능한 스푸핑을 최소화하기 위해 향상된 보안으로 얻은 결과를 반환합니다. 이 옵션이 GetAddrInfoExpHints 매개 변수에 설정된 경우 NS_EMAIL 네임스페이스 공급자는 가능한 스푸핑을 최소화하기 위해 향상된 보안으로 얻은 결과만 반환합니다. 이 옵션은 Windows Vista 이상에서는 NS_EMAIL 네임스페이스에서만 지원됩니다. |
|
주소 정보는 특정 네임스페이스가 있는 게시의 기본 설정 이름에 대한 것입니다.
이 옵션이 GetAddrInfoExpHints 매개 변수에서 설정되면 pName 매개 변수에 이름을 입력하지 않아야 하며 NS_EMAIL 네임스페이스 공급자는 게시에 대한 기본 이름을 반환합니다. 이 옵션은 Windows Vista 이상에서는 NS_EMAIL 네임스페이스에서만 지원됩니다. |
|
정규화된 도메인 이름은 첫 번째 ai_fqdn 멤버에 반환됩니다.
이 옵션이 GetAddrInfoExpHints 매개 변수에 설정되고 pName 매개 변수에 플랫 이름(단일 레이블)이 지정되면 이름이 최종적으로 확인되는 정규화된 도메인 이름이 반환됩니다. 이 옵션은 Windows 7, Windows Server 2008 R2 이상에서 지원됩니다. |
|
쿼리 중인 호스트 이름이 파일 공유 시나리오에서 사용되고 있다는 네임스페이스 공급자에 대한 힌트입니다. 네임스페이스 공급자는 이 힌트를 무시할 수 있습니다.
이 옵션은 Windows 7, Windows Server 2008 R2 이상에서 지원됩니다. |
|
GetAddrInfoEx 함수에서 호출하는 이름 확인 함수에서 Punycode를 사용하여 자동 International Domain Name 인코딩을 사용하지 않도록 설정합니다.
이 옵션은 Windows 8, Windows Server 2012 이상에서 지원됩니다. |
|
현재 개체가 확장되었음을 나타냅니다. 즉, addrinfoex2 이상입니다.
이 옵션은 Windows 8.1, Windows Server 2012 R2 이상에서 지원됩니다. |
|
ai_resolutionhandle 멤버에 확인 핸들이 반환됩니다.
이 옵션은 Windows 10, Windows Server 2016 이상에서 지원됩니다. |
|
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_INET 및 PF_INET) 상수 중 하나를 사용할 수 있습니다.
아래 표에는 주소 패밀리에 대한 공통 값이 나와 있지만 다른 많은 값이 가능합니다.
ai_socktype
소켓 유형입니다. 소켓 형식에 대한 가능한 값은 Winsock2.h 포함 파일에 정의됩니다.
다음 표에서는 Windows 소켓 2에 지원되는 소켓 유형에 대한 가능한 값을 나열합니다.
값 | 의미 |
---|---|
|
OOB 데이터 전송 메커니즘을 사용하여 시퀀스, 신뢰할 수 있는 양방향 연결 기반 바이트 스트림을 제공합니다. 인터넷 주소 패밀리(AF_INET 또는 AF_INET6)에 TCP(Transmission Control Protocol)를 사용합니다. ai_family 멤버가 AF_IRDA경우 SOCK_STREAM 유일하게 지원되는 소켓 유형입니다. |
|
고정된(일반적으로 작은) 최대 길이의 연결되지 않고 신뢰할 수 없는 버퍼인 데이터그램을 지원합니다. 인터넷 주소 패밀리(AF_INET 또는 AF_INET6)에 UDP(사용자 데이터그램 프로토콜)를 사용합니다. |
|
애플리케이션이 다음 상위 계층 프로토콜 헤더를 조작할 수 있도록 하는 원시 소켓을 제공합니다. IPv4 헤더를 조작하려면 소켓에서 IP_HDRINCL 소켓 옵션을 설정해야 합니다. IPv6 헤더를 조작하려면 소켓에서 IPV6_HDRINCL 소켓 옵션을 설정해야 합니다. |
|
신뢰할 수 있는 메시지 데이터그램을 제공합니다. 이 유형의 예로 Windows의 PGM(실용적 일반 멀티캐스트) 멀티캐스트 프로토콜 구현이 있으며, 신뢰할 수 있는 멀티캐스트 프로그래밍 |
|
데이터그램을 기반으로 의사 스트림 패킷을 제공합니다. |
Windows 소켓 2에서는 새 소켓 유형이 도입되었습니다. 애플리케이션은 WSAEnumProtocols 함수를 통해 사용 가능한 각 전송 프로토콜의 특성을 동적으로 검색할 수 있습니다. 따라서 애플리케이션은 주소 패밀리에 대해 가능한 소켓 유형 및 프로토콜 옵션을 결정하고 이 매개 변수를 지정할 때 이 정보를 사용할 수 있습니다. Winsock2.h 및 Ws2def.h 헤더 파일의 소켓 형식 정의는 새 소켓 형식, 주소 패밀리 및 프로토콜이 정의될 때 주기적으로 업데이트됩니다.
Windows 소켓 1.1에서 가능한 소켓 유형은 SOCK_DATAGRAMSOCK_STREAM.
ai_protocol
프로토콜 형식입니다. 가능한 옵션은 지정된 주소 패밀리 및 소켓 유형에 따라 다릅니다. ai_protocol 가능한 값은 Winsock2.h 및 Wsrm.h 헤더 파일에 정의됩니다.
Windows Vista 이상용으로 릴리스된 Windows SDK에서 헤더 파일의 구성이 변경되었으며 이 멤버는 Ws2def.h 헤더 파일에 정의된 IPPROTO 열거형 형식의 값 중 하나일 수 있습니다. Ws2def.h 헤더 파일은 Winsock2.h자동으로 포함되며 직접 사용하면 안 됩니다.
ai_protocol값이 0으로 지정된 경우 호출자는 프로토콜을 지정하지 않으며 서비스 공급자는 사용할 ai_protocol 선택합니다. IPv4 및 IPv6 이외의 프로토콜의 경우 ai_protocol 0으로 설정합니다.
다음 표에서는 다른 많은 값이 가능하지만 ai_protocol 멤버의 공통 값을 나열합니다.
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
연결된 목록의 다음 구조체에 대한 포인터입니다. 이 매개 변수는 연결된 목록의 마지막
ai_version
이 구조체의 버전 번호입니다. 현재 이 구조체 버전에 사용되는 값은 4입니다.
ai_fqdn
호스트의 정규화된 도메인 이름입니다.
ai_interfaceindex
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
addrinfoW
addrinfoex