GetNetworkParams 함수(iphlpapi.h)
GetNetworkParams 함수는 로컬 컴퓨터에 대한 네트워크 매개 변수를 검색합니다.
구문
IPHLPAPI_DLL_LINKAGE DWORD GetNetworkParams(
[out] PFIXED_INFO pFixedInfo,
[in] PULONG pOutBufLen
);
매개 변수
[out] pFixedInfo
함수가 성공한 경우 로컬 컴퓨터에 대한 네트워크 매개 변수를 수신하는 FIXED_INFO 구조가 포함된 버퍼에 대한 포인터입니다. GetNetworkParams 함수를 호출하기 전에 호출자가 이 버퍼를 할당해야 합니다.
[in] pOutBufLen
FIXED_INFO 구조체의 크기를 지정하는 ULONG 변수에 대한 포인터입니다. 이 크기가 정보를 보유하기에 충분하지 않은 경우 GetNetworkParams 는 이 변수를 필요한 크기로 채우고 ERROR_BUFFER_OVERFLOW 오류 코드를 반환합니다.
반환 값
함수가 성공하면 반환 값이 ERROR_SUCCESS.
함수가 실패하면 반환 값은 다음 오류 코드 중 하나입니다.
반환 코드 | 설명 |
---|---|
|
네트워크 매개 변수 정보를 받을 버퍼가 너무 작습니다. pOutBufLen 매개 변수가 너무 작아서 네트워크 매개 변수 정보를 저장할 수 없거나 pFixedInfo 매개 변수가 NULL 포인터인 경우 이 값이 반환됩니다. 이 오류 코드가 반환되면 pOutBufLen 매개 변수는 필요한 버퍼 크기를 가리킵니다. |
|
잘못된 매개 변수가 함수에 전달되었습니다. pOutBufLen 매개 변수가 NULL 포인터이거나, 호출 프로세스에서 pOutBufLen이 가리키는 메모리에 대한 읽기/쓰기 액세스 권한이 없거나, 호출 프로세스에 pFixedInfo 매개 변수가 가리키는 메모리에 대한 쓰기 권한이 없는 경우 이 오류가 반환됩니다. |
|
로컬 컴퓨터에 대한 네트워크 매개 변수 정보가 없습니다. |
|
GetNetworkParams 함수는 로컬 컴퓨터에서 실행되는 운영 체제에서 지원되지 않습니다. |
|
함수가 실패하면 FormatMessage를 사용하여 반환된 오류에 대한 메시지 문자열을 가져옵니다. |
설명
GetNetworkParams 함수는 로컬 컴퓨터에 대한 네트워크 매개 변수를 검색하는 데 사용됩니다. 네트워크 매개 변수는 FIXED_INFO 구조로 반환됩니다. FIXED_INFO 구조체의 메모리는 애플리케이션에서 할당해야 합니다. 더 이상 필요하지 않은 경우 이 메모리를 해제하는 것은 애플리케이션의 책임입니다.
Microsoft Windows SDK(소프트웨어 개발 키트)(SDK)에서 FIXED_INFO_WIN2KSP1 구조가 정의됩니다. 대상 플랫폼이 WINDOWS 2000 SP1(서비스 팩 1) 이상(NTDDI_VERSION >= NTDDI_WIN2KSP1
, _WIN32_WINNT >= 0x0501
또는 WINVER >= 0x0501
)인 경우 애플리케이션을 컴파일할 때 FIXED_INFO_WIN2KSP1 구조체는 FIXED_INFO 구조체에 형식 정의됩니다. 대상 플랫폼이 SP1 이상의 Windows 2000이 아닌 경우 애플리케이션을 컴파일하는 경우 FIXED_INFO 구조가 정의되지 않습니다.
GetNetworkParams 함수 및 FIXED_INFO 구조는 Windows 98 이상에서 지원됩니다. 그러나 SP1(서비스 팩 1)을 사용하여 Windows 2000 이전 버전의 대상 플랫폼에 대한 애플리케이션을 빌드하려면 이전 버전의 SDK(플랫폼 소프트웨어 개발 키트)를 사용해야 합니다.
예제
다음 예제에서는 로컬 컴퓨터에 대 한 네트워크 매개 변수를 검색 하 고 반환 된 데이터에서 정보를 인쇄 합니다.
//
// Link with IPHlpAPI.lib
//
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "IPHLPAPI.lib")
#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
/* Note: could also use malloc() and free() */
int __cdecl main()
{
FIXED_INFO *pFixedInfo;
ULONG ulOutBufLen;
DWORD dwRetVal;
IP_ADDR_STRING *pIPAddr;
pFixedInfo = (FIXED_INFO *) MALLOC(sizeof (FIXED_INFO));
if (pFixedInfo == NULL) {
printf("Error allocating memory needed to call GetNetworkParams\n");
return 1;
}
ulOutBufLen = sizeof (FIXED_INFO);
// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
if (GetNetworkParams(pFixedInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
FREE(pFixedInfo);
pFixedInfo = (FIXED_INFO *) MALLOC(ulOutBufLen);
if (pFixedInfo == NULL) {
printf("Error allocating memory needed to call GetNetworkParams\n");
return 1;
}
}
if (dwRetVal = GetNetworkParams(pFixedInfo, &ulOutBufLen) == NO_ERROR) {
printf("Host Name: %s\n", pFixedInfo->HostName);
printf("Domain Name: %s\n", pFixedInfo->DomainName);
printf("DNS Servers:\n");
printf("\t%s\n", pFixedInfo->DnsServerList.IpAddress.String);
pIPAddr = pFixedInfo->DnsServerList.Next;
while (pIPAddr) {
printf("\t%s\n", pIPAddr->IpAddress.String);
pIPAddr = pIPAddr->Next;
}
printf("Node Type: ");
switch (pFixedInfo->NodeType) {
case BROADCAST_NODETYPE:
printf("Broadcast node\n");
break;
case PEER_TO_PEER_NODETYPE:
printf("Peer to Peer node\n");
break;
case MIXED_NODETYPE:
printf("Mixed node\n");
break;
case HYBRID_NODETYPE:
printf("Hybrid node\n");
break;
default:
printf("Unknown node type %0lx\n", pFixedInfo->NodeType);
break;
}
printf("DHCP scope name: %s\n", pFixedInfo->ScopeId);
if (pFixedInfo->EnableRouting)
printf("Routing: enabled\n");
else
printf("Routing: disabled\n");
if (pFixedInfo->EnableProxy)
printf("ARP proxy: enabled\n");
else
printf("ARP Proxy: disabled\n");
if (pFixedInfo->EnableDns)
printf("DNS: enabled\n");
else
printf("DNS: disabled\n");
} else {
printf("GetNetworkParams failed with error: %d\n", dwRetVal);
return 1;
}
if (pFixedInfo)
FREE(pFixedInfo);
return 0;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | iphlpapi.h |
라이브러리 | Iphlpapi.lib |
DLL | Iphlpapi.dll |