Вы можете получить большую часть этого с GetIfTable2
и GetIfEntry2
.Если вам нужна совместимость с XP и более ранними версиями, вам нужно вместо этого взглянуть на GetIfTable
и GetIfEntry
.Функции *2
дают больше информации, но работают только в Vista и более новых версиях.
Я не верю, что оба будут показывать задержку - для этого вам в значительной степени необходимо провести измерения.Аналогично, пропускная способность будет просто номинальной пропускной способностью адаптера (например, 100 Мбит / с или 1000 Мбит / с), а не той, которую вы обязательно можете ожидать при взаимодействии с любым конкретным хостом.код, который я лежал, должен показать общее представление о том, как использовать эти функции:
#include <windows.h>
#include <iphlpapi.h>
#include <stdlib.h>
#include <stdio.h>
int main() {
MIB_IFTABLE *interfaces;
unsigned long size = 0;
int i, j;
GetIfTable(interfaces, &size, FALSE);
interfaces = (MIB_IFTABLE *)malloc(size);
GetIfTable(interfaces, &size, TRUE);
for (i=0; i<interfaces->dwNumEntries; i++) {
MIB_IFROW &xf = interfaces->table[i];
printf("%s\n\t", xf.bDescr);
for (j=0; j<xf.dwPhysAddrLen; j++) {
printf("%2.2X", xf.bPhysAddr[j]);
if ( j!= xf.dwPhysAddrLen-1)
printf(":");
}
printf("\n");
switch(xf.dwType) {
case MIB_IF_TYPE_ETHERNET:
printf("Ethernet");
break;
case MIB_IF_TYPE_FDDI:
printf("FDDI");
break;
case MIB_IF_TYPE_TOKENRING:
printf("Token Ring");
break;
case MIB_IF_TYPE_LOOPBACK:
printf("Loopback adapter");
break;
case MIB_IF_TYPE_OTHER:
printf("Other");
break;
}
printf("\n");
}
return 0;
}