IP_INTERFACE_INFO 構造体 (ipexport.h)

IP_INTERFACE_INFO構造体には、ローカル システムで IPv4 が有効になっているネットワーク インターフェイス アダプターの一覧が含まれています。

構文

typedef struct _IP_INTERFACE_INFO {
  LONG                 NumAdapters;
  IP_ADAPTER_INDEX_MAP Adapter[1];
} IP_INTERFACE_INFO, *PIP_INTERFACE_INFO;

メンバー

NumAdapters

アダプター メンバーが指す配列に一覧表示されている アダプター の数。

Adapter[1]

IP_ADAPTER_INDEX_MAP構造体の配列。 各構造体は、アダプターのインデックスをそのアダプターの名前にマップします。 アダプターのインデックスは、アダプターを無効にしてから有効にした場合、またはその他の状況で変更される可能性があり、永続的と見なすべきではありません。

注釈

IP_INTERFACE_INFO構造は、IPv4 が有効になっているネットワーク アダプターに固有です。 IP_INTERFACE_INFO構造体には、ローカル システムで IPv4 が有効になっているネットワーク アダプターの数と、IPv4 が有効になっている各ネットワーク アダプターに関する情報を含むIP_ADAPTER_INDEX_MAP構造体の配列が含まれています。 IP_INTERFACE_INFO構造体には、IP_INTERFACE_INFO構造体の NumAdapters メンバーが IPv4 が有効になっているネットワーク アダプターがないことを示している場合でも、少なくとも 1 つのIP_ADAPTER_INDEX_MAP構造体が含まれています。 IP_INTERFACE_INFO構造体の NumAdapters メンバーが 0 の場合、IP_INTERFACE_INFO構造体で返される単一のIP_ADAPTER_INDEX_MAP構造体のメンバーの値は未定義です。

IP_INTERFACE_INFO構造体を使用してループバック インターフェイスに関する情報を返すことはできません。

Windows Vista 以降では、IP_INTERFACE_INFO構造体のIP_ADAPTER_INDEX_MAP構造体の Name メンバーは、ネットワーク インターフェイスの GUID の Unicode 文字列である場合があります (文字列は '{' 文字で始まります)。

この構造は、 Iphlpapi.h ヘッダー ファイルに自動的に含まれる Ipexport.h ヘッダー ファイルで定義されます。 Ipexport.h ヘッダー ファイルを直接使用しないでください。

次の例では、ローカル システムで IPv4 が有効になっているネットワーク アダプターの一覧を取得し、最初のアダプターのさまざまなプロパティを出力します。

// 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 );
}

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header ipexport.h (Iphlpapi.h を含む)

こちらもご覧ください

GetInterfaceInfo

IP ヘルパーの開始ページ

IP ヘルパー構造体

IP_ADAPTER_INDEX_MAP