SetAddrInfoExA 関数 (ws2tcpip.h)

SetAddrInfoEx 関数は、名前、サービス名、および関連付けられたアドレスを特定の名前空間プロバイダーに登録または登録解除します。

構文

INT WSAAPI SetAddrInfoExA(
  [in]            PCSTR                              pName,
  [in]            PCSTR                              pServiceName,
  [in, out]       SOCKET_ADDRESS                     *pAddresses,
  [in]            DWORD                              dwAddressCount,
  [in, optional]  LPBLOB                             lpBlob,
  [in]            DWORD                              dwFlags,
  [in]            DWORD                              dwNameSpace,
  [in, optional]  LPGUID                             lpNspId,
  [in, optional]  timeval                            *timeout,
  [in, optional]  LPOVERLAPPED                       lpOverlapped,
  [in, optional]  LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
  [out, optional] LPHANDLE                           lpNameHandle
);

パラメーター

[in] pName

アドレスを登録または登録解除する名前を含む NULL で終わる文字列へのポインター。 名前空間プロバイダーに固有のこのパラメーターの解釈。

[in] pServiceName

登録されている名前に関連付けられているサービス名を含む NULL で終わる省略可能な文字列へのポインター。 このパラメーターの解釈は、名前空間プロバイダーに固有です。

[in, out] pAddresses

名前空間プロバイダーに登録するアドレスの省略可能なリストへのポインター。

[in] dwAddressCount

pAddresses パラメーターで渡されるアドレスの数。 このパラメーターが 0 の場合、 pName パラメーターは名前空間プロバイダーから登録解除されます。

[in, optional] lpBlob

アドレスの一覧を超えて pName パラメーターに関連付けられているプロバイダー固有の名前空間情報を設定するために使用されるデータへの省略可能なポインター。 pAddresses パラメーターで渡すことができない情報は、lpBlob パラメーターで渡すことができます。 この情報の形式は、名前空間プロバイダーに固有です。

[in] dwFlags

名前空間プロバイダーに pName パラメーターと pServiceName パラメーターを登録する方法を制御するフラグのセット。 この情報の解釈は、名前空間プロバイダーに固有です。

[in] dwNameSpace

この情報を登録する名前空間プロバイダーを決定する名前空間識別子。 特定の名前空間識別子を渡すと、この情報は、指定した名前空間をサポートする名前空間プロバイダーにのみ登録されます。 NS_ALLを指定すると、インストールされているすべての名前空間プロバイダーとアクティブな名前空間プロバイダーに情報が登録されます。

dwNameSpace パラメーターのオプションは、Winsock2.h インクルード ファイルに一覧表示されます。 Windows Vista 以降には、いくつかの名前空間プロバイダーが含まれています。 他の名前空間プロバイダーをインストールできるため、次の使用可能な値は一般的に使用できる値のみです。 その他の多くが可能です。

意味
NS_ALL
すべてのインストール済み名前空間とアクティブな名前空間。
NS_BTH
Bluetooth 名前空間。 この名前空間識別子は、Windows Vista 以降でサポートされています。
NS_DNS
ドメイン ネーム システム (DNS) 名前空間。
NS_EMAIL
電子メール名前空間。 この名前空間識別子は、Windows Vista 以降でサポートされています。
NS_NLA
ネットワークロケーション認識 (NLA) 名前空間。 この名前空間識別子は、Windows XP 以降でサポートされています。
NS_PNRPNAME
特定のピア名のピア ツー ピア名前空間。 この名前空間識別子は、Windows Vista 以降でサポートされています。
NS_PNRPCLOUD
ピア名のコレクションのピア ツー ピア名前空間。 この名前空間識別子は、Windows Vista 以降でサポートされています。

[in, optional] lpNspId

複数の名前空間プロバイダーが NS_DNS などの 1 つの名前空間に登録されている場合に、この情報を登録する特定の名前空間プロバイダーのオプションの GUID へのポインター。 特定の名前空間プロバイダーに GUID を渡すと、指定した名前空間プロバイダーにのみ情報が登録されます。 WSAEnumNameSpaceProviders 関数を呼び出して、名前空間プロバイダーの GUID を取得できます。

[in, optional] timeout

名前空間プロバイダーからの応答を待機してから呼び出しを中止するまでの時間 (ミリ秒単位) を示す省略可能なパラメーター。 タイムアウト オプションはサポートされていないため、このパラメーターは現在予約されており、NULL に設定する必要があります。

[in, optional] lpOverlapped

非同期操作に使用される重複する構造体への省略可能なポインター。 非同期操作はサポートされていないため、このパラメーターは現在予約されており 、NULL に設定する必要があります。

[in, optional] lpCompletionRoutine

非同期操作の正常な完了時に呼び出される関数への省略可能なポインター。 非同期操作はサポートされていないため、このパラメーターは現在予約されており 、NULL に設定する必要があります。

[out, optional] lpNameHandle

非同期操作にのみ使用される省略可能なポインター。 非同期操作はサポートされていないため、このパラメーターは現在予約されており 、NULL に設定する必要があります。

戻り値

成功すると、 SetAddrInfoEx はNO_ERROR (0) を返します。 Failure は、Windows ソケット エラー コードに示されているように、0 以外の Windows ソケット エラー コードを返します

エラー コード 意味
WSANOTINITIALIZED
この関数を使用する前に、 WSAStartup 呼び出しが正常に行われる必要があります。
WSATRY_AGAIN
名前解決で一時的なエラーが発生しました。
WSAEINVAL
無効なパラメーターが指定されました。 予約済みパラメーターのいずれかが NULL でない場合、このエラーが返されます。
WSAENOBUFS
バッファー領域が不足しています。
WSANO_RECOVERY
名前解決で回復不可能なエラーが発生しました。
WSA_NOT_ENOUGH_MEMORY
メモリ割り当てエラーが発生しました。

注釈

SetAddrInfoEx 関数は、名前と 1 つ以上のアドレスを名前空間プロバイダーに登録または登録解除するためのプロトコルに依存しないメソッドを提供します。 Windows Vista 以降の NS_EMAIL 名前空間プロバイダーでは、アドレスの登録と登録解除がサポートされています。 既定のNS_DNS、NS_PNRPNAME、およびNS_PNRPNAME名前空間プロバイダーは、現在、名前の登録をサポートしていません。

setAddrInfoEx 関数が呼び出され、NS_ALL dwNameSpace パラメーターとして設定され、lpNspId パラメーターが指定されていない場合、SetAddrInfoEx は、インストールされているすべての名前空間とアクティブな名前空間に名前と関連付けられたアドレスを登録または登録解除しようとします。 名前空間プロバイダーのいずれかが名前を正常に登録または登録解除した場合、 SetAddrInfoEx 関数は成功を返しますが、どの名前空間プロバイダーが成功したか、要求に失敗したかは示されません。

UNICODE または_UNICODEが定義されている場合、SetAddrInfoEx は、この関数の Unicode バージョンである SetAddrInfoExW に定義されます。 文字列パラメーターは PWSTR データ型に定義されます。

UNICODE または_UNICODEが定義されていない場合、SetAddrInfoEx は、この関数の ANSI バージョンである SetAddrInfoExA に定義されます。 文字列パラメーターは PCSTR データ型です。

名前空間プロバイダーに登録されている情報は、GetAddrInfoEx、getaddrinfo、または GetAddrInfoW 関数を呼び出すことによって返すことができます。 GetAddrInfoEx 関数は、getaddrinfo 関数と GetAddrInfoW 関数の拡張バージョンです。

Windows Vista 以降では、 SetAddrInfoEx がサービスから呼び出されると、操作がサービスを呼び出すユーザー プロセスの結果である場合、サービスはユーザーを偽装する必要があります。 これは、セキュリティとルーティング コンパートメントを適切に適用できるようにするためです。

Windows 8.1およびWindows Server 2012 R2: SetAddrInfoExW 関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。

注意

ws2tcpip.h ヘッダーは SetAddrInfoEx をエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 8.1、 Windows Vista [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー ws2tcpip.h
Library Ws2_32.lib
[DLL] Ws2_32.dll

こちらもご覧ください

GetAddrInfoEx

GetAddrInfoW

WSAEnumNameSpaceProviders

WSAGetLastError

Windows ソケットのエラー コード

getaddrinfo