Freigeben über


Abrufen von Informationen mithilfe von GetNetworkParams

Die GetNetworkParams-Funktion füllt einen Zeiger auf eine FIXED_INFO-Struktur mit Daten zu den aktuellen Netzwerkeinstellungen aus.

So verwenden Sie GetNetworkParams

  1. 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;
    
  2. 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);
    
  3. 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");
            }
        }
    
  4. 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);
            }
        }        
    
  5. 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");
    
  6. 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