Bagikan melalui


Mengambil Informasi Menggunakan GetNetworkParams

Fungsi GetNetworkParams mengisi penunjuk ke struktur FIXED_INFO dengan data tentang pengaturan jaringan saat ini.

Untuk menggunakan GetNetworkParams

  1. Deklarasikan penunjuk ke objek FIXED_INFO yang disebut pFixedInfo, dan objek ULONG yang disebut ulOutBufLen. Variabel ini diteruskan sebagai parameter ke fungsi GetNetworkParams . Buat juga variabel DWORDdwRetVal (digunakan untuk pemeriksaan kesalahan).

        FIXED_INFO *pFixedInfo;
        IP_ADDR_STRING *pIPAddr;
    
        ULONG ulOutBufLen;
        DWORD dwRetVal;
    
  2. Alokasikan memori untuk struktur.

    Catatan

    Ukuran ulOutBufLen tidak cukup untuk menyimpan informasi. Lihat langkah selanjutnya.

     

        pFixedInfo = (FIXED_INFO *) malloc(sizeof (FIXED_INFO));
        ulOutBufLen = sizeof (FIXED_INFO);
    
  3. Lakukan panggilan awal ke GetNetworkParams untuk mendapatkan ukuran yang diperlukan untuk variabel ulOutBufLen .

    Catatan

    Fungsi fungsi ini akan gagal, dan digunakan untuk memastikan bahwa variabel ulOutBufLen menentukan ukuran yang cukup untuk menyimpan semua data yang dikembalikan ke pFixedInfo. Ini adalah model pemrograman umum untuk struktur data dan fungsi jenis ini.

     

        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. Lakukan panggilan kedua ke GetNetworkParams menggunakan pemeriksaan kesalahan umum dan mengembalikan nilainya ke variabel DWORDdwRetVal; digunakan untuk pemeriksaan kesalahan tingkat lanjut.

        if (dwRetVal = GetNetworkParams(pFixedInfo, &ulOutBufLen) != NO_ERROR) {
            printf("GetNetworkParams failed with error %d\n", dwRetVal);
            if (pFixedInfo) {
                free(pFixedInfo);
            }
        }        
    
  5. Jika panggilan berhasil, akses data dari struktur data pFixedInfo .

            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. Bebaskan memori apa pun yang dialokasikan untuk struktur pFixedInfo .

        if (pFixedInfo) {
            free(pFixedInfo);
            pFixedInfo = NULL;
        }
    

Langkah Selanjutnya: Mengelola adaptor jaringan menggunakan GetAdaptersInfo

Langkah Sebelumnya: Membuat Aplikasi Pembantu IP Dasar