RtlIpv6AddressToStringExW
NTSTATUS __stdcall RtlIpv6AddressToStringExW(
in6_addr *Address,
UINT64 ScopeId,
UINT16 Port,
WCHAR *AddressString,
UINT64 *AddressStringLength){
unsigned int v7;
WCHAR *p_Src;
WCHAR *v9;
WCHAR *v10;
unsigned int v11;
unsigned int v12;
__int16 Src;
WCHAR S;
char v16[14];
v7 = ScopeId;
if( !Address || !AddressStringLength || !AddressString && *(_DWORD *)AddressStringLength )
return -1073741811;
if( Port )
Src = 91;
p_Src = (WCHAR *)&Src;
if( Port )
p_Src = &S;
v9 = RtlIpv6AddressToStringW(Address, p_Src, Port, (INT64)AddressString);
v10 = v9;
if( v7 )
v10 = &v9[(int)swprintf_s(v9, (v16 - (char *)v9) >> 1, (WCHAR *)L"%%%u", v7)];
if( Port )
v10 += (int)swprintf_s(v10, (v16 - (char *)v10) >> 1, (WCHAR *)L"]:%u", (unsigned __int16)__ROR2__(Port, 8));
v11 = *(_DWORD *)AddressStringLength;
v12 = (((char *)v10 - (char *)&Src) >> 1) + 1;
*(_DWORD *)AddressStringLength = v12;
if( v11 < v12 )
return -1073741811;
memmove(AddressString, &Src, 2 * v12);
return 0;
}Referenced by:
No references.