Funzione GetNetworkParams (iphlpapi.h)
La funzione GetNetworkParams recupera i parametri di rete per il computer locale.
Sintassi
IPHLPAPI_DLL_LINKAGE DWORD GetNetworkParams(
[out] PFIXED_INFO pFixedInfo,
[in] PULONG pOutBufLen
);
Parametri
[out] pFixedInfo
Puntatore a un buffer contenente una struttura FIXED_INFO che riceve i parametri di rete per il computer locale, se la funzione ha avuto esito positivo. Questo buffer deve essere allocato dal chiamante prima di chiamare la funzione GetNetworkParams .
[in] pOutBufLen
Puntatore a una variabile ULONG che specifica le dimensioni della struttura FIXED_INFO . Se questa dimensione non è sufficiente per contenere le informazioni, GetNetworkParams compila questa variabile con le dimensioni necessarie e restituisce un codice di errore di ERROR_BUFFER_OVERFLOW.
Valore restituito
Se la funzione ha esito positivo, il valore restituito viene ERROR_SUCCESS.
Se la funzione ha esito negativo, il valore restituito è uno dei codici di errore seguenti.
Codice restituito | Descrizione |
---|---|
|
Il buffer per ricevere le informazioni sui parametri di rete è troppo piccolo. Questo valore viene restituito se il parametro pOutBufLen è troppo piccolo per contenere le informazioni sui parametri di rete o il parametro pFixedInfo è un puntatore NULL . Quando viene restituito questo codice di errore, il parametro pOutBufLen punta alle dimensioni del buffer necessarie. |
|
Alla funzione è stato passato un parametro non valido. Questo errore viene restituito se il parametro pOutBufLen è un puntatore NULL , il processo chiamante non ha accesso in lettura/scrittura alla memoria a cui punta pOutBufLen o il processo chiamante non ha accesso in scrittura alla memoria a cui punta il parametro pFixedInfo . |
|
Non esistono informazioni sui parametri di rete per il computer locale. |
|
La funzione GetNetworkParams non è supportata dal sistema operativo in esecuzione nel computer locale. |
|
Se la funzione ha esito negativo, usare FormatMessage per ottenere la stringa del messaggio per l'errore restituito. |
Commenti
La funzione GetNetworkParams viene usata per recuperare i parametri di rete per il computer locale. I parametri di rete vengono restituiti in una struttura FIXED_INFO . La memoria per la struttura FIXED_INFO deve essere allocata dall'applicazione. È responsabilità dell'applicazione liberare questa memoria quando non è più necessaria.
In Microsoft Windows Software Development Kit (Windows SDK) (SDK) viene definita la struttura FIXED_INFO_WIN2KSP1. Quando si compila un'applicazione se la piattaforma di destinazione è Windows 2000 con Service Pack 1 (SP1) e versioni successive (NTDDI_VERSION >= NTDDI_WIN2KSP1
, _WIN32_WINNT >= 0x0501
o WINVER >= 0x0501
), lo struct FIXED_INFO_WIN2KSP1 viene tipizzato nella struttura FIXED_INFO . Quando si compila un'applicazione se la piattaforma di destinazione non è Windows 2000 con SP1 e versioni successive, la struttura FIXED_INFO non è definita.
La funzione GetNetworkParams e la struttura FIXED_INFO sono supportate in Windows 98 e versioni successive. Tuttavia, per compilare un'applicazione per una piattaforma di destinazione precedente a Windows 2000 con Service Pack 1 (SP1), è necessario usare una versione precedente di Platform Software Development Kit (SDK).
Esempio
Nell'esempio seguente vengono recuperati i parametri di rete per il computer locale e vengono stampate le informazioni dai dati restituiti.
//
// 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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [app desktop | App UWP] |
Server minimo supportato | Windows 2000 Server [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | iphlpapi.h |
Libreria | Iphlpapi.lib |
DLL | Iphlpapi.dll |