Fungsi GetNetworkParams (iphlpapi.h)
Fungsi GetNetworkParams mengambil parameter jaringan untuk komputer lokal.
Sintaks
IPHLPAPI_DLL_LINKAGE DWORD GetNetworkParams(
[out] PFIXED_INFO pFixedInfo,
[in] PULONG pOutBufLen
);
Parameter
[out] pFixedInfo
Penunjuk ke buffer yang berisi struktur FIXED_INFO yang menerima parameter jaringan untuk komputer lokal, jika fungsi berhasil. Buffer ini harus dialokasikan oleh pemanggil sebelum memanggil fungsi GetNetworkParams .
[in] pOutBufLen
Penunjuk ke variabel ULONG yang menentukan ukuran struktur FIXED_INFO . Jika ukuran ini tidak cukup untuk menyimpan informasi, GetNetworkParams mengisi variabel ini dengan ukuran yang diperlukan, dan mengembalikan kode kesalahan ERROR_BUFFER_OVERFLOW.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan adalah ERROR_SUCCESS.
Jika fungsi gagal, nilai yang dikembalikan adalah salah satu kode kesalahan berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Buffer untuk menerima informasi parameter jaringan terlalu kecil. Nilai ini dikembalikan jika parameter pOutBufLen terlalu kecil untuk menyimpan informasi parameter jaringan atau parameter pFixedInfo adalah penunjuk NULL . Ketika kode kesalahan ini dikembalikan, parameter pOutBufLen menunjuk ke ukuran buffer yang diperlukan. |
|
Parameter yang tidak valid diteruskan ke fungsi. Kesalahan ini dikembalikan jika parameter pOutBufLen adalah penunjuk NULL , proses panggilan tidak memiliki akses baca/tulis ke memori yang ditujukan oleh pOutBufLen, atau proses panggilan tidak memiliki akses tulis ke memori yang diacu oleh parameter pFixedInfo . |
|
Tidak ada informasi parameter jaringan untuk komputer lokal. |
|
Fungsi GetNetworkParams tidak didukung oleh sistem operasi yang berjalan di komputer lokal. |
|
Jika fungsi gagal, gunakan FormatMessage untuk mendapatkan string pesan untuk kesalahan yang dikembalikan. |
Keterangan
Fungsi GetNetworkParams digunakan untuk mengambil parameter jaringan untuk komputer lokal. Parameter jaringan dikembalikan dalam struktur FIXED_INFO . Memori untuk struktur FIXED_INFO harus dialokasikan oleh aplikasi. Adalah tanggung jawab aplikasi untuk membebaskan memori ini ketika tidak lagi diperlukan.
Dalam Kit Pengembangan Perangkat Lunak (SDK) Microsoft Windows, struktur FIXED_INFO_WIN2KSP1 ditentukan. Saat mengkompilasi aplikasi jika platform target adalah Windows 2000 dengan Paket Layanan 1 (SP1) dan yang lebih baru (NTDDI_VERSION >= NTDDI_WIN2KSP1
, , _WIN32_WINNT >= 0x0501
atau WINVER >= 0x0501
), struktur FIXED_INFO_WIN2KSP1 diketik ke struktur FIXED_INFO . Saat mengkompilasi aplikasi jika platform target bukan Windows 2000 dengan SP1 dan yang lebih baru, struktur FIXED_INFO tidak ditentukan.
Fungsi GetNetworkParams dan struktur FIXED_INFO didukung pada Windows 98dan yang lebih baru. Tetapi untuk membangun aplikasi untuk platform target yang lebih lama dari Windows 2000 dengan Paket Layanan 1 (SP1), versi yang lebih lama dari Platform Software Development Kit (SDK) harus digunakan.
Contoh
Contoh berikut mengambil parameter jaringan untuk komputer lokal dan mencetak informasi dari data yang dikembalikan.
//
// 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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows 2000 Server [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | iphlpapi.h |
Pustaka | Iphlpapi.lib |
DLL | Iphlpapi.dll |