Поделиться через


Функция GetNetworkParams (iphlpapi.h)

Функция GetNetworkParams извлекает сетевые параметры для локального компьютера.

Синтаксис

IPHLPAPI_DLL_LINKAGE DWORD GetNetworkParams(
  [out] PFIXED_INFO pFixedInfo,
  [in]  PULONG      pOutBufLen
);

Параметры

[out] pFixedInfo

Указатель на буфер, содержащий структуру FIXED_INFO , которая получает сетевые параметры для локального компьютера, если функция выполнена успешно. Этот буфер должен быть выделен вызывающим объектом перед вызовом функции GetNetworkParams .

[in] pOutBufLen

Указатель на переменную ULONG , указывающую размер структуры FIXED_INFO . Если этого размера недостаточно для хранения сведений, GetNetworkParams заполняет эту переменную требуемым размером и возвращает код ошибки ERROR_BUFFER_OVERFLOW.

Возвращаемое значение

Если функция завершается успешно, возвращаемое значение будет ERROR_SUCCESS.

Если функция завершается сбоем, возвращаемое значение представляет собой один из следующих кодов ошибок.

Код возврата Описание
ERROR_BUFFER_OVERFLOW
Буфер для получения сведений о параметрах сети слишком мал. Это значение возвращается, если параметр pOutBufLen слишком мал для хранения сведений о параметрах сети или параметр pFixedInfo был указателем NULL . При возврате этого кода ошибки параметр pOutBufLen указывает на требуемый размер буфера.
ERROR_INVALID_PARAMETER
В функцию передан недопустимый параметр. Эта ошибка возвращается, если параметр pOutBufLen является указателем NULL , вызывающий процесс не имеет доступа на чтение и запись к памяти, на которую указывает pOutBufLen, или вызывающий процесс не имеет доступа на запись в память, на которую указывает параметр pFixedInfo .
ERROR_NO_DATA
Сведения о параметрах сети для локального компьютера отсутствуют.
ERROR_NOT_SUPPORTED
Функция GetNetworkParams не поддерживается операционной системой, работающей на локальном компьютере.
Другое
Если функция завершается сбоем, используйте FormatMessage , чтобы получить строку сообщения для возвращаемой ошибки.

Комментарии

Функция GetNetworkParams используется для получения параметров сети для локального компьютера. Параметры сети возвращаются в структуре FIXED_INFO . Память для структуры FIXED_INFO должна быть выделена приложением. Приложение несет ответственность за освобождение этой памяти, когда она больше не нужна.

В microsoft пакет средств разработки программного обеспечения для Windows (SDK) определена структура FIXED_INFO_WIN2KSP1. При компиляции приложения, если целевой платформой является Windows 2000 с пакетом обновления 1 (SP1) и более поздних версий (NTDDI_VERSION >= NTDDI_WIN2KSP1, _WIN32_WINNT >= 0x0501или WINVER >= 0x0501), структура FIXED_INFO_WIN2KSP1 вводится в структуру FIXED_INFO . При компиляции приложения, если целевая платформа не является Windows 2000 с пакетом обновления 1 (SP1) и более поздних версий, структура FIXED_INFO не определена.

Функция GetNetworkParams и структура FIXED_INFO поддерживаются в Windows 98 и более поздних версий. Но для создания приложения для целевой платформы, предшествующей Windows 2000 с пакетом обновления 1 (SP1), необходимо использовать более раннюю версию пакета SDK для платформы.

Примеры

В следующем примере извлекаются параметры сети для локального компьютера и выводится информация из возвращенных данных.

//
// Link with IPHlpAPI.lib
//
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "IPHLPAPI.lib")

#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))

/* Note: could also use malloc() and free() */

int __cdecl main()
{

    FIXED_INFO *pFixedInfo;
    ULONG ulOutBufLen;
    DWORD dwRetVal;
    IP_ADDR_STRING *pIPAddr;

    pFixedInfo = (FIXED_INFO *) MALLOC(sizeof (FIXED_INFO));
    if (pFixedInfo == NULL) {
        printf("Error allocating memory needed to call GetNetworkParams\n");
        return 1;
    }
    ulOutBufLen = sizeof (FIXED_INFO);

// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
    if (GetNetworkParams(pFixedInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
        FREE(pFixedInfo);
        pFixedInfo = (FIXED_INFO *) MALLOC(ulOutBufLen);
        if (pFixedInfo == NULL) {
            printf("Error allocating memory needed to call GetNetworkParams\n");
            return 1;
        }
    }

    if (dwRetVal = GetNetworkParams(pFixedInfo, &ulOutBufLen) == NO_ERROR) {

        printf("Host Name: %s\n", pFixedInfo->HostName);
        printf("Domain Name: %s\n", pFixedInfo->DomainName);

        printf("DNS Servers:\n");
        printf("\t%s\n", pFixedInfo->DnsServerList.IpAddress.String);

        pIPAddr = pFixedInfo->DnsServerList.Next;
        while (pIPAddr) {
            printf("\t%s\n", pIPAddr->IpAddress.String);
            pIPAddr = pIPAddr->Next;
        }

        printf("Node Type: ");
        switch (pFixedInfo->NodeType) {
        case BROADCAST_NODETYPE:
            printf("Broadcast node\n");
            break;
        case PEER_TO_PEER_NODETYPE:
            printf("Peer to Peer node\n");
            break;
        case MIXED_NODETYPE:
            printf("Mixed node\n");
            break;
        case HYBRID_NODETYPE:
            printf("Hybrid node\n");
            break;
        default:
            printf("Unknown node type %0lx\n", pFixedInfo->NodeType);
            break;
        }

        printf("DHCP scope name: %s\n", pFixedInfo->ScopeId);

        if (pFixedInfo->EnableRouting)
            printf("Routing: enabled\n");
        else
            printf("Routing: disabled\n");

        if (pFixedInfo->EnableProxy)
            printf("ARP proxy: enabled\n");
        else
            printf("ARP Proxy: disabled\n");

        if (pFixedInfo->EnableDns)
            printf("DNS: enabled\n");
        else
            printf("DNS: disabled\n");

    } else {
        printf("GetNetworkParams failed with error: %d\n", dwRetVal);
        return 1;
    }

    if (pFixedInfo)
        FREE(pFixedInfo);

    return 0;
}


Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header iphlpapi.h
Библиотека Iphlpapi.lib
DLL Iphlpapi.dll

См. также раздел

FIXED_INFO

Справочник по вспомогательным функциям IP

Начальная страница вспомогательного ip-адреса