IP_INTERFACE_INFO-Struktur (ipexport.h)
Die IP_INTERFACE_INFO-Struktur enthält eine Liste der Netzwerkschnittstellenadapter, deren IPv4 auf dem lokalen System aktiviert ist.
Syntax
typedef struct _IP_INTERFACE_INFO {
LONG NumAdapters;
IP_ADAPTER_INDEX_MAP Adapter[1];
} IP_INTERFACE_INFO, *PIP_INTERFACE_INFO;
Member
NumAdapters
Die Anzahl der Adapter, die im Array aufgeführt sind, auf das der Adaptermember verweist.
Adapter[1]
Ein Array von IP_ADAPTER_INDEX_MAP Strukturen. Jede Struktur ordnet einen Adapterindex dem Namen dieses Adapters zu. Der Adapterindex kann sich ändern, wenn ein Adapter deaktiviert und dann aktiviert wird, oder unter anderen Umständen, und er sollte nicht als persistent betrachtet werden.
Hinweise
Die IP_INTERFACE_INFO-Struktur ist spezifisch für Netzwerkadapter mit aktiviertem IPv4. Die IP_INTERFACE_INFO-Struktur enthält die Anzahl von Netzwerkadaptern mit aktiviertem IPv4 auf dem lokalen System sowie ein Array von IP_ADAPTER_INDEX_MAP Strukturen mit Informationen zu jedem Netzwerkadapter mit aktiviertem IPv4. Die IP_INTERFACE_INFO-Struktur enthält mindestens eine IP_ADAPTER_INDEX_MAP-Struktur , auch wenn der NumAdapters-Member der IP_INTERFACE_INFO-Struktur angibt, dass keine Netzwerkadapter mit IPv4 aktiviert sind. Wenn der NumAdapters-Member der IP_INTERFACE_INFO-Struktur null ist, ist der Wert der Elemente der einzelnen IP_ADAPTER_INDEX_MAP-Struktur , die in der IP_INTERFACE_INFO-Struktur zurückgegeben wird, nicht definiert.
Die IP_INTERFACE_INFO-Struktur kann nicht verwendet werden, um Informationen zur Loopbackschnittstelle zurückzugeben.
Unter Windows Vista und höher kann der Name-Member der IP_ADAPTER_INDEX_MAP-Struktur in der IP_INTERFACE_INFO-Struktur eine Unicode-Zeichenfolge der GUID für die Netzwerkschnittstelle sein (die Zeichenfolge beginnt mit dem Zeichen '{').
Diese Struktur ist in der Ipexport.h-Headerdatei definiert, die automatisch in der Headerdatei Iphlpapi.h enthalten ist. Die Ipexport.h-Headerdatei sollte niemals direkt verwendet werden.
Beispiele
Im folgenden Beispiel wird die Liste der Netzwerkadapter mit aktiviertem IPv4 im lokalen System abgerufen und verschiedene Eigenschaften des ersten Adapters ausgegeben.
// Declare and initialize variables
PIP_INTERFACE_INFO pInfo;
pInfo = (IP_INTERFACE_INFO *) malloc( sizeof(IP_INTERFACE_INFO) );
ULONG ulOutBufLen = 0;
DWORD dwRetVal = 0;
// Make an initial call to GetInterfaceInfo to get
// the necessary size in the ulOutBufLen variable
if ( GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) {
free(pInfo);
pInfo = (IP_INTERFACE_INFO *) malloc (ulOutBufLen);
}
// Make a second call to GetInterfaceInfo to get
// the actual data we need
if ((dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen)) == NO_ERROR ) {
printf("\tAdapter Name: %ws\n", pInfo->Adapter[0].Name);
printf("\tAdapter Index: %ld\n", pInfo->Adapter[0].Index);
printf("\tNum Adapters: %ld\n", pInfo->NumAdapters);
// free memory allocated
free(pInfo);
pInfo = NULL;
}
else if (dwRetVal == ERROR_NO_DATA) {
printf("There are no network adapters with IPv4 enabled on the local system\n");
}
else {
printf("GetInterfaceInfo failed.\n");
LPVOID lpMsgBuf;
if (FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwRetVal,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL )) {
printf("\tError: %s", lpMsgBuf);
}
LocalFree( lpMsgBuf );
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Kopfzeile | ipexport.h (include Iphlpapi.h) |