次の方法で共有


SetUnicastIpAddressEntry 関数 (netioapi.h)

SetUnicastIpAddressEntry 関数は、ローカル コンピューター上の既存のユニキャスト IP アドレス エントリのプロパティを設定します。

構文

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API SetUnicastIpAddressEntry(
  [in] const MIB_UNICASTIPADDRESS_ROW *Row
);

パラメーター

[in] Row

既存のユニキャスト IP アドレス エントリ のMIB_UNICASTIPADDRESS_ROW 構造体エントリへのポインター。

戻り値

関数が成功した場合、戻り値はNO_ERROR。

関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。

リターン コード 説明
ERROR_ACCESS_DENIED
アクセスが拒否されました。 このエラーは、次のようないくつかの条件で返されます。ユーザーがローカル コンピューターに必要な管理特権を持っていないか、アプリケーションが組み込みの管理者 (RunAs 管理者) として拡張シェルで実行されていません。
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されました。 Row パラメーターに NULL ポインターが渡された場合、Row パラメーターが指すMIB_UNICASTIPADDRESS_ROWAddress メンバーが有効なユニキャスト IPv4 アドレスまたは IPv6 アドレスに設定されていない場合、または Row パラメーターが指すMIB_UNICASTIPADDRESS_ROWInterfaceLuid メンバーまたは InterfaceIndex メンバーの両方が指定されていない場合、このエラーが返されます。

このエラーは、 MIB_UNICASTIPADDRESS_ROW 構造体のメンバーに設定された値の他のエラーにも返されます。 これらのエラーには、ValidLifetime メンバーPreferredLifetime メンバーより小さい場合、PrefixOrigin メンバーが IpPrefixOriginUnchanged に設定されていて、SuffixOriginIpSuffixOriginUnchanged に設定されていない場合、PrefixOrigin メンバーが IpPrefixOriginUnchanged に設定されておらず、SuffixOriginIpSuffixOriginUnchanged に設定されている場合は、suffixOrigin メンバーがNL_SUFFIX_ORIGIN列挙体の値に設定されていない場合、または OnLinkPrefixLength メンバーが IP アドレス長より大きい値に設定されている場合は、ビット単位で (ユニキャスト IPv4 アドレスの場合は 32、ユニキャスト IPv6 アドレスの場合は 128) は、NL_PREFIX_ORIGIN列挙の値に設定されません。

ERROR_NOT_FOUND
指定したインターフェイスが見つかりませんでした。 Row パラメーターが指すMIB_UNICASTIPADDRESS_ROWInterfaceLuid メンバーまたは InterfaceIndex メンバーによって指定されたネットワーク インターフェイスが見つからなかった場合、このエラーが返されます。
ERROR_NOT_SUPPORTED
要求はサポートされていません。 このエラーは、ローカル コンピューター上に IPv4 スタックがなく、Row パラメーターによって指MIB_UNICASTIPADDRESS_ROWアドレス メンバーで IPv4 アドレス指定された場合、またはローカル コンピューター上に IPv6 スタックがなく、アドレス メンバーに IPv6 アドレスが指定されていない場合に返されます。
その他
FormatMessage を使用して、返されたエラーのメッセージ文字列を取得します。

注釈

SetUnicastIpAddressEntry 関数は、Windows Vista 以降で定義されています。

GetUnicastIpAddressEntry 関数は、通常、変更する既存のMIB_UNICASTIPADDRESS_ROW構造体エントリを取得するために使用されます。 アプリケーションは、変更する MIB_UNICASTIPADDRESS_ROW エントリのメンバーを変更し、 SetUnicastIpAddressEntry 関数を呼び出すことができます。

アプリケーションは InitializeUnicastIpAddressEntry 関数を呼び出して、変更を行う前に 、MIB_UNICASTIPADDRESS_ROW 構造体エントリのメンバーを既定値で初期化できます。 ただし、通常、アプリケーションは InitializeUnicastIpAddressEntry を呼び出す前に InterfaceLuid メンバーまたは InterfaceIndex メンバーを保存し、呼び出し後にこれらのメンバーのいずれかを復元します。

Row パラメーターが指すMIB_UNICASTIPADDRESS_ROW構造体の Address メンバーは、有効なユニキャスト IPv4 または IPv6 アドレスとファミリに初期化する必要があります。 さらに、Row パラメーターを指すMIB_UNICASTIPADDRESS_ROW構造体の少なくとも 1 つのメンバーを初期化する必要があります: InterfaceLuid または InterfaceIndex

フィールドは、上記の順序で使用されます。 したがって、 InterfaceLuid が指定されている場合は、このメンバーを使用してインターフェイスが決定されます。 InterfaceLuid メンバーに値が設定されていない場合 (このメンバーの値が 0 に設定されました)、InterfaceIndex メンバーが次に使用されてインターフェイスが決定されます。

Row パラメーターが指すMIB_UNICASTIPADDRESS_ROWOnLinkPrefixLength メンバーが 255 に設定されている場合、SetUnicastIpAddressEntry はユニキャスト IP アドレス プロパティを設定して、OnLinkPrefixLength メンバーが IP アドレスの長さと同じになるようにします。 したがって、ユニキャスト IPv4 アドレスの場合、 OnLinkPrefixLength は 32 に設定され、ユニキャスト IPv6 アドレスの 場合は OnLinkPrefixLength が 128 に設定されます。 これにより、IPv4 アドレスのサブネット マスクが正しくないか、IPv6 アドレスのリンク プレフィックスが正しくない場合、アプリケーションは SetUnicastIpAddressEntry を呼び出す前に、このメンバーを正しい値に設定する必要があります。

SetUnicastIpAddressEntry 関数が呼び出されると、Row が指すMIB_UNICASTIPADDRESS_ROW構造体の DadStateScopeIdCreationTimeStamp メンバーは無視されます。 これらのメンバーはネットワーク スタックによって設定され、 SetUnicastIpAddressEntry 関数を使用して変更することはできません。 ScopeId メンバーは、アドレスが追加されたインターフェイスによって自動的に決定されます。

SetUnicastIpAddressEntry 関数は、Administrators グループのメンバーとしてログオンしているユーザーのみが呼び出すことができます。 Administrators グループのメンバーではないユーザーが SetUnicastIpAddressEntry を呼び出すと、関数呼び出しは失敗し、 ERROR_ACCESS_DENIED が返されます。

SetUnicastIpAddressEntry 関数は、Windows Vista 以降のユーザー アカウント制御 (UAC) により失敗する可能性もあります。 この関数を含むアプリケーションが、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーによって実行された場合、 requestedExecutionLevel が requireAdministrator に設定されたマニフェスト ファイルでアプリケーションがマークされていない限り、この呼び出しは失敗します。 アプリケーションにこのマニフェスト ファイルがない場合、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーは、この関数を成功させるために、組み込みの Administrator (RunAs 管理者) として拡張シェルでアプリケーションを実行する必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー netioapi.h (Iphlpapi.h を含む)
Library Iphlpapi.lib
[DLL] Iphlpapi.dll

こちらもご覧ください

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

IP ヘルパー関数リファレンス

InitializeUnicastIpAddressEntry

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyUnicastIpAddressChange