getIPAddr method

Future<String?> getIPAddr(
  1. int family
)

Implementation

Future<String?> getIPAddr(int family) {
  return Future<String?>.value(query((pGuid, pAttributes) {
    final ulSize = calloc<ULONG>();
    Pointer<IP_ADAPTER_ADDRESSES_LH> pIpAdapterAddress = nullptr;
    try {
      GetAdaptersAddresses(family, 0, nullptr, nullptr, ulSize);
      pIpAdapterAddress = HeapAlloc(GetProcessHeap(), 0, ulSize.value).cast();
      GetAdaptersAddresses(family, 0, nullptr, pIpAdapterAddress, ulSize);
      final pAddr = getAdapterAddress(pGuid, pIpAdapterAddress);
      if (pAddr == null) return null;
      if (pAddr.ref.FirstUnicastAddress == nullptr) return null;
      return formatIPAddress(
          pAddr.ref.FirstUnicastAddress.ref.Address.lpSockaddr);
    } finally {
      free(ulSize);
      if (pIpAdapterAddress != nullptr) free(pIpAdapterAddress);
    }
  }));
}