다음을 통해 공유


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.

함수가 실패하면 반환 값은 다음 오류 코드 중 하나입니다.

반환 코드 설명
ERROR_BUFFER_OVERFLOW
네트워크 매개 변수 정보를 받을 버퍼가 너무 작습니다. pOutBufLen 매개 변수가 너무 작아서 네트워크 매개 변수 정보를 저장할 수 없거나 pFixedInfo 매개 변수가 NULL 포인터인 경우 이 값이 반환됩니다. 이 오류 코드가 반환되면 pOutBufLen 매개 변수는 필요한 버퍼 크기를 가리킵니다.
ERROR_INVALID_PARAMETER
잘못된 매개 변수가 함수에 전달되었습니다. pOutBufLen 매개 변수가 NULL 포인터이거나, 호출 프로세스에서 pOutBufLen이 가리키는 메모리에 대한 읽기/쓰기 액세스 권한이 없거나, 호출 프로세스에 pFixedInfo 매개 변수가 가리키는 메모리에 대한 쓰기 권한이 없는 경우 이 오류가 반환됩니다.
ERROR_NO_DATA
로컬 컴퓨터에 대한 네트워크 매개 변수 정보가 없습니다.
ERROR_NOT_SUPPORTED
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

추가 정보

FIXED_INFO

IP 도우미 함수 참조

IP 도우미 시작 페이지