共用方式為


GetNetworkParams 函式 (iphlpapi.h)

GetNetworkParams 函式會擷取本機計算機的網路參數。

語法

IPHLPAPI_DLL_LINKAGE DWORD GetNetworkParams(
  [out] PFIXED_INFO pFixedInfo,
  [in]  PULONG      pOutBufLen
);

參數

[out] pFixedInfo

緩衝區的指標,其中包含 FIXED_INFO 結構,如果函式成功,則會接收本機計算機的網路參數。 呼叫 GetNetworkParams 函式之前,呼叫端必須先配置此緩衝區。

[in] pOutBufLen

ULONG 變數的指標,指定FIXED_INFO結構的大小。 如果此大小不足以保存資訊, GetNetworkParams 會填入此變數中所需的大小,並傳回 ERROR_BUFFER_OVERFLOW的錯誤碼。

傳回值

如果函式成功,傳回值 會ERROR_SUCCESS

如果函式失敗,傳回值就是下列其中一個錯誤碼。

傳回碼 Description
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) 中,會定義FIXED_INFO_WIN2KSP1結構。 如果目標平臺是 Windows 2000 搭配 Service Pack 1 (SP1) 和更新版本 NTDDI_VERSION >= NTDDI_WIN2KSP1, (、 _WIN32_WINNT >= 0x0501WINVER >= 0x0501) 編譯應用程式時, FIXED_INFO_WIN2KSP1 結構會類型為 FIXED_INFO 結構。 如果目標平臺不是具有SP1和更新版本的Windows 2000,則編譯應用程式時, 未定義FIXED_INFO 結構。

Windows 98 和更新版本支援 GetNetworkParams 函式和 FIXED_INFO 結構。 但是,若要使用 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 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 iphlpapi.h
程式庫 Iphlpapi.lib
Dll Iphlpapi.dll

另請參閱

FIXED_INFO

IP 協助程式函式參考

IP 協助程式起始頁