Alberto,

You need to enumerate the data from GetAdaptersInfo to get the information.

Gemini shows the following when asking

Code:
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>


#pragma comment(lib, "iphlpapi.lib")


int main() {
    // Initialize Winsock
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        printf("WSAStartup failed.\n");
        return 1;
    }


    // Get local IP addresses
    PIP_ADAPTER_INFO AdapterInfo;
    ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
    AdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));
    if (AdapterInfo == NULL) {
        printf("Error allocating memory needed to call GetAdaptersinfo\n");
        WSACleanup();
        return 1;
    }


    // Make an initial call to GetAdaptersInfo to get the necessary size into the ulOutBufLen variable
    if (GetAdaptersInfo(AdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
        free(AdapterInfo);
        AdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);
        if (AdapterInfo == NULL) {
            printf("Error allocating memory needed to call GetAdaptersinfo\n");
            WSACleanup();
            return 1;
        }
    }


    if (GetAdaptersInfo(AdapterInfo, &ulOutBufLen) == NO_ERROR) {
        PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
        while (pAdapterInfo) {
            PIP_ADDR_STRING pAddrString = &pAdapterInfo->IpAddressList;
            while (pAddrString) {
                if (pAddrString->IpAddress.String[0] != '1' || 
                    pAddrString->IpAddress.String[1] != '2' || 
                    pAddrString->IpAddress.String[2] != '7' || 
                    pAddrString->IpAddress.String[3] != '.') { // Exclude loopback addresses
                    printf("IP Address: %s\n", pAddrString->IpAddress.String);
                }
                pAddrString = pAddrString->Next;
            }
            pAdapterInfo = pAdapterInfo->Next;
        }
    } else {
        printf("Call to GetAdaptersInfo failed.\n");
    }


    free(AdapterInfo);
    WSACleanup();
    return 0;
}
that is not DataFlex code but it gives you an idea of how to get it.