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를 사용하는 네트워크 어댑터가 사용하도록 설정되어 있지 않음을 나타내는 경우에도 하나 이상의 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의 유니코드 문자열일 수 있습니다(문자열은 '{' 문자로 시작).
이 구조체는 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[데스크톱 앱만] |
머리글 | ipexport.h(Iphlpapi.h 포함) |