GetNetworkParams, fonction (iphlpapi.h)
La fonction GetNetworkParams récupère les paramètres réseau de l’ordinateur local.
Syntaxe
IPHLPAPI_DLL_LINKAGE DWORD GetNetworkParams(
[out] PFIXED_INFO pFixedInfo,
[in] PULONG pOutBufLen
);
Paramètres
[out] pFixedInfo
Pointeur vers une mémoire tampon qui contient une structure FIXED_INFO qui reçoit les paramètres réseau de l’ordinateur local, si la fonction a réussi. Cette mémoire tampon doit être allouée par l’appelant avant d’appeler la fonction GetNetworkParams .
[in] pOutBufLen
Pointeur vers une variable ULONG qui spécifie la taille de la structure FIXED_INFO . Si cette taille est insuffisante pour contenir les informations, GetNetworkParams remplit cette variable avec la taille requise et retourne un code d’erreur de ERROR_BUFFER_OVERFLOW.
Valeur retournée
Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.
Si la fonction échoue, la valeur de retour est l’un des codes d’erreur suivants.
Code de retour | Description |
---|---|
|
La mémoire tampon pour recevoir les informations de paramètre réseau est trop petite. Cette valeur est retournée si le paramètre pOutBufLen est trop petit pour contenir les informations de paramètre réseau ou si le paramètre pFixedInfo était un pointeur NULL . Lorsque ce code d’erreur est retourné, le paramètre pOutBufLen pointe vers la taille de mémoire tampon requise. |
|
Un paramètre non valide a été transmis à la fonction. Cette erreur est retournée si le paramètre pOutBufLen est un pointeur NULL , si le processus appelant n’a pas d’accès en lecture/écriture à la mémoire pointée par pOutBufLen, ou si le processus appelant n’a pas d’accès en écriture à la mémoire pointée par le paramètre pFixedInfo . |
|
Il n’existe aucune information de paramètre réseau pour l’ordinateur local. |
|
La fonction GetNetworkParams n’est pas prise en charge par le système d’exploitation s’exécutant sur l’ordinateur local. |
|
Si la fonction échoue, utilisez FormatMessage pour obtenir la chaîne de message correspondant à l’erreur retournée. |
Remarques
La fonction GetNetworkParams est utilisée pour récupérer les paramètres réseau de l’ordinateur local. Les paramètres réseau sont retournés dans une structure FIXED_INFO . La mémoire de la structure FIXED_INFO doit être allouée par l’application. Il incombe à l’application de libérer cette mémoire lorsqu’elle n’est plus nécessaire.
Dans microsoft Kit de développement logiciel Windows (Kit SDK Windows) (SDK), la structure FIXED_INFO_WIN2KSP1 est définie. Lors de la compilation d’une application si la plateforme cible est Windows 2000 avec Service Pack 1 (SP1) et versions ultérieures (NTDDI_VERSION >= NTDDI_WIN2KSP1
, _WIN32_WINNT >= 0x0501
ou WINVER >= 0x0501
), le FIXED_INFO_WIN2KSP1 struct est typé à la structure FIXED_INFO . Lors de la compilation d’une application si la plateforme cible n’est pas Windows 2000 avec SP1 et versions ultérieures, la structure FIXED_INFO n’est pas définie.
La fonction GetNetworkParams et la structure FIXED_INFO sont prises en charge sur Windows 98 et versions ultérieures. Toutefois, pour créer une application pour une plateforme cible antérieure à Windows 2000 avec Service Pack 1 (SP1), une version antérieure du Kit de développement logiciel (SDK) de plateforme doit être utilisée.
Exemples
L’exemple suivant récupère les paramètres réseau de l’ordinateur local et imprime des informations à partir des données retournées.
//
// 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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | iphlpapi.h |
Bibliothèque | Iphlpapi.lib |
DLL | Iphlpapi.dll |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour