Microsoft Learn

Documentation | Windows API Reference

GetUnicastAddresses

Retrieves a list of unicast addresses associated with the local computer.

Syntax


IP_STATUS GetUnicastAddresses(
  _Out_ PMIB_UNICASTADDRESS_TABLE *Table
);
                

Parameters

Table
A pointer to a MIB_UNICASTADDRESS_TABLE structure. This structure contains information about the unicast addresses on the local computer. The memory for this structure is allocated by the caller and must be freed using FreeMibTable.

Return Value

If the function succeeds, the return value is NO_ERROR.

If the function fails, the return value is one of the following error codes:

Return Code Description
ERROR_INVALID_PARAMETER An invalid parameter was passed to the function.
ERROR_NOT_SUPPORTED The function is not supported on the operating system.
ERROR_NOT_ENOUGH_MEMORY Not enough memory is available to complete the operation.

Remarks

The GetUnicastAddresses function retrieves a list of unicast IP addresses configured on the local computer. This includes IPv4 and IPv6 addresses.

The unicast addresses are returned in a MIB_UNICASTADDRESS_TABLE structure. This structure contains an array of MIB_UNICASTADDRESS_ROW structures, each representing a unicast address.

It is important to free the memory allocated for the Table parameter using the FreeMibTable function when it is no longer needed to prevent memory leaks.

Requirements

Console Client Server
Windows Vista [desktop apps only] Windows Vista [desktop apps only] Windows Server 2008 [desktop apps only]
Header iprtrmib.h (include Iphlpapi.h)
Library Iphlpapi.lib
DLL Iphlpapi.dll

MIB_UNICASTADDRESS_TABLE Structure

Represents the table of unicast IP addresses on the local computer.


typedef struct _MIB_UNICASTADDRESS_TABLE {
  DWORD                 NumEntries;
  _Field_size_(NumEntries)
  MIB_UNICASTADDRESS_ROW Table[ANYSIZE_ARRAY];
} MIB_UNICASTADDRESS_TABLE, *PMIB_UNICASTADDRESS_TABLE;
                

MIB_UNICASTADDRESS_ROW Structure

Represents a unicast IP address entry.


typedef struct _MIB_UNICASTADDRESS_ROW {
  NET_IFINDEX          InterfaceIndex;
  ADDRESS_FAMILY       AddressFamily;
  union {
    SOCKADDR_IN  Ipv4;
    SOCKADDR_IN6 Ipv6;
  };
  _If_(AddressFamily == AF_INET)
  IP_PREFIX_ORIGIN     PrefixOrigin;
  IP_SUFFIX_ORIGIN     SuffixOrigin;
  IP_DAD_STATE         OnLinkPrefixOrigin;
  IP_DAD_STATE         PreferredLifetime;
  IP_DAD_STATE         ValidLifetime;
  ULONG                SkipPrefixLength;
} MIB_UNICASTADDRESS_ROW, *PMIB_UNICASTADDRESS_ROW;
                

See Also