ADDRINFOEX6構造体 (ws2def.h)
addrinfoex4 構造体は、特定のネットワーク インターフェイスが要求されたときにホスト アドレス情報を保持するために、GetAddrInfoEx 関数によって使用されます。
構文
typedef struct addrinfoex6 {
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;
unsigned int ai_numservers;
ADDRINFO_DNS_SERVER *ai_servers;
ULONG64 ai_responseflags;
} ADDRINFOEX6, *PADDRINFOEX6;
メンバーズ
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 以降でサポートされています。 |
|
アドレス情報は、権限のない結果から取得されます。
このオプションを GetAddrInfoExの このオプションは、Windows Vista 以降の NS_EMAIL 名前空間でのみサポートされます。 |
|
アドレス情報は、セキュリティで保護されたチャネルからの情報です。
AI_SECURE ビットが設定されている場合、NS_EMAIL 名前空間プロバイダーは、セキュリティが強化された結果を返し、スプーフィングの可能性を最小限に抑えます。 このオプションを getAddrInfoEx このオプションは、Windows Vista 以降の NS_EMAIL 名前空間でのみサポートされます。 |
|
アドレス情報は、特定の名前空間を持つパブリケーションの優先名を表します。
このオプションを GetAddrInfoExの このオプションは、Windows Vista 以降の NS_EMAIL 名前空間でのみサポートされます。 |
|
完全修飾ドメイン名は、最初の ai_fqdn メンバーで返されます。
このオプションを getAddrInfoEx の このオプションは、Windows 7、Windows Server 2008 R2 以降でサポートされています。 |
|
ファイル共有のシナリオで、クエリ対象のホスト名が使用されていることを示す名前空間プロバイダーへのヒント。 名前空間プロバイダーは、このヒントを無視できます。
このオプションは、Windows 7、Windows Server 2008 R2 以降でサポートされています。 |
|
GetAddrInfoEx 関数によって呼び出される名前解決関数で Punycode を使用して、国際ドメイン名の自動エンコードを無効にします。
このオプションは、Windows 8、Windows Server 2012 以降でサポートされています。 |
|
現在のオブジェクトが拡張されていることを示します。つまり、addrinfoex2 以上です。
このオプションは、Windows 8.1、Windows Server 2012 R2 以降でサポートされています。 |
|
解決ハンドルは、ai_resolutionhandle メンバーで返されます。
このオプションは、Windows 10、Windows Server 2016 以降でサポートされています。 |
|
DNS レコードが有効な秒数。 このフラグが存在する場合、 |
|
既定では、ai_servers メンバーで指定されたサーバーは、システム DNS サーバーへのフォールバックとして使用されます。 このオプションを指定した場合、DNS クエリでは、ai_server 排他的に指定されたカスタム サーバーが使用されます。 |
|
DNS 結果に関する追加情報を要求します。 このフラグが存在する場合、GetAddrInfoExppResult パラメーターは、addrinfoex6 構造体の一覧を返します。ここで、ai_responseflags メンバーには DNS 結果の配信元に関する情報が含まれます。 |
ai_family
アドレス ファミリ。
アドレス ファミリに指定できる値は、Ws2def.h ヘッダー ファイルで定義されます。
現在サポートされている値は AF_INET または AF_INET6です。これは、IPv4 および IPv6 のインターネット アドレス ファミリ形式です。 アドレス ファミリの Windows ソケット サービス プロバイダーがインストールされている場合、アドレス ファミリのその他のオプション (NetBIOS で使用するためのAF_NETBIOS など) がサポートされます。 AF_ アドレス ファミリ定数と PF_ プロトコル ファミリ定数の値は同じ (たとえば、AF_INET と PF_INET) ので、どちらの定数も使用できます。
次の表に、アドレス ファミリの一般的な値を示しますが、他の多くの値を使用できます。
ai_socktype
ソケットの種類。 ソケットの種類に使用できる値は、Winsock2.h インクルード ファイルで定義されます。
次の表に、Windows Sockets 2 でサポートされているソケットの種類に使用できる値を示します。
価値 | 意味 |
---|---|
|
OOB データ転送メカニズムを使用して、シーケンス化された信頼性の高い双方向の接続ベースのバイト ストリームを提供します。 インターネット アドレス ファミリ (AF_INET または AF_INET6) に伝送制御プロトコル (TCP) を使用します。 ai_family メンバーが AF_IRDAされている場合は、SOCK_STREAM のみがサポートされているソケットの種類です。 |
|
固定 (通常は小さい) 最大長のコネクションレスで信頼性の低いバッファーであるデータグラムをサポートします。 インターネット アドレス ファミリ (AF_INET または AF_INET6) にユーザー データグラム プロトコル (UDP) を使用します。 |
|
アプリケーションが次の上位層プロトコル ヘッダーを操作できるようにする生のソケットを提供します。 IPv4 ヘッダーを操作するには、ソケットに IP_HDRINCL ソケット オプションを設定する必要があります。 IPv6 ヘッダーを操作するには、ソケットに IPV6_HDRINCL ソケット オプションを設定する必要があります。 |
|
信頼性の高いメッセージ データグラムを提供します。 この型の例として、Windows でのプラグマティック一般マルチキャスト (UWP) マルチキャスト プロトコルの実装が挙 、信頼性の高いマルチキャスト プログラミングと呼ばれます。 |
|
データグラムに基づいて擬似ストリーム パケットを提供します。 |
Windows ソケット 2 では、新しいソケットの種類が導入されました。 アプリケーションは、WSAEnumProtocols 関数を使用して、使用可能な各トランスポート プロトコルの属性を動的に検出できます。 そのため、アプリケーションはアドレス ファミリに使用できるソケットの種類とプロトコルのオプションを決定し、このパラメーターを指定するときにこの情報を使用できます。
Windows ソケット 1.1 では、使用可能なソケットの種類は SOCK_DATAGRAM と SOCK_STREAMのみです。
ai_protocol
プロトコルの種類。 指定できるオプションは、指定されたアドレス ファミリとソケットの種類に固有です。 ai_protocol に使用できる値は、Winsock2.h および Wsrm.h ヘッダー ファイルで定義されています。
Windows Vista 以降用にリリースされた Windows SDK では、ヘッダー ファイルの編成が変更され、このメンバーは、Ws2def.h ヘッダー ファイルで定義されている IPPROTO 列挙型の値のいずれかになります。
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_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 レコードが有効な秒数。
ai_numservers
ai_servers メンバーに存在するカスタム DNS サーバーの数。
ai_servers
オブジェクトを ADDRINFO_DNS_SERVER N (ここで N == ai_numservers) の配列。
ai_responseflags
次のいずれかの値を含むビットマップを返します。
定数 | 価値 | 意味 |
---|---|---|
AI_DNS_RESPONSE_SECURE | 0x1 | 応答は、DNS over-HTTPSなどのセキュリティで保護されたプロトコルから来ました。 |
AI_DNS_RESPONSE_HOSTFILE | 0x2 | 応答は、hosts ファイルから返されます。 |
備考
ADDRINFOEX6 構造体は、ADDRINFOEX5 構造体の拡張です。 ADDRINFOEX5 構造のすべてのフィールドに加えて、ai_numservers メンバーと ai_servers メンバーが保持されるため、カスタムクエリごとの DNS サーバーを使用できます。 また、DNS 応答の配信元に関する情報を含む ai_responseflags メンバーも保持します。
ai_flags メンバーに AI_RETURN_RESPONSE_FLAGS フラグが存在する場合、GetAddrInfoExppResult パラメーターは、ADDRINFOEX6 構造体の一覧を返します。ここで、ai_responseflags メンバーには DNS 結果の配信元に関する情報が含まれます。
ai_numservers メンバーと ai_servers メンバーが有効な ADDRINFO_DNS_SERVER オブジェクトの配列を指している場合、DNS クエリはこれらのサーバーをシステム構成の DNS サーバーへのフォールバックとして追加します。 AI_EXCLUSIVE_CUSTOM_SERVERS オプションが ai_flags メンバーに存在する場合、DNS クエリではカスタム サーバーのみが使用されます。
例
ADDRINFOEX4 構造のトピックのコード例を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows ビルド 22000 |
サポートされる最小サーバー | Windows ビルド 22000 |
ヘッダー | ws2def.h |
関連項目
GetAddrInfoEx を
addrinfo を
addrinfoW を
addrinfoex を
addrinfoex3 を