GetAdapterIndex()返回错误的索引

时间:2012-07-03 22:31:40

标签: winapi network-programming

我希望按名称获取适配器索引,经过几天的搜索,我发现GetAdapterIndex()函数:

#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#pragma comment(lib, "IPHLPAPI.lib")

#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x)) 
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))

int main()
{
    DWORD res;
    DWORD rs;
    ULONG IfIndex;
    LPWSTR AdapterName;
    int i = 0;
    res = GetAdapterIndex(L"AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport", &IfIndex);
    if(res == NO_ERROR)
        printf("Adapter Index: %ld\n", IfIndex);

    res = GetNumberOfInterfaces(&rs);
    if(res == NO_ERROR)
        printf("Number of Adapters: %ld\n", rs);
return 0;
}

首先:它不会返回我选择的特定适配器名称的索引。 第二:它返回我有两个适配器,即使我只有一个。

1 个答案:

答案 0 :(得分:0)

您可以使用GetIfEntry打印网络接口的名称和描述,索引范围从1到GetNumberOfInterfaces返回的值。所有名称都是\DEVICE\TCPIP_{846EE342-7039-11DE-9D20-806E6F6E6963}形式,这解释了为什么你没有使用漂亮的名字找到你的界面。