次の方法で共有


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-terminated 文字列へのポインター。 名前空間プロバイダーに固有のこのパラメーターの解釈。

[in] pServiceName

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

[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

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

[in, optional] timeout

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

[in, optional] lpOverlapped

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

[in, optional] lpCompletionRoutine

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

[out, optional] lpNameHandle

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

戻り値

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

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

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

名前空間プロバイダーに登録されている情報は、GetAddrInfoExgetaddrinfo、または 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 ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetAddrInfoEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 8.1、Windows Vista [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー ws2tcpip.h
ライブラリ Ws2_32.lib
DLL Ws2_32.dll

関連項目

GetAddrInfoEx を する

GetAddrInfoW の

WSAEnumNameSpaceProviders の

WSAGetLastError の

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

getaddrinfo を する