Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die GetNetworkParams-Funktion füllt einen Zeiger auf eine FIXED_INFO-Struktur mit Daten zu den aktuellen Netzwerkeinstellungen aus.
So verwenden Sie GetNetworkParams
Deklarieren Sie einen Zeiger auf ein FIXED_INFO-Objekt namens pFixedInfo und ein ULONG-Objekt namens ulOutBufLen. Diese Variablen werden als Parameter an die GetNetworkParams-Funktion übergeben. Erstellen Sie auch eine DWORD-VariabledwRetVal (wird für die Fehlerüberprüfung verwendet).
FIXED_INFO *pFixedInfo; IP_ADDR_STRING *pIPAddr; ULONG ulOutBufLen; DWORD dwRetVal;Zuordnen von Arbeitsspeicher für die Strukturen.
Hinweis
Die Größe von ulOutBufLen reicht nicht aus, um die Informationen zu enthalten. Mehr dazu finden Sie im nächsten Schritt.
pFixedInfo = (FIXED_INFO *) malloc(sizeof (FIXED_INFO)); ulOutBufLen = sizeof (FIXED_INFO);Führen Sie einen ersten Aufruf von GetNetworkParams durch, um die für die ulOutBufLen-Variable erforderliche Größe zu erhalten.
Hinweis
Diese Funktionsfunktion schlägt fehl und wird verwendet, um sicherzustellen, dass die UlOutBufLen-Variable eine Größe angibt, die ausreicht, um alle an pFixedInfo zurückgegebenen Daten zu speichern. Dies ist ein gängiges Programmiermodell für Datenstrukturen und Funktionen dieses Typs.
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"); } }Führen Sie einen zweiten Aufruf von GetNetworkParams durch, indem Sie die allgemeine Fehlerüberprüfung verwenden und ihren Wert an die DWORD-VariabledwRetVal zurückgeben. wird für eine erweiterte Fehlerüberprüfung verwendet.
if (dwRetVal = GetNetworkParams(pFixedInfo, &ulOutBufLen) != NO_ERROR) { printf("GetNetworkParams failed with error %d\n", dwRetVal); if (pFixedInfo) { free(pFixedInfo); } }Wenn der Aufruf erfolgreich war, greifen Sie auf die Daten aus der pFixedInfo-Datenstruktur zu.
printf("\tHost Name: %s\n", pFixedInfo->HostName); printf("\tDomain Name: %s\n", pFixedInfo->DomainName); printf("\tDNS Servers:\n"); printf("\t\t%s\n", pFixedInfo->DnsServerList.IpAddress.String); pIPAddr = pFixedInfo->DnsServerList.Next; while (pIPAddr) { printf("\t\t%s\n", pIPAddr->IpAddress.String); pIPAddr = pIPAddr->Next; } printf("\tNode Type: "); switch (pFixedInfo->NodeType) { case 1: printf("%s\n", "Broadcast"); break; case 2: printf("%s\n", "Peer to peer"); break; case 4: printf("%s\n", "Mixed"); break; case 8: printf("%s\n", "Hybrid"); break; default: printf("\n"); } printf("\tNetBIOS Scope ID: %s\n", pFixedInfo->ScopeId); if (pFixedInfo->EnableRouting) printf("\tIP Routing Enabled: Yes\n"); else printf("\tIP Routing Enabled: No\n"); if (pFixedInfo->EnableProxy) printf("\tWINS Proxy Enabled: Yes\n"); else printf("\tWINS Proxy Enabled: No\n"); if (pFixedInfo->EnableDns) printf("\tNetBIOS Resolution Uses DNS: Yes\n"); else printf("\tNetBIOS Resolution Uses DNS: No\n");Geben Sie den für die pFixedInfo-Struktur zugewiesenen Arbeitsspeicher frei.
if (pFixedInfo) { free(pFixedInfo); pFixedInfo = NULL; }
Nächster Schritt: Verwalten von Netzwerkadaptern mithilfe von GetAdaptersInfo
Vorheriger Schritt: Erstellen einer einfachen IP-Hilfsanwendung