Función GetNetworkParams (iphlpapi.h)
La función GetNetworkParams recupera los parámetros de red del equipo local.
Sintaxis
IPHLPAPI_DLL_LINKAGE DWORD GetNetworkParams(
[out] PFIXED_INFO pFixedInfo,
[in] PULONG pOutBufLen
);
Parámetros
[out] pFixedInfo
Puntero a un búfer que contiene una estructura de FIXED_INFO que recibe los parámetros de red para el equipo local, si la función se realizó correctamente. El autor de la llamada debe asignar este búfer antes de llamar a la función GetNetworkParams .
[in] pOutBufLen
Puntero a una variable ULONG que especifica el tamaño de la estructura FIXED_INFO . Si este tamaño no es suficiente para contener la información, GetNetworkParams rellena esta variable con el tamaño necesario y devuelve un código de error de ERROR_BUFFER_OVERFLOW.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto se ERROR_SUCCESS.
Si se produce un error en la función, el valor devuelto es uno de los siguientes códigos de error.
Código devuelto | Descripción |
---|---|
|
El búfer para recibir la información de parámetros de red es demasiado pequeño. Este valor se devuelve si el parámetro pOutBufLen es demasiado pequeño para contener la información del parámetro de red o el parámetro pFixedInfo era un puntero NULL . Cuando se devuelve este código de error, el parámetro pOutBufLen apunta al tamaño de búfer necesario. |
|
Se pasó un parámetro no válido a la función. Este error se devuelve si el parámetro pOutBufLen es un puntero NULL , el proceso de llamada no tiene acceso de lectura y escritura a la memoria a la que apunta pOutBufLen o el proceso de llamada no tiene acceso de escritura a la memoria a la que apunta el parámetro pFixedInfo . |
|
No existe información de parámetros de red para el equipo local. |
|
El sistema operativo que se ejecuta en el equipo local no admite la función GetNetworkParams . |
|
Si se produce un error en la función, use FormatMessage para obtener la cadena de mensaje para el error devuelto. |
Comentarios
La función GetNetworkParams se usa para recuperar parámetros de red para el equipo local. Los parámetros de red se devuelven en una estructura FIXED_INFO . La aplicación debe asignar la memoria de la estructura FIXED_INFO . Es responsabilidad de la aplicación liberar esta memoria cuando ya no se necesite.
En Microsoft Kit de desarrollo de software de Windows (SDK), se define la estructura de FIXED_INFO_WIN2KSP1. Al compilar una aplicación si la plataforma de destino es Windows 2000 con Service Pack 1 (SP1) y versiones posteriores (NTDDI_VERSION >= NTDDI_WIN2KSP1
, _WIN32_WINNT >= 0x0501
o WINVER >= 0x0501
), la estructura FIXED_INFO_WIN2KSP1 se escribe en la estructura FIXED_INFO . Al compilar una aplicación si la plataforma de destino no es Windows 2000 con SP1 y versiones posteriores, la estructura de FIXED_INFO no está definida.
La función GetNetworkParams y la estructura FIXED_INFO se admiten en Windows 98 y versiones posteriores. Pero para compilar una aplicación para una plataforma de destino anterior a Windows 2000 con Service Pack 1 (SP1), se debe usar una versión anterior del Kit de desarrollo de software de plataforma (SDK).
Ejemplos
En el ejemplo siguiente se recuperan los parámetros de red del equipo local y se imprime información de los datos devueltos.
//
// 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 | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | iphlpapi.h |
Library | Iphlpapi.lib |
Archivo DLL | Iphlpapi.dll |