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 ポインターでない場合に、オプションの AddressInfo、PortNumber、PrefixLength パラメーターで解析された結果を呼び出し元に返すことができます。
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