Fungsi SetIpInterfaceEntry (netioapi.h)
Fungsi SetIpInterfaceEntry mengatur properti antarmuka IP di komputer lokal.
Sintaks
IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API SetIpInterfaceEntry(
[in, out] PMIB_IPINTERFACE_ROW Row
);
Parameter
[in, out] Row
Penunjuk ke entri struktur MIB_IPINTERFACE_ROW untuk antarmuka. Pada input, anggota KeluargaMIB_IPINTERFACE_ROW harus diatur ke AF_INET6 atau AF_INET dan InterfaceLuid atau anggota InterfaceIndexdari MIB_IPINTERFACE_ROW harus ditentukan. Pada pengembalian yang berhasil, anggota InterfaceLuiddari MIB_IPINTERFACE_ROW diisi jika anggota InterfaceIndex dari entri MIB_IPINTERFACE_ROW ditentukan.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan adalah NO_ERROR.
Jika fungsi gagal, nilai yang dikembalikan adalah salah satu kode kesalahan berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Akses ditolak. Kesalahan ini dikembalikan dalam beberapa kondisi yang mencakup hal berikut: pengguna tidak memiliki hak istimewa administratif yang diperlukan di komputer lokal atau aplikasi tidak berjalan dalam shell yang ditingkatkan sebagai Administrator bawaan (administrator RunAs). |
|
Sistem tidak dapat menemukan file yang ditentukan. Kesalahan ini dikembalikan jika antarmuka jaringan LUID atau indeks antarmuka yang ditentukan oleh anggota InterfaceLuid atau InterfaceIndexdari MIB_IPINTERFACE_ROW yang ditunjukkan oleh parameter Baris bukan nilai pada komputer lokal. |
|
Parameter yang tidak valid diteruskan ke fungsi. Kesalahan ini dikembalikan jika penunjuk NULL diteruskan dalam parameter Baris , anggota Keluargadari MIB_IPINTERFACE_ROW yang ditunjukkan oleh parameter Baris tidak ditentukan sebagai AF_INET atau AF_INET6, atau anggota InterfaceLuid atau InterfaceIndexdari MIB_IPINTERFACE_ROW yang ditunjukkan oleh parameter Baris tidak ditentukan. |
|
Antarmuka yang ditentukan tidak dapat ditemukan. Kesalahan ini dikembalikan jika antarmuka jaringan yang ditentukan oleh anggota InterfaceLuid atau InterfaceIndexdari MIB_IPINTERFACE_ROW yang ditunjukkan oleh parameter Baris tidak cocok dengan keluarga alamat IP yang ditentukan dalam anggota Keluarga dalam struktur MIB_IPINTERFACE_ROW . |
|
Gunakan FormatMessage untuk mendapatkan string pesan untuk kesalahan yang dikembalikan. |
Keterangan
Fungsi SetIpInterfaceEntry didefinisikan pada Windows Vista dan yang lebih baru.
Fungsi SetIpInterfaceEntry dapat digunakan untuk memodifikasi entri antarmuka IP yang ada.
Pada input, anggota Keluarga dalam struktur MIB_IPINTERFACE_ROW yang ditunjukkan oleh parameter Baris harus diinisialisasi ke AF_INET atau AF_INET6. Selain input, setidaknya salah satu anggota berikut dalam struktur MIB_IPINTERFACE_ROW yang menunjuk ke parameter Baris harus diinisialisasi: InterfaceLuid atau InterfaceIndex.
Bidang digunakan dalam urutan yang tercantum di atas. Jadi, jika InterfaceLuid ditentukan, maka anggota ini digunakan untuk menentukan antarmuka. Jika tidak ada nilai yang ditetapkan untuk anggota InterfaceLuid (nilai anggota ini diatur ke nol), maka anggota InterfaceIndex berikutnya digunakan untuk menentukan antarmuka.
Pada output, anggota InterfaceLuid dari struktur MIB_IPINTERFACE_ROW yang ditunjukkan oleh parameter Baris diisi jika InterfaceIndex ditentukan.
MaxReassemblySize, MinRouterAdvertisementInterval, MaxRouterAdvertisementInterval , Connected, SupportsWakeUpPatterns, SupportsNeighborDiscovery, SupportsRouterDiscovery, ReachableTime, TransmitOffload, dan Anggota ReceiveOffload dari struktur MIB_IPINTERFACE_ROW yang ditunjukkan oleh Baris diabaikan ketika fungsi SetIpInterfaceEntry dipanggil. Anggota ini diatur oleh tumpukan jaringan dan tidak dapat diubah menggunakan fungsi SetIpInterfaceEntry .
Aplikasi biasanya akan memanggil fungsi GetIpInterfaceTable untuk mengambil entri antarmuka IP di komputer lokal atau memanggil fungsi GetIpInterfaceEntry untuk mengambil hanya entri antarmuka IP untuk dimodifikasi. Struktur MIB_IPINTERFACE_ROW untuk entri antarmuka IP tertentu kemudian dapat dimodifikasi dan penunjuk ke struktur ini diteruskan ke fungsi SetIpInterfaceEntry di parameter Baris . Namun untuk IPv4, aplikasi tidak boleh mencoba memodifikasi anggota SitePrefixLength dari struktur MIB_IPINTERFACE_ROW . Untuk IPv4, anggota SitePrefixLength harus diatur ke 0.
Metode lain yang mungkin untuk mengubah entri antarmuka IP yang ada adalah menggunakan fungsi InitializeIpInterfaceEntry untuk menginisialisasi bidang entri struktur MIB_IPINTERFACE_ROW dengan nilai default. Kemudian atur anggota Keluarga dan anggota InterfaceIndex atau InterfaceLuid dalam struktur MIB_IPINTERFACE_ROW yang ditunjukkan oleh parameter Baris agar sesuai dengan antarmuka IP yang akan diubah. Aplikasi kemudian dapat mengubah bidang dalam entri MIB_IPINTERFACE_ROW yang ingin dimodifikasi, lalu memanggil fungsi SetIpInterfaceEntry . Namun untuk IPv4, aplikasi tidak boleh mencoba memodifikasi anggota SitePrefixLength dari struktur MIB_IPINTERFACE_ROW . Untuk IPv4, anggota SitePrefixLength harus diatur ke 0. Perhatian harus digunakan dengan pendekatan ini karena satu-satunya cara untuk menentukan semua bidang yang diubah adalah dengan membandingkan bidang dalam MIB_IPINTERFACE_ROW entri antarmuka IP tertentu dengan bidang yang ditetapkan oleh fungsi InitializeIpInterfaceEntry ketika MIB_IPINTERFACE_ROW diinisialisasi ke nilai default.
Akses simultan yang tidak istimewa ke beberapa jaringan dengan persyaratan keamanan yang berbeda menciptakan lubang keamanan dan memungkinkan aplikasi yang tidak istimewa untuk secara tidak sengaja menyampaikan data antara kedua jaringan. Contoh umumnya adalah akses simultan ke jaringan privat maya (VPN) dan Internet. Windows Server 2003 dan Windows XP menggunakan model host yang lemah, di mana RAS mencegah akses simultan tersebut dengan meningkatkan metrik rute semua rute default melalui antarmuka lain. Dengan demikian semua lalu lintas dirutekan melalui antarmuka VPN, mengganggu konektivitas jaringan lainnya.
Pada Windows Vista dan yang lebih baru, model host yang kuat digunakan secara default. Jika alamat IP sumber ditentukan dalam pencarian rute menggunakan GetBestRoute2 atau GetBestRoute, pencarian rute dibatasi untuk antarmuka alamat IP sumber. Modifikasi metrik rute oleh RAS tidak berpengaruh karena daftar rute potensial bahkan tidak memiliki rute untuk antarmuka VPN sehingga memungkinkan lalu lintas ke Internet. Anggota DisableDefaultRoutes dari MIB_IPINTERFACE_ROW dapat digunakan untuk menonaktifkan menggunakan rute default pada antarmuka. Anggota ini dapat digunakan sebagai langkah keamanan oleh klien VPN untuk membatasi penerowongan terpisah saat penerowongan terpisah tidak diperlukan oleh klien VPN. Klien VPN dapat memanggil fungsi SetIpInterfaceEntry untuk mengatur anggota DisableDefaultRoutes ke TRUE jika diperlukan. Klien VPN dapat meminta status anggota DisableDefaultRoutes saat ini dengan memanggil fungsi GetIpInterfaceEntry .
The
Fungsi SetIpInterfaceEntry hanya dapat dipanggil oleh pengguna yang masuk sebagai anggota grup Administrator. Jika SetIpInterfaceEntry dipanggil oleh pengguna yang bukan anggota grup Administrator, panggilan fungsi akan gagal dan ERROR_ACCESS_DENIED dikembalikan. Fungsi ini juga dapat gagal karena kontrol akun pengguna (UAC) pada Windows Vista dan yang lebih baru. Jika aplikasi yang berisi fungsi ini dijalankan oleh pengguna yang masuk sebagai anggota grup Administrator selain Administrator bawaan, panggilan ini akan gagal kecuali aplikasi telah ditandai dalam file manifes dengan requestedExecutionLevel yang diatur ke requireAdministrator. Jika aplikasi tidak memiliki file manifes ini, pengguna yang masuk sebagai anggota grup Administrator selain Administrator bawaan kemudian harus menjalankan aplikasi dalam shell yang ditingkatkan sebagai Administrator bawaan (administrator RunAs) agar fungsi ini berhasil.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | netioapi.h (termasuk Iphlpapi.h) |
Pustaka | Iphlpapi.lib |
DLL | Iphlpapi.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk