次の方法で共有


ParseNetworkString 関数 (iphlpapi.h)

ParseNetworkString 関数は、入力ネットワーク文字列を解析し、指定された IP ネットワーク文字列型の有効な表現であるかどうかを確認します。 文字列が型とその仕様と一致する場合、関数は必要に応じて解析された結果を返すことができます。

構文

IPHLPAPI_DLL_LINKAGE DWORD ParseNetworkString(
  [in]            const WCHAR       *NetworkString,
  [in]            DWORD             Types,
  [out, optional] PNET_ADDRESS_INFO AddressInfo,
  [out, optional] USHORT            *PortNumber,
  [out, optional] BYTE              *PrefixLength
);

パラメーター

[in] NetworkString

解析する NULL で終わるネットワーク文字列へのポインター。

[in] Types

解析する IP ネットワーク文字列の種類。 このパラメーターは、 Iphlpapi.h ヘッダー ファイルで定義されているネットワーク文字列型のいずれかで構成されます。

説明
NET_STRING_IPV4_ADDRESS
0x00000001
NetworkString パラメーターは、インターネット標準のドット 10 進表記を使用して IPv4 アドレスを指します。 ネットワーク ポートやプレフィックスは、ネットワーク文字列に含めないでください。

ネットワーク文字列の例を次に示します。

192.168.100.10

NET_STRING_IPV4_SERVICE
0x00000002
NetworkString パラメーターは、インターネット標準のドット 10 進表記を使用して IPv4 サービスを指します。 ネットワーク文字列の一部としてネットワーク ポートが必要です。 ネットワーク文字列にプレフィックスを含めてはいけません。

ネットワーク文字列の例を次に示します。

192.168.100.10:80

NET_STRING_IPV4_NETWORK
0x00000004
NetworkString パラメーターは、インターネット標準のドット 10 進表記を使用して IPv4 ネットワークを指します。 クラスレス ドメイン間ルーティング (CIDR) 表記を使用するネットワーク プレフィックスは、ネットワーク文字列の一部として必要です。 ネットワーク ポートは、ネットワーク文字列に含めないでください。

ネットワーク文字列の例を次に示します。

192.168.100/24

NET_STRING_IPV6_ADDRESS
0x00000008
NetworkString パラメーターは、インターネット標準の 16 進数エンコードを使用して IPv6 アドレスを指します。 IPv6 スコープ ID は、ネットワーク文字列に含めることができます。 ネットワーク ポートやプレフィックスは、ネットワーク文字列に含めないでください。

ネットワーク文字列の例を次に示します。

21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A%2

NET_STRING_IPV6_ADDRESS_NO_SCOPE
0x00000008
NetworkString パラメーターは、インターネット標準の 16 進数エンコードを使用して IPv6 アドレスを指します。 IPv6 スコープ ID をネットワーク文字列に含めてはいけません。 ネットワーク ポートやプレフィックスは、ネットワーク文字列に含めないでください。

ネットワーク文字列の例を次に示します。

21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A

NET_STRING_IPV6_SERVICE
0x00000020
NetworkString パラメーターは、インターネット標準の 16 進数エンコードを使用する IPv6 サービスを指します。 ネットワーク文字列の一部としてネットワーク ポートが必要です。 IPv6 スコープ ID は、ネットワーク文字列に含めることができます。 ネットワーク文字列にプレフィックスを含めてはいけません。

スコープ ID を持つネットワーク文字列の例を次に示します。

[21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A%2]:8080

NET_STRING_IPV6_SERVICE_NO_SCOPE
0x00000040
NetworkString パラメーターは、インターネット標準の 16 進数エンコードを使用する IPv6 サービスを指します。 ネットワーク文字列の一部としてネットワーク ポートが必要です。 IPv6 スコープ ID をネットワーク文字列に含めてはいけません。 ネットワーク文字列にプレフィックスを含めてはいけません。

ネットワーク文字列の例を次に示します。

21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A:8080

NET_STRING_IPV6_NETWORK
0x00000080
NetworkString パラメーターは、インターネット標準の 16 進数エンコードを使用して IPv6 ネットワークを指します。 CIDR 表記のネットワーク プレフィックスは、ネットワーク文字列の一部として必要です。 ネットワーク ポートやスコープ ID は、ネットワーク文字列に含めないでください。

ネットワーク文字列の例を次に示します。

21DA:D3::/48

NET_STRING_NAMED_ADDRESS
0x00000100
NetworkString パラメーターは、ドメイン ネーム システム (DNS) 名を使用してインターネット アドレスを指します。 ネットワーク ポートやプレフィックスは、ネットワーク文字列に含めないでください。

ネットワーク文字列の例を次に示します。

www.microsoft.com

NET_STRING_NAMED_SERVICE
0x00000200
NetworkString パラメーターは、DNS 名を使用してインターネット サービスを指します。 ネットワーク ポートは、ネットワーク文字列に存在する必要があります。

ネットワーク文字列の例を次に示します。

www.microsoft.com:80

NET_STRING_IP_ADDRESS
0x00000009
NetworkString パラメーターは、インターネット標準のドット 10 進表記を使用した IPv4 アドレス、またはインターネット標準の 16 進数エンコードを使用した IPv6 アドレスを指します。 IPv6 スコープ ID は、ネットワーク文字列に含めることができます。 ネットワーク ポートやプレフィックスは、ネットワーク文字列に含めないでください。

この型は、 NET_STRING_IPV4_ADDRESS 型または NET_STRING_IPV6_ADDRESS 型のいずれかに一致します。

NET_STRING_IP_ADDRESS_NO_SCOPE
0x00000011
NetworkString パラメーターは、インターネット標準のドット 10 進表記を使用した IPv4 アドレス、またはインターネット標準の 16 進数エンコードを使用した IPv6 アドレスを指します。 IPv6 スコープ ID をネットワーク文字列に含めてはいけません。 ネットワーク ポートやプレフィックスは、ネットワーク文字列に含めないでください。

この型は、 NET_STRING_IPV4_ADDRESS 型または NET_STRING_IPV6_ADDRESS_NO_SCOPE 型のいずれかと一致します。

NET_STRING_IP_SERVICE
0x00000022
NetworkString パラメーターは、IPv4 サービスまたは IPv6 サービスを指します。 ネットワーク文字列の一部としてネットワーク ポートが必要です。 IPv6 スコープ ID は、ネットワーク文字列に含めることができます。 ネットワーク文字列にプレフィックスを含めてはいけません。

この型は、 NET_STRING_IPV4_SERVICE 型または NET_STRING_IPV6_SERVICE 型のいずれかと一致します。

NET_STRING_IP_SERVICE_NO_SCOPE
0x00000042
NetworkString パラメーターは、IPv4 サービスまたは IPv6 サービスを指します。 ネットワーク文字列の一部として、ネットワーク ポートが必要です。 IPv6 スコープ ID をネットワーク文字列に含めてはいけません。 ネットワーク文字列にプレフィックスを含めてはいけません。

この型は、 NET_STRING_IPV4_SERVICE 型または NET_STRING_IPV6_SERVICE_NO_SCOPE 型のいずれかと一致します。

NET_STRING_IP_NETWORK
0x00000084
NetworkString パラメーターは、IPv4 または IPv6 ネットワークを指します。 CIDR 表記のネットワーク プレフィックスは、ネットワーク文字列の一部として必要です。 ネットワーク ポートまたはスコープ ID をネットワークに存在してはなりません。

この型は、 NET_STRING_IPV4_NETWORK 型または NET_STRING_IPV6_NETWORK 型のいずれかと一致します。

NET_STRING_ANY_ADDRESS
0x00000209
NetworkString パラメーターは、インターネット標準のドット 10 進数表記の IPv4 アドレス、インターネット標準 16 進数エンコードの IPv6 アドレス、または DNS 名を指します。 IPv6 スコープ ID は、IPv6 アドレスのネットワーク文字列に存在する場合があります。 ネットワーク ポートやプレフィックスは、ネットワーク文字列に含めないでください。

この型は、 NET_STRING_NAMED_ADDRESS 型または NET_STRING_IP_ADDRESS 型のいずれかと一致します。

NET_STRING_ANY_ADDRESS_NO_SCOPE
0x00000211
NetworkString パラメーターは、インターネット標準のドット 10 進数表記の IPv4 アドレス、インターネット標準 16 進数エンコードの IPv6 アドレス、または DNS 名を指します。 IPv6 スコープ ID は、IPv6 アドレスのネットワーク文字列に存在してはなりません。 ネットワーク ポートやプレフィックスは、ネットワーク文字列に含めないでください。

この型は、 NET_STRING_NAMED_ADDRESS 型または NET_STRING_IP_ADDRESS_NO_SCOPE 型のいずれかと一致します。

NET_STRING_ANY_SERVICE
0x00000222
NetworkString パラメーターは、IP アドレス表記または DNS 名を使用して IPv4 サービスまたは IPv6 サービスを指します。 ネットワーク文字列の一部として、ネットワーク ポートが必要です。 IPv6 スコープ ID は、ネットワーク文字列に含めることができます。 ネットワーク文字列にプレフィックスを含めてはいけません。

この型は、 NET_STRING_NAMED_SERVICE 型または NET_STRING_IP_SERVICE 型のいずれかと一致します。

NET_STRING_ANY_SERVICE_NO_SCOPE
0x00000242
NetworkString パラメーターは、IP アドレス表記または DNS 名を使用して IPv4 サービスまたは IPv6 サービスを指します。 ネットワーク文字列の一部として、ネットワーク ポートが必要です。 IPv6 スコープ ID をネットワーク文字列に含めてはいけません。 ネットワーク文字列にプレフィックスを含めてはいけません。

この型は、 NET_STRING_NAMED_SERVICE 型または NET_STRING_IP_SERVICE_NO_SCOPE 型のいずれかと一致します。

[out, optional] AddressInfo

成功した場合、この関数は、このパラメーターに NULL ポインターが渡されなかった場合、解析された IP アドレス情報を含むNET_ADDRESS_INFO構造体へのポインターを返します。

[out, optional] PortNumber

成功した場合、このパラメーターで NULL ポインターが渡されなかった場合、関数は解析されたネットワーク ポートへのポインターをホスト順に返します。 NetworkString パラメーターにネットワーク ポートが存在しない場合は、0 の値へのポインターが返されます。

[out, optional] PrefixLength

成功すると、このパラメーターに NULL ポインターが渡されなかった場合、関数は解析されたプレフィックス長へのポインターを返します。 プレフィックスが NetworkString パラメーターに存在しなかった場合は、値 -1 へのポインターが返されます。

戻り値

関数が成功した場合、戻り値は ERROR_SUCCESS です。

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

リターン コード 説明
ERROR_INSUFFICIENT_BUFFER
関数に渡されるバッファーが小さすぎます。 AddressInfo パラメーターが指すバッファーが小さすぎて解析されたネットワーク アドレスを保持しないと、このエラーが返されます。
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されました。 このエラーは、NetworkString パラメーターに NULL ポインターが渡された場合に返されます

解説

ParseNetworkString 関数は、NetworkString パラメーターで渡された入力ネットワーク文字列を解析し、Types 引数で指定されているいずれかの文字列型の有効な表現であるかどうかを確認します。 文字列が型とその仕様に一致する場合、関数は成功し、必要に応じて、パラメーターが NULL ポインターでない場合に、オプションの AddressInfoPortNumberPrefixLength パラメーターで解析された結果を呼び出し元に返すことができます。

ParseNetworkString 関数は、DNS 名を使用して、IPv4 または IPv6 アドレス、サービス、ネットワーク、および名前付きインターネット アドレスとサービスの表現を解析できます。

AddressInfo パラメーターが指すNET_ADDRESS_INFO構造体。 SOCKADDR_INおよび SOCKADDR 構造体は 、Winsock2.h ヘッダー ファイルによって自動的に含まれる Ws2def.h ヘッダー ファイルで定義されます。 SOCKADDR_IN6構造体は Ws2ipdef.h ヘッダー ファイルで定義され、 Ws2tcpip.h ヘッダー ファイルによって自動的にインクルードされます。 ParseNetworkString 関数とNET_ADDRESS_INFO構造体を使用するには、Iphlpapi.h ヘッダー ファイルの前に Winsock2.h ヘッダー ファイルと Ws2tcpip.h ヘッダー ファイルを含める必要があります。

要件

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

関連項目

NET_ADDRESS_FORMAT

NET_ADDRESS_INFO

Sockaddr

SOCKADDR_IN

SOCKADDR_IN6