Función RtlIpv6AddressToStringExW (ip2string.h)
La función RtlIpv6AddressToStringEx convierte una dirección IPv6, un identificador de ámbito y un número de puerto en una cadena.
Sintaxis
NTSYSAPI NTSTATUS RtlIpv6AddressToStringExW(
[in] const in6_addr *Address,
[in] ULONG ScopeId,
[in] USHORT Port,
[out] PWSTR AddressString,
[in, out] PULONG AddressStringLength
);
Parámetros
[in] Address
Dirección IPv6 en orden de bytes de red.
[in] ScopeId
Identificador de ámbito de la dirección IPv6 en orden de bytes de red. Este parámetro es opcional.
[in] Port
Número de puerto en formato de orden de bytes de red. Este parámetro es opcional.
[out] AddressString
Puntero al búfer para recibir la representación de cadena terminada en NULL de la dirección IP, el identificador de ámbito y el puerto. Este búfer debe ser lo suficientemente grande como para contener al menos INET6_ADDRSTRLEN caracteres. El valor INET6_ADDRSTRLEN se define en el archivo de encabezado Ws2ipdef.h .
[in, out] AddressStringLength
En la entrada, el número de caracteres que caben en el búfer al que apunta el parámetro AddressString , incluido el terminador NULL. En la salida, este parámetro contiene el número de caracteres escritos realmente en el búfer al que apunta el parámetro AddressString .
Valor devuelto
Si la función se ejecuta correctamente, se STATUS_SUCCESS el valor devuelto.
Si se produce un error en la función, el valor devuelto es uno de los siguientes códigos de error.
Código devuelto | Descripción |
---|---|
|
Se pasó un parámetro no válido a la función. Este error se devuelve si se pasa un puntero NULL en el parámetro AddressString o AddressStringLength . Este error también se devuelve si la longitud del búfer a la que apunta el parámetro AddressString no es lo suficientemente grande como para recibir la representación de cadena de la dirección IPv6, el identificador de ámbito y el puerto. |
|
Use FormatMessage para obtener la cadena de mensaje del error devuelto. |
Comentarios
La función RtlIpv6AddressToStringEx se usa para convertir una dirección IPv6, un identificador de ámbito y un número de puerto en la representación de cadena de la dirección IPv6 en formato de Internet seguido de una representación de cadena del identificador de ámbito seguido de una representación de cadena del puerto. El identificador de ámbito y el número de puerto son parámetros opcionales.
La representación de cadena básica de la dirección IPv6 devuelta consta de 8 números hexadecimales separados por dos puntos. Una cadena de números hexadecimales consecutivos se reemplaza por dos puntos. Solo puede haber un signo de dos puntos en la representación de cadena de la dirección IPv6. Los últimos 32 bits se representan en notación de punto-octeto de estilo IPv4 si la dirección es una dirección compatible con IPv4, una dirección IPv4 asignada a IPv6 o una dirección ISATAP. Para obtener más información, consulte la sección 5 de RFC 5942 publicada por IETF.
Si se proporciona un identificador de ámbito, la representación de cadena del identificador de ámbito se separa de la representación de cadena de la dirección IPv6 por un carácter de porcentaje ('%'). Si se proporciona un número de puerto, la representación de cadena de la dirección IPv6 y el identificador de ámbito están rodeados de llaves cuadradas (un carácter "[" inicial seguido de la dirección IPv6 seguido de un carácter '% seguido del identificador de ámbito con un carácter final ']'). El número de puerto se representa como dos puntos después del carácter de llave cuadrada derecha seguido de la representación de cadena del número de puerto en decimal.
RtlIpv6AddressToStringEx es una función útil que no requiere que el archivo DLL de Windows Sockets se cargue para tener acceso a una función proporcionada en Windows Sockets para realizar la conversión de la dirección IP a la cadena.
Si la longitud del búfer a la que apunta el parámetro AddressString no es lo suficientemente grande como para recibir la representación de cadena de la dirección IP, el identificador de ámbito y el puerto, RtlIpv6AddressToStringEx devuelve ERROR_INVALID_PARAMETER y establece el parámetro AddressStringLength en la longitud del búfer necesaria.
Cuando se define UNICODE o _UNICODE, RtlIpv6AddressToStringEx se define en RtlIpv6AddressToStringExW, la versión Unicode de esta función. El parámetro AddressString se define en el tipo de datos PWSTR.
Cuando no se definen UNICODE y _UNICODE, RtlIpv6AddressToStringEx se define en RtlIpv6AddressToStringExA, la versión ANSI de esta función. El parámetro AddressString se define en el tipo de datos PSTR.
La estructura IN6_ADDR se define en el archivo de encabezado In6addr.h .
Una biblioteca de importación que contiene la función RtlIpv6AddressToStringEx no se incluye en el Kit de desarrollo de software (SDK) de Microsoft Windows publicado para Windows Vista. La función RtlIpv6AddressToStringEx se incluye en la biblioteca de importación Ntdll.lib incluida en el Kit de controladores de Windows (WDK). Una aplicación también podría usar las funciones GetModuleHandle y GetProcAddress para recuperar el puntero de función de la Ntdll.dll y llamar a esta función.
Requisitos
Cliente mínimo compatible | Windows Vista [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | ip2string.h (incluya Mstcpip.h) |
Library | ntdll.lib |
Archivo DLL | ntdll.dll |