Поделиться через


Функция RtlIpv4StringToAddressA (ip2string.h)

Функция RtlIpv4StringToAddress преобразует строковое представление IPv4-адреса в двоичный IPv4-адрес.

Синтаксис

NTSYSAPI NTSTATUS RtlIpv4StringToAddressA(
  [in]  PCSTR   S,
  [in]  BOOLEAN Strict,
  [out] PCSTR   *Terminator,
  [out] in_addr *Addr
);

Параметры

[in] S

Указатель на буфер, содержащий строковое представление IPv4-адреса, завершающего значение NULL.

[in] Strict

Значение, указывающее, должна ли строка быть адресом IPv4, представленным в строгой четырехкомпонентной нотации с точками десятичного разряда. Если этот параметр имеет значение TRUE, строка должна быть точечной десятичной с четырьмя частями. Если этот параметр имеет значение FALSE, допускается любое из четырех возможных форм с десятичной, восьмеричной или шестнадцатеричной нотацией. Дополнительные сведения см. в разделе "Примечания".

[out] Terminator

Параметр, получающий указатель на символ, завершающий преобразованную строку. Это можно использовать вызывающим методом для извлечения дополнительных сведений из строки.

[out] Addr

Указатель, в котором должно храниться двоичное представление IPv4-адреса.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение STATUS_SUCCESS.

Если функция завершается ошибкой, возвращаемое значение является одним из следующих кодов ошибок.

Код возврата Description
СТАТУС_НЕДЕЙСТВИТЕЛЬНЫЙ_ПАРАМЕТР
Недопустимый параметр был передан функции. Эта ошибка возвращается, если для параметра Strict задано значение TRUE, но строка, указываемая параметром S , не содержала четырехкомпонентное десятичное представление IPv4-адреса. Эта ошибка также возвращается, если строка, указываемая параметром S , не содержала правильное строковое представление адреса IPv4.

Этот код ошибки определен в файле заголовка Ntstatus.h.

Другое
Используйте FormatMessage , чтобы получить строку сообщения для возвращаемой ошибки.

Замечания

Функция RtlIpv4StringToAddress используется для преобразования строкового представления IPv4-адреса в IPv4-адрес, возвращаемый в сетевом порядке (байты, упорядоченные слева направо).

RtlIpv4StringToAddress — это удобная функция, которая не требует загрузки библиотеки DLL сокетов Windows для доступа к функции, предоставленной в сокетах Windows, для выполнения преобразования строк в IP-адрес.

Если для параметра Strict задано значение TRUE, строка, указываемая параметром S , должна находиться в строгой десятичной нотации. Для этого строгого формата необходимо указать четыре части. Каждая часть интерпретируется как десятичный байт данных и назначается слева направо на четыре байта IPv4-адреса.

Если для параметра Strict задано значение FALSE, строка, указываемая параметром S , может находиться в любом из нескольких возможных форматов. Если буфер, указывающий на параметр S , содержит строку адреса из трех частей, последняя часть интерпретируется как 16-разрядное количество и помещается в правое два байта сетевого адреса. Это упрощает трехкомпонентный формат адресов для указания сетевых адресов класса B как "128.net.host". Если буфер, указывающий на параметр S , содержит двухкомпонентную строку адреса, последняя часть интерпретируется как 24-разрядное количество и помещается в правое три байта сетевого адреса. Это делает формат двух частей удобным для указания сетевых адресов класса A как net.host. Если буфер, указывающий на параметр S , содержит только строку адреса с одной частью, значение хранится непосредственно в сетевом адресе без каких-либо байтовых перестроений.

При успешном выполнении параметр Terminator указывает на символ, завершающий преобразованную строку. Это позволяет приложению передавать строку, содержащую IP-адрес, а также дополнительные сведения функции RtlIpv4StringToAddress , а затем анализировать оставшиеся сведения.

При определении ЮНИКОДа или _UNICODE RtlIpv4StringToAddress определяется для RtlIpv4StringToAddressW, версия Юникода этой функции. Параметр S определяется для типа данных PCWSTR, а параметр Terminator определен для типа данных LPCWSTR.

Если и ЮНИКОД, и _UNICODE не определены, RtlIpv4StringToAddress определяется для RtlIpv4StringToAddressA, версия ANSI этой функции. Параметры S и Terminator определяются для типа данных PCSTR.

Структура IN_ADDR определена в файле заголовка Inaddr.h .

Замечание

Заголовок ip2string.h определяет RtlIpv4StringToAddress в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows Vista [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2008 [классические приложения | Приложения UWP]
целевая платформа Windows
Header ip2string.h (include Mstcpip.h, Ip2string.h)
Library ntdll.lib
DLL ntdll.dll

См. также

GetModuleHandle

GetProcAddress

InetNtop

InetPton

LoadLibrary

RtlIpv4AddressToString

RtlIpv4AddressToStringEx

RtlIpv4StringToAddressEx

RtlIpv6AddressToString

RtlIpv6AddressToStringEx

RtlIpv6StringToAddress

RtlIpv6StringToAddressEx

inet_addr

inet_ntoa