> For the complete documentation index, see [llms.txt](https://malwaresourcecode.com/home/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://malwaresourcecode.com/home/networking/ipv4stringtounsignedlong.md).

# IPv4StringToUnsignedLong

```
typedef NTSTATUS(NTAPI* RTLIPV4STRINGTOADDRESSW)(PCWSTR, BOOL, LPCWSTR*, PIN_ADDR);

ULONG ConvertIPv4StringToUnsignedLongW(_In_ PWCHAR IpAddress)
{
	RTLIPV4STRINGTOADDRESSW RtlIpv4StringToAddressW = NULL;
	HMODULE hModule = NULL;
	IN_ADDR IpAddressObject = { 0 };
	LPCWSTR TerminatorObject = NULL;

	hModule = GetModuleHandleW(L"ntdll.dll");
	if (hModule == NULL)
		return 0;

	RtlIpv4StringToAddressW = (RTLIPV4STRINGTOADDRESSW)GetProcAddress(hModule, "RtlIpv4StringToAddressW");
	if (!RtlIpv4StringToAddressW)
		return 0;

	if (RtlIpv4StringToAddressW(IpAddress, FALSE, &TerminatorObject, &IpAddressObject) != ERROR_SUCCESS)
		return FALSE;

	RtlIpv4StringToAddressW = NULL;

	return IpAddressObject.S_un.S_addr;
}

ULONG ConvertIPv4StringToUnsignedLongA(_In_ PCHAR IpAddress)
{
	RTLIPV4STRINGTOADDRESSA RtlIpv4StringToAddressA = NULL;
	HMODULE hModule = NULL;
	IN_ADDR IpAddressObject = { 0 };
	LPCSTR TerminatorObject = NULL;

	hModule = GetModuleHandleW(L"ntdll.dll");
	if (hModule == NULL)
		return 0;

	RtlIpv4StringToAddressA = (RTLIPV4STRINGTOADDRESSA)GetProcAddress(hModule, "RtlIpv4StringToAddressA");
	if (!RtlIpv4StringToAddressA)
		return 0;

	if (RtlIpv4StringToAddressA(IpAddress, FALSE, &TerminatorObject, &IpAddressObject) != ERROR_SUCCESS)
		return FALSE;

	RtlIpv4StringToAddressA = NULL;

	return IpAddressObject.S_un.S_addr;
}
```
