ADDRINFOEX3構造体 (ws2def.h)
addrinfoex3 構造体は、特定のネットワーク インターフェイスが要求されたときにホスト アドレス情報を保持するために GetAddrInfoEx 関数によって使用されます。
構文
typedef struct addrinfoex3 {
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 addrinfoex3 *ai_next;
int ai_version;
PWSTR ai_fqdn;
int ai_interfaceindex;
} ADDRINFOEX3, *PADDRINFOEX3, *LPADDRINFOEX3;
メンバー
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 の pHints パラメーターでこのオプションを設定すると、NS_EMAIL名前空間プロバイダーは権限のある結果と権限のない結果の両方を返します。 このオプションが設定されていない場合は、権限のある結果のみが返されます。 このオプションは、Windows Vista 以降の NS_EMAIL 名前空間でのみサポートされます。 |
|
アドレス情報は、セキュリティで保護されたチャネルからの情報です。
AI_SECURE ビットが設定されている場合、NS_EMAIL名前空間プロバイダーは、スプーフィングの可能性を最小限に抑えるために、強化されたセキュリティで取得された結果を返します。 GetAddrInfoEx の pHints パラメーターでこのオプションを設定すると、NS_EMAIL名前空間プロバイダーは、スプーフィングの可能性を最小限に抑えるために、強化されたセキュリティで取得された結果のみを返します。 このオプションは、Windows Vista 以降の NS_EMAIL 名前空間でのみサポートされます。 |
|
アドレス情報は、特定の名前空間を持つパブリケーションに推奨される名前用です。
GetAddrInfoEx の pHints パラメーターでこのオプションを設定すると、pName パラメーターに名前を指定する必要はなく、NS_EMAIL名前空間プロバイダーはパブリケーションの優先名を返します。 このオプションは、Windows Vista 以降の NS_EMAIL 名前空間でのみサポートされます。 |
|
完全修飾ドメイン名は、最初の ai_fqdn メンバーで返されます。
GetAddrInfoEx の pHints パラメーターでこのオプションを設定し、pName パラメーターにフラット名 (単一ラベル) を指定すると、最終的に名前が解決された完全修飾ドメイン名が返されます。 このオプションは、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_family
アドレス ファミリ。
アドレス ファミリに使用できる値は、 Ws2def.h ヘッダー ファイルで定義されています。 Ws2def.h ヘッダー ファイルは Winsock2.h に自動的に含まれるので、直接使用しないでください。
現在サポートされている値は 、IPv4 と IPv6 のインターネット アドレス ファミリ形式である AF_INETまたはAF_INET6です。 アドレス ファミリの 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 でのプラグマティック一般マルチキャスト (PGM) マルチキャスト プロトコルの実装があります。これは、多くの場合、 信頼性の高いマルチキャスト プログラミングと呼ばれます。 |
|
データグラムに基づく擬似ストリーム パケットを提供します。 |
Windows ソケット 2 では、新しいソケットの種類が導入されました。 アプリケーションは、 WSAEnumProtocols 関数を使用して、使用可能な各トランスポート プロトコルの属性を動的に検出できます。 そのため、アプリケーションはアドレス ファミリに使用可能なソケットの種類とプロトコル オプションを決定し、このパラメーターを指定するときにこの情報を使用できます。 Winsock2.h および Ws2def.h ヘッダー ファイルのソケットの種類の定義は、新しいソケットの種類、アドレス ファミリ、およびプロトコルが定義されると、定期的に更新されます。
Windows ソケット 1.1 では、使用可能なソケットの種類は SOCK_DATAGRAM と SOCK_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 メンバーの一般的な値を示しています。
ai_family メンバーがAF_IRDA場合、ai_protocolは 0 である必要があります。
ai_addrlen
ai_addr メンバーが指すバッファーの長さ (バイト単位)。
ai_canonname
ホストの正規名。
ai_addr
sockaddr 構造体へのポインター。 返される各 addrinfoex3 構造体のai_addr メンバーは、入力されたソケット アドレス構造を指します。 返される各 addrinfoex3 構造体の長さ (バイト単位) は 、ai_addrlen メンバーで指定されます。
ai_blob
アドレスの一覧を超えて名前に関連付けられているプロバイダー固有の名前空間情報を返すために使用されるデータへのポインター。 ai_blobが指すバッファーの長さ (バイト単位) は、ai_bloblen メンバーで指定する必要があります。
ai_bloblen
ai_blob メンバーの長さ (バイト単位)。
ai_provider
特定の名前空間プロバイダーの GUID へのポインター。
ai_next
リンク リスト内の次の構造体へのポインター。 このパラメーターは、リンク リストの最後の addrinfoex3 構造体で NULL に設定されます。
ai_version
この構造体のバージョン番号。 このバージョンの構造体に現在使用されている値は 3 です。
ai_fqdn
ホストの完全修飾ドメイン名。
ai_interfaceindex
IP_ADAPTER_ADDRESSESによって定義されるインターフェイス インデックス。GetAdaptersAddresses で返される IfIndex プロパティ。
注釈
addrinfoex3 構造体は、Windows 8.1 および Windows Server 2012 R2 でサポートされています
addrinfoex3 構造体は、addrinfoex3 で AI_EXTENDED | AI_FQDN AI_CANONNAME | ビットが設定されている場合にホスト アドレス情報を保持するために GetAddrInfoEx 関数によって使用されます。GetAddrInfoEx を介して渡されたメンバー ai_flagsします。hints パラメーター。 addrinfoex3 も設定する必要があります。情報を取得するインターフェイスにメンバーをai_interfaceindexし、3 にai_versionします。
addrinfoex3 構造体は、ホストの正規名と完全修飾ドメイン名を返すことができる addrinfoex 構造体の拡張バージョンです。 さらに、addrinfoex は、getaddrinfo および GetAddrInfoW 関数で使用される addrinfo および addrinfoW 構造体の拡張バージョンです。 GetAddrInfoEx 関数を使用すると、名前空間プロバイダーを指定してクエリを解決できます。 IPv6 および IPv4 プロトコルで使用する場合、名前解決には、ドメイン ネーム システム (DNS)、ローカル ホスト ファイル、電子メール プロバイダー ( NS_EMAIL 名前空間)、またはその他の名前付けメカニズムを使用できます。
ai_blob メンバー内の BLOB データは、名前に関連付けられているプロバイダー固有の名前空間情報を返すために使用されます。 ai_blob メンバー内のデータの形式は、特定の名前空間プロバイダーに固有です。 現在、BLOB データは 、NS_EMAIL 名前空間プロバイダーによって追加情報を提供するために使用されます。
UNICODE または_UNICODEが定義されている場合、 addrinfoex3 は、この構造体の Unicode バージョンである addrinfoex3W に定義されます。 文字列パラメーターは PWSTR データ型に定義され、 addrinfoex3W 構造体が使用されます。
UNICODE または_UNICODEが定義されていない場合、 addrinfoex3 は、この構造体の ANSI バージョンである addrinfoex3A に定義されます。 文字列パラメーターは char * データ型で、 addrinfoex3A 構造体が使用されます。
GetAddrInfoEx を正常に呼び出すと、GetAddrInfoEx 関数に渡される ppResult パラメーターに addrinfoex3 構造体のリンクされたリストが返されます。 リストは、返される各 addrinfoex3 構造体の ai_next メンバーに用意されているポインターに従って、NULL ポインターが検出されるまで処理できます。 返される各 addrinfoex3 構造体では、 ai_family、 ai_socktype、 および ai_protocol メンバーは 、 ソケット または WSASocket 関数呼び出しのそれぞれの引数に対応します。 また、返される各 addrinfoex3 構造体のai_addr メンバーは、埋め込みソケット アドレス構造体を指し、その長さは ai_addrlen メンバーで指定されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
Header | ws2def.h |