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_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 以降でサポートされています。 |
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 ソケット 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 構造体へのポインター。 返される各 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_family、 ai_socktype、 および ai_protocol メンバーは 、 ソケット または WSASocket 関数呼び出しのそれぞれの引数に対応します。 また、返される各 addrinfoex2 構造体のai_addr メンバーは、入力されたソケット アドレス構造体を指し、その長さは ai_addrlen メンバーで指定されます。
要件
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
Header | ws2def.h |