Bagikan melalui


struktur IP_ADAPTER_INFO (iptypes.h)

Struktur IP_ADAPTER_INFO berisi informasi tentang adaptor jaringan tertentu pada komputer lokal.

Sintaks

typedef struct _IP_ADAPTER_INFO {
  struct _IP_ADAPTER_INFO *Next;
  DWORD                   ComboIndex;
  char                    AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
  char                    Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
  UINT                    AddressLength;
  BYTE                    Address[MAX_ADAPTER_ADDRESS_LENGTH];
  DWORD                   Index;
  UINT                    Type;
  UINT                    DhcpEnabled;
  PIP_ADDR_STRING         CurrentIpAddress;
  IP_ADDR_STRING          IpAddressList;
  IP_ADDR_STRING          GatewayList;
  IP_ADDR_STRING          DhcpServer;
  BOOL                    HaveWins;
  IP_ADDR_STRING          PrimaryWinsServer;
  IP_ADDR_STRING          SecondaryWinsServer;
  time_t                  LeaseObtained;
  time_t                  LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;

Anggota

Next

Jenis: struct _IP_ADAPTER_INFO*

Penunjuk ke adaptor berikutnya dalam daftar adaptor.

ComboIndex

Jenis: DWORD

Dicadangkan.

AdapterName[MAX_ADAPTER_NAME_LENGTH + 4]

Jenis: char[MAX_ADAPTER_NAME_LENGTH + 4]

String karakter ANSI dari nama adaptor.

Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]

Jenis: char[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]

String karakter ANSI yang berisi deskripsi adaptor.

AddressLength

Jenis: UINT

Panjang, dalam byte, dari alamat perangkat keras untuk adaptor.

Address[MAX_ADAPTER_ADDRESS_LENGTH]

Jenis: BYTE[MAX_ADAPTER_ADDRESS_LENGTH]

Alamat perangkat keras untuk adaptor direpresentasikan sebagai array BYTE .

Index

Jenis: DWORD

Indeks adaptor.

Indeks adaptor dapat berubah ketika adaptor dinonaktifkan dan kemudian diaktifkan, atau dalam keadaan lain, dan tidak boleh dianggap persisten.

Type

Jenis: UINT

Jenis adaptor. Nilai yang mungkin untuk jenis adaptor tercantum dalam file header Ipifcons.h .

Tabel di bawah ini mencantumkan nilai umum untuk jenis adaptor meskipun nilai lain dimungkinkan pada Windows Vista dan yang lebih baru.

Nilai Makna
MIB_IF_TYPE_OTHER
1
Beberapa jenis antarmuka jaringan lainnya.
MIB_IF_TYPE_ETHERNET
6
Antarmuka jaringan Ethernet.
IF_TYPE_ISO88025_TOKENRING
9
MIB_IF_TYPE_TOKENRING
MIB_IF_TYPE_PPP
23
Antarmuka jaringan PPP.
MIB_IF_TYPE_LOOPBACK
24
Antarmuka jaringan loopback perangkat lunak.
MIB_IF_TYPE_SLIP
28
Antarmuka jaringan ATM.
IF_TYPE_IEEE80211
71
Antarmuka jaringan nirkabel IEEE 802.11.
Catatan Tipe adapter ini dikembalikan pada Windows Vista dan yang lebih baru. Pada Windows Server 2003 dan Windows XP, antarmuka jaringan nirkabel IEEE 802.11 mengembalikan jenis adaptor MIB_IF_TYPE_ETHERNET.
 

DhcpEnabled

Jenis: UINT

Nilai opsi yang menentukan apakah protokol konfigurasi host dinamis (DHCP) diaktifkan untuk adaptor ini.

CurrentIpAddress

Jenis: PIP_ADDR_STRING

Dicadangkan.

IpAddressList

Jenis: IP_ADDR_STRING

Daftar alamat IPv4 yang terkait dengan adaptor ini direpresentasikan sebagai daftar tertaut struktur IP_ADDR_STRING . Adaptor dapat memiliki beberapa alamat IPv4 yang ditetapkan untuk itu.

GatewayList

Jenis: IP_ADDR_STRING

Alamat IPv4 gateway untuk adaptor ini direpresentasikan sebagai daftar tertaut struktur IP_ADDR_STRING . Adaptor dapat memiliki beberapa alamat gateway IPv4 yang ditetapkan untuknya. Daftar ini biasanya berisi satu entri untuk alamat IPv4 gateway default untuk adaptor ini.

DhcpServer

Jenis: IP_ADDR_STRING

Alamat IPv4 server DHCP untuk adaptor ini direpresentasikan sebagai daftar tertaut struktur IP_ADDR_STRING . Daftar ini berisi entri tunggal untuk alamat IPv4 server DHCP untuk adaptor ini. Nilai 255.255.255.255 menunjukkan server DHCP tidak dapat dicapai, atau sedang dalam proses tercapai.

Anggota ini hanya valid ketika anggota DhcpEnabled bukan nol.

HaveWins

Jenis: BOOL

Nilai opsi yang menentukan apakah adaptor ini menggunakan Windows Internet Name Service (WINS).

PrimaryWinsServer

Jenis: IP_ADDR_STRING

Alamat IPv4 server WINS utama direpresentasikan sebagai daftar tertaut struktur IP_ADDR_STRING . Daftar ini berisi satu entri untuk alamat IPv4 server WINS utama untuk adaptor ini.

Anggota ini hanya valid ketika anggota HaveWinstrue.

SecondaryWinsServer

Jenis: IP_ADDR_STRING

Alamat IPv4 dari server WINS sekunder direpresentasikan sebagai daftar tertaut struktur IP_ADDR_STRING . Adaptor dapat memiliki beberapa alamat server WINS sekunder yang ditetapkan untuk itu.

Anggota ini hanya valid ketika anggota HaveWinstrue.

LeaseObtained

Jenis: time_t

Waktu ketika sewa DHCP saat ini diperoleh.

Anggota ini hanya valid ketika anggota DhcpEnabled bukan nol.

LeaseExpires

Jenis: time_t

Waktu ketika sewa DHCP saat ini kedaluwarsa.

Anggota ini hanya valid ketika anggota DhcpEnabled bukan nol.

Keterangan

Struktur IP_ADAPTER_INFO terbatas pada informasi IPv4 tentang adaptor jaringan tertentu di komputer lokal. Struktur IP_ADAPTER_INFO diambil dengan memanggil fungsi GetAdaptersInfo .

Saat menggunakan Visual Studio 2005 dan yang lebih baru, time_t datatype default ke datatype 8-byte, bukan datatype 4-byte yang digunakan untuk anggota LeaseObtained dan LeaseExpires pada platform 32-bit. Untuk menggunakan struktur IP_ADAPTER_INFO dengan benar pada platform 32-bit, tentukan _USE_32BIT_TIME_T (gunakan -D _USE_32BIT_TIME_T sebagai opsi, misalnya) saat mengkompilasi aplikasi untuk memaksa jenis data time_t ke jenis data 4-byte.

Untuk digunakan pada Windows XP dan yang lebih baru, struktur IP_ADAPTER_ADDRESSES berisi informasi IPv4 dan IPv6. Fungsi GetAdaptersAddresses mengambil informasi adaptor IPv4 dan IPv6.

Contoh

Contoh ini mengambil informasi adaptor dan mencetak berbagai properti dari setiap adaptor.

#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <stdlib.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()
{

    /* Declare and initialize variables */

// It is possible for an adapter to have multiple
// IPv4 addresses, gateways, and secondary WINS servers
// assigned to the adapter. 
//
// Note that this sample code only prints out the 
// first entry for the IP address/mask, and gateway, and
// the primary and secondary WINS server for each adapter. 

    PIP_ADAPTER_INFO pAdapterInfo;
    PIP_ADAPTER_INFO pAdapter = NULL;
    DWORD dwRetVal = 0;
    UINT i;

/* variables used to print DHCP time info */
    struct tm newtime;
    char buffer[32];
    errno_t error;

    ULONG ulOutBufLen = sizeof (IP_ADAPTER_INFO);
    pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(sizeof (IP_ADAPTER_INFO));
    if (pAdapterInfo == NULL) {
        printf("Error allocating memory needed to call GetAdaptersinfo\n");
        return 1;
    }
// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
    if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
        FREE(pAdapterInfo);
        pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(ulOutBufLen);
        if (pAdapterInfo == NULL) {
            printf("Error allocating memory needed to call GetAdaptersinfo\n");
            return 1;
        }
    }

    if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
        pAdapter = pAdapterInfo;
        while (pAdapter) {
            printf("\tComboIndex: \t%d\n", pAdapter->ComboIndex);
            printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
            printf("\tAdapter Desc: \t%s\n", pAdapter->Description);
            printf("\tAdapter Addr: \t");
            for (i = 0; i < pAdapter->AddressLength; i++) {
                if (i == (pAdapter->AddressLength - 1))
                    printf("%.2X\n", (int) pAdapter->Address[i]);
                else
                    printf("%.2X-", (int) pAdapter->Address[i]);
            }
            printf("\tIndex: \t%d\n", pAdapter->Index);
            printf("\tType: \t");
            switch (pAdapter->Type) {
            case MIB_IF_TYPE_OTHER:
                printf("Other\n");
                break;
            case MIB_IF_TYPE_ETHERNET:
                printf("Ethernet\n");
                break;
            case MIB_IF_TYPE_TOKENRING:
                printf("Token Ring\n");
                break;
            case MIB_IF_TYPE_FDDI:
                printf("FDDI\n");
                break;
            case MIB_IF_TYPE_PPP:
                printf("PPP\n");
                break;
            case MIB_IF_TYPE_LOOPBACK:
                printf("Lookback\n");
                break;
            case MIB_IF_TYPE_SLIP:
                printf("Slip\n");
                break;
            default:
                printf("Unknown type %ld\n", pAdapter->Type);
                break;
            }

            printf("\tIP Address: \t%s\n",
                   pAdapter->IpAddressList.IpAddress.String);
            printf("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String);

            printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
            printf("\t***\n");

            if (pAdapter->DhcpEnabled) {
                printf("\tDHCP Enabled: Yes\n");
                printf("\t  DHCP Server: \t%s\n",
                       pAdapter->DhcpServer.IpAddress.String);

                printf("\t  Lease Obtained: ");
                /* Display local time */
                error = _localtime32_s(&newtime, (__time32_t*) &pAdapter->LeaseObtained);
                if (error)
                    printf("Invalid Argument to _localtime32_s\n");
                else {
                    // Convert to an ASCII representation 
                    error = asctime_s(buffer, 32, &newtime);
                    if (error)
                        printf("Invalid Argument to asctime_s\n");
                    else
                        /* asctime_s returns the string terminated by \n\0 */
                        printf("%s", buffer);
                }

                printf("\t  Lease Expires:  ");
                error = _localtime32_s(&newtime, (__time32_t*) &pAdapter->LeaseExpires);
                if (error)
                    printf("Invalid Argument to _localtime32_s\n");
                else {
                    // Convert to an ASCII representation 
                    error = asctime_s(buffer, 32, &newtime);
                    if (error)
                        printf("Invalid Argument to asctime_s\n");
                    else
                        /* asctime_s returns the string terminated by \n\0 */
                        printf("%s", buffer);
                }
            } else
                printf("\tDHCP Enabled: No\n");

            if (pAdapter->HaveWins) {
                printf("\tHave Wins: Yes\n");
                printf("\t  Primary Wins Server:    %s\n",
                       pAdapter->PrimaryWinsServer.IpAddress.String);
                printf("\t  Secondary Wins Server:  %s\n",
                       pAdapter->SecondaryWinsServer.IpAddress.String);
            } else
                printf("\tHave Wins: No\n");
            pAdapter = pAdapter->Next;
            printf("\n");
        }
    } else {
        printf("GetAdaptersInfo failed with error: %d\n", dwRetVal);

    }
    if (pAdapterInfo)
        FREE(pAdapterInfo);

    return 0;
}

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header iptypes.h (termasuk Iphlpapi.h)

Lihat juga

GetAdaptersAddresses

GetAdaptersInfo

Halaman Mulai Pembantu IP

Struktur Pembantu IP

IP_ADAPTER_ADDRESSES

IP_ADDRESS_STRING

IP_ADDR_STRING