次の方法で共有


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
アドレス情報は、権限のない結果から取得されます。

このオプションを GetAddrInfoExの pHints パラメーター 設定すると、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
アドレス情報は、特定の名前空間を持つパブリケーションの優先名を表します。

このオプションを GetAddrInfoExの pHints パラメーター に設定すると、pName パラメーターに名前を指定する必要はなく、NS_EMAIL 名前空間プロバイダーはパブリケーションの優先名を返します。

このオプションは、Windows Vista 以降の NS_EMAIL 名前空間でのみサポートされます。

AI_FQDN
0x00020000
完全修飾ドメイン名は、最初の ai_fqdn メンバーで返されます。

このオプションを getAddrInfoEx の pHints パラメーターに設定し、pName パラメーターにフラット名 (単一ラベル) を指定すると、最終的に名前が解決された完全修飾ドメイン名が返されます。

このオプションは、Windows 7、Windows Server 2008 R2 以降でサポートされています。

AI_FILESERVER
0x00040000
ファイル共有のシナリオで、クエリ対象のホスト名が使用されていることを示す名前空間プロバイダーへのヒント。 名前空間プロバイダーは、このヒントを無視できます。

このオプションは、Windows 7、Windows Server 2008 R2 以降でサポートされています。

AI_DISABLE_IDN_ENCODING
0x00080000
GetAddrInfoEx 関数によって呼び出される名前解決関数で Punycode を使用して、国際ドメイン名の自動エンコードを無効にします。

このオプションは、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 パラメーターaddrinfoex5 構造体の一覧が返されます。ここで、ai_ttl メンバーには DNS レコードの個々の TTL が含まれます。

ai_family

アドレス ファミリ。

アドレス ファミリに指定できる値は、Ws2def.h ヘッダー ファイルで定義されます。 Ws2def.h ヘッダー ファイルは winsock2.h自動的に含まれるので、直接使用しないでください。

現在サポートされている値は AF_INET または AF_INET6です。これは、IPv4 および IPv6 のインターネット アドレス ファミリ形式です。 アドレス ファミリの Windows ソケット サービス プロバイダーがインストールされている場合、アドレス ファミリのその他のオプション (NetBIOS で使用するためのAF_NETBIOS など) がサポートされます。 AF_ アドレス ファミリ定数と PF_ プロトコル ファミリ定数の値は同じ (たとえば、AF_INETPF_INET) ので、どちらの定数も使用できます。

次の表に、アドレス ファミリの一般的な値を示しますが、他の多くの値を使用できます。

価値 意味
AF_UNSPEC
0
アドレス ファミリは指定されていません。
AF_INET
2
インターネット プロトコル バージョン 4 (IPv4) アドレス ファミリ。
AF_NETBIOS
17
NetBIOS アドレス ファミリ。 このアドレス ファミリは、NetBIOS 用 Windows ソケット プロバイダーがインストールされている場合にのみサポートされます。
AF_INET6
23
インターネット プロトコル バージョン 6 (IPv6) アドレス ファミリ。
AF_IRDA
26
赤外線データ アソシエーション (IrDA) アドレス ファミリ。 このアドレス ファミリは、コンピューターに赤外線ポートとドライバーがインストールされている場合にのみサポートされます。
AF_BTH
32
Bluetooth アドレス ファミリ。 このアドレス ファミリは、Bluetooth アダプターがインストールされている場合にのみサポートされます。

ai_socktype

ソケットの種類。 ソケットの種類に使用できる値は、Winsock2.h インクルード ファイルで定義されます。

次の表に、Windows Sockets 2 でサポートされているソケットの種類に使用できる値を示します。

価値 意味
SOCK_STREAM
1
OOB データ転送メカニズムを使用して、シーケンス化された信頼性の高い双方向の接続ベースのバイト ストリームを提供します。 インターネット アドレス ファミリ (AF_INET または AF_INET6) に伝送制御プロトコル (TCP) を使用します。 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 でのプラグマティック一般マルチキャスト (UWP) マルチキャスト プロトコルの実装が挙 、信頼性の高いマルチキャスト プログラミングと呼ばれます。
SOCK_SEQPACKET
5
データグラムに基づいて擬似ストリーム パケットを提供します。
 

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 メンバーの一般的な値を示しますが、他の多くの値を使用できます。

価値 意味
IPPROTO_TCP
6
伝送制御プロトコル (TCP)。 これは、ai_family メンバーが AF_INET または AF_INET6 で、ai_socktype メンバーが SOCK_STREAM場合に使用できる値です。
IPPROTO_UDP
17
ユーザー データグラム プロトコル (UDP)。 これは、ai_family メンバーが AF_INET または AF_INET6 で、 パラメーターが SOCK_DGRAM場合に使用できる値です。
IPPROTO_RM
113
信頼性の高いマルチキャスト用の PGM プロトコル。 これは、ai_family メンバーが AF_INET され、ai_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 構造体のすべてのフィールドに加えて、ai_ttl メンバーには、返された各 IP アドレスの個々の DNS TTL も保持されます。

GetAddrInfoExヒント パラメーターを介して渡された ai_flags メンバーで AI_RETURN_TTL ビットが設定されている場合、GetAddrInfoExWppResult パラメーターは、ADDRINFOEX5 構造体の一覧を返します。 この一覧の各ノードは、ai_ttl メンバーに、sockaddr メンバーに存在する IP アドレスの個々の DNS TTL を含みます。

ADDRINFOEX4 構造のトピックのコード例を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 ビルド 20348
サポートされる最小サーバー Windows 10 ビルド 20348
ヘッダー ws2def.h

関連項目

GetAddrInfoEx を する

addrinfo を する

addrinfoW を する

addrinfoex を する

addrinfoex3 を する