Compartilhar via


Função GetNetworkParams (iphlpapi.h)

A função GetNetworkParams recupera parâmetros de rede para o computador local.

Sintaxe

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

Parâmetros

[out] pFixedInfo

Um ponteiro para um buffer que contém uma estrutura FIXED_INFO que recebe os parâmetros de rede para o computador local, se a função foi bem-sucedida. Esse buffer deve ser alocado pelo chamador antes de chamar a função GetNetworkParams .

[in] pOutBufLen

Um ponteiro para uma variável ULONG que especifica o tamanho da estrutura FIXED_INFO . Se esse tamanho for insuficiente para conter as informações, GetNetworkParams preencherá essa variável com o tamanho necessário e retornará um código de erro de ERROR_BUFFER_OVERFLOW.

Retornar valor

Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS.

Se a função falhar, o valor retornado será um dos códigos de erro a seguir.

Código de retorno Descrição
ERROR_BUFFER_OVERFLOW
O buffer para receber as informações de parâmetro de rede é muito pequeno. Esse valor será retornado se o parâmetro pOutBufLen for muito pequeno para manter as informações do parâmetro de rede ou o parâmetro pFixedInfo for um ponteiro NULL . Quando esse código de erro é retornado, o parâmetro pOutBufLen aponta para o tamanho do buffer necessário.
ERROR_INVALID_PARAMETER
Um parâmetro inválido foi passado para a função. Esse erro será retornado se o parâmetro pOutBufLen for um ponteiro NULL , o processo de chamada não tiver acesso de leitura/gravação à memória apontada por pOutBufLen ou o processo de chamada não tiver acesso de gravação à memória apontada pelo parâmetro pFixedInfo .
ERROR_NO_DATA
Não existe nenhuma informação de parâmetro de rede para o computador local.
ERROR_NOT_SUPPORTED
A função GetNetworkParams não é compatível com o sistema operacional em execução no computador local.
Outros
Se a função falhar, use FormatMessage para obter a cadeia de caracteres de mensagem para o erro retornado.

Comentários

A função GetNetworkParams é usada para recuperar parâmetros de rede para o computador local. Os parâmetros de rede são retornados em uma estrutura FIXED_INFO . A memória da estrutura FIXED_INFO deve ser alocada pelo aplicativo. É responsabilidade do aplicativo liberar essa memória quando ela não for mais necessária.

No Microsoft Software Development Kit do Windows (SDK do Windows) (SDK), a estrutura FIXED_INFO_WIN2KSP1 é definida. Ao compilar um aplicativo se a plataforma de destino for o Windows 2000 com Service Pack 1 (SP1) e posterior (NTDDI_VERSION >= NTDDI_WIN2KSP1, _WIN32_WINNT >= 0x0501ou WINVER >= 0x0501), o struct FIXED_INFO_WIN2KSP1 será digitado para a estrutura FIXED_INFO . Ao compilar um aplicativo se a plataforma de destino não for o Windows 2000 com SP1 e posterior, a estrutura FIXED_INFO será indefinida.

A função GetNetworkParams e a estrutura FIXED_INFO têm suporte no Windows 98 e posterior. Porém, para criar um aplicativo para uma plataforma de destino anterior ao Windows 2000 com Service Pack 1 (SP1), uma versão anterior do SDK (Platform Software Development Kit) deve ser usada.

Exemplos

O exemplo a seguir recupera os parâmetros de rede para o computador local e imprime informações dos dados retornados.

//
// 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;
}


Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho iphlpapi.h
Biblioteca Iphlpapi.lib
DLL Iphlpapi.dll

Confira também

FIXED_INFO

Referência de função auxiliar de IP

Página Inicial do Auxiliar de IP