ADDRINFOEX2W 構造体 (ws2def.h)

addrinfoex2 構造体は、正規名と完全修飾ドメイン名の両方が要求されたときにホスト アドレス情報を保持するために GetAddrInfoEx 関数によって使用されます。

構文

typedef struct addrinfoex2W {
  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;
  LPGUID              ai_provider;
  struct addrinfoex2W *ai_next;
  int                 ai_version;
  PWSTR               ai_fqdn;
} ADDRINFOEX2W, *PADDRINFOEX2W, *LPADDRINFOEX2W;

メンバー

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 を使用して、国際ドメイン名の自動エンコードを無効にします。

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

ai_family

アドレス ファミリ。

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

現在サポートされている値は 、IPv4 と IPv6 のインターネット アドレス ファミリ形式である AF_INETまたはAF_INET6です。 アドレス ファミリの 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 ソケット 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 でのプラグマティック一般マルチキャスト (PGM) マルチキャスト プロトコルの実装があります。これは、 信頼性の高いマルチキャスト プログラミングと呼ばれることがよくあります。
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 では、ヘッダー ファイルのorganizationが変更され、このメンバーには、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 構造体へのポインター。 返される各 addrinfoex2 構造体のai_addr メンバーは、入力されたソケット アドレス構造体を指します。 返される各 addrinfoex2 構造体の長さ (バイト単位) は 、ai_addrlen メンバーで指定されます。

ai_blob

アドレスの一覧を超える名前に関連付けられているプロバイダー固有の名前空間情報を返すために使用されるデータへのポインター。 ai_blobが指すバッファーの長さ (バイト単位) は、ai_bloblen メンバーで指定する必要があります。

ai_bloblen

ai_blob メンバーの長さ (バイト単位)。

ai_provider

特定の名前空間プロバイダーの GUID へのポインター。

ai_next

リンク リスト内の次の構造体へのポインター。 このパラメーターは、リンク リストの最後の addrinfoex2 構造体で NULL に設定されます。

ai_version

この構造体のバージョン番号。 このバージョンの構造体に現在使用されている値は 2 です。

ai_fqdn

ホストの完全修飾ドメイン名。

解説

addrinfoex2 構造体は、Windows 8 および Windows Server 2012 でサポートされています

addrinfoex2 構造体は、getAddrInfoEx 関数によって使用され、hintsパラメーターでGetAddrInfoEx 関数に指定されたオプションの addrinfoex 構造体のai_flags メンバーにAI_FQDNビットとAI_CANONNAME ビットの両方が設定されている場合に、ホスト アドレス情報を保持します。 addrinfoex2 構造体は、ホストの正規名と完全修飾ドメイン名の両方を返すことができる addrinfoex 構造体の拡張バージョンです。 追加の構造体メンバーは、構造体のバージョン番号とホストの完全修飾ドメイン名用です。

GetAddrInfoEx 関数で使用される addrinfoex2 構造体は、getaddrinfo 関数と GetAddrInfoW 関数で使用される addrinfo および addrinfoW 構造体の拡張バージョンです。 GetAddrInfoEx 関数を使用すると、名前空間プロバイダーを指定してクエリを解決できます。 IPv6 および IPv4 プロトコルで使用する場合、名前解決には、ドメイン ネーム システム (DNS)、ローカル ホスト ファイル、電子メール プロバイダー ( NS_EMAIL 名前空間)、またはその他の名前付けメカニズムを使用できます。

ai_blob メンバー内の BLOB データは、名前に関連付けられている追加のプロバイダー固有の名前空間情報を返すために使用されます。 ai_blob メンバー内のデータの形式は、特定の名前空間プロバイダーに固有です。 現時点では、BLOB データは 、NS_EMAIL 名前空間プロバイダーによって追加情報を提供するために使用されます。

UNICODE または_UNICODEが定義されている場合、 addrinfoex2 は、この構造体の Unicode バージョンである addrinfoex2W に定義されます。 文字列パラメーターは PWSTR データ型に定義され、 addrinfoex2W 構造体が使用されます。

UNICODE または_UNICODEが定義されていない場合、 addrinfoex2 は、この構造体の ANSI バージョンである addrinfoex2A に対して定義されます。 文字列パラメーターは char * データ型で、 addrinfoex2A 構造体が使用されます。

GetAddrInfoEx を正常に呼び出すと、GetAddrInfoEx 関数に渡される ppResult パラメーターに addrinfoex2 構造体のリンクされたリストが返されます。 リストは、NULL ポインターが検出されるまで、返された各 addrinfoex2 構造体のai_next メンバーに指定されたポインターに従って処理できます。 返される各 addrinfoex2 構造体では、 ai_familyai_socktypeおよび ai_protocol メンバーはソケット または WSASocket 関数呼び出しのそれぞれの引数に対応します。 また、返される各 addrinfoex2 構造体のai_addr メンバーは、入力されたソケット アドレス構造体を指し、その長さは ai_addrlen メンバーで指定されます。

要件

   
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
Header ws2def.h

関連項目

GetAddrInfoEx

addrinfo

addrinfoW

addrinfoex