次の方法で共有


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 ソフトウェア開発キット (Windows SDK) (SDK) では、FIXED_INFO_WIN2KSP1構造が定義されています。 ターゲット プラットフォームが Windows 2000 Service Pack 1 (SP1) 以降NTDDI_VERSION >= NTDDI_WIN2KSP1 (、、または WINVER >= 0x0501) の場合、アプリケーションをコンパイルすると、_WIN32_WINNT >= 0x0501FIXED_INFO_WIN2KSP1構造体は FIXED_INFO 構造体に型定義されます。 ターゲット プラットフォームが SP1 以降の Windows 2000 でない場合にアプリケーションをコンパイルする場合、 FIXED_INFO 構造は未定義です。

GetNetworkParams 関数とFIXED_INFO構造体は、Windows 98 以降でサポートされています。 ただし、Service Pack 1 (SP1) を使用して 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
Library Iphlpapi.lib
[DLL] Iphlpapi.dll

こちらもご覧ください

FIXED_INFO

IP ヘルパー関数リファレンス

IP ヘルパーの開始ページ