Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi NotifyRouteChange menyebabkan pemberitahuan dikirim ke pemanggil setiap kali perubahan terjadi dalam tabel perutean IPv4.
Sintaks
IPHLPAPI_DLL_LINKAGE DWORD NotifyRouteChange(
[out] PHANDLE Handle,
[in] LPOVERLAPPED overlapped
);
Parameter
[out] Handle
Penunjuk ke variabel HANDLE yang menerima handel untuk digunakan dalam pemberitahuan asinkron.
[in] overlapped
Penunjuk ke struktur TUMPANG TINDIH yang memberi tahu pemanggil tentang setiap perubahan dalam tabel perutean.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan NO_ERROR jika pemanggil menentukan NULL untuk parameter Handel dan tumpang tindih . Jika pemanggil menentukan parameter non-NULL , nilai pengembalian untuk keberhasilan adalah ERROR_IO_PENDING. Jika fungsi gagal, gunakan FormatMessage untuk mendapatkan string pesan untuk kesalahan yang dikembalikan.
| Menampilkan kode | Deskripsi |
|---|---|
|
Konteks dibatalkan pendaftarannya, sehingga panggilan segera dibatalkan. |
|
Parameter yang tidak valid telah diteruskan. Kesalahan ini dikembalikan jika parameter Handel dan tumpang tindih bukan NULL, tetapi memori yang ditentukan oleh parameter input tidak dapat ditulis oleh proses panggilan. Kesalahan ini juga dikembalikan jika klien sudah membuat permintaan pemberitahuan perubahan, sehingga permintaan duplikat ini akan gagal. |
|
Tidak tersedia cukup memori untuk menyelesaikan operasi. |
|
Kesalahan ini dikembalikan pada versi Windows di mana fungsi ini tidak didukung seperti Windows 98/95 dan Windows NT 4.0. |
Keterangan
The
Fungsi NotifyRouteChange dapat dipanggil dengan dua cara:
- Metode sinkron
- Metode asinkron
Jika pemanggil menentukan NULL untuk parameter Handel dan tumpang tindih , panggilan ke NotifyRouteChange sinkron dan akan memblokir hingga perubahan tabel perutean IPv4 terjadi. Dalam hal ini jika perubahan terjadi, fungsi NotifyRouteChange selesai untuk menunjukkan bahwa perubahan telah terjadi.
Jika fungsi NotifyRouteChange dipanggil secara sinkron, pemberitahuan akan dikirim pada perubahan perutean IPv4 berikutnya hingga aplikasi berakhir.
Jika pemanggil menentukan variabel handel dan struktur TUMPANG TINDIH , pemanggil dapat menggunakan handel yang dikembalikan dengan struktur TUMPANG TINDIH untuk menerima pemberitahuan asinkron tentang perubahan tabel perutean IPv4. Lihat topik berikut untuk informasi tentang menggunakan struktur handel dan TUMPANG TINDIH untuk menerima pemberitahuan:
- Sinkronisasi dan Input dan Output yang Tumpang Tindih
- GetQueuedCompletionStatus
- Port Penyelesaian I/O
Fungsi CancelIPChangeNotify membatalkan pemberitahuan alamat IP dan perubahan rute yang sebelumnya diminta dengan panggilan yang berhasil ke fungsi NotifyAddrChange atau NotifyRouteChange .
Setelah aplikasi diberi tahu tentang perubahan, aplikasi kemudian dapat memanggil fungsi GetIpForwardTable atau GetIpForwardTable2 untuk mengambil tabel perutean IPv4 untuk menentukan apa yang telah berubah. Jika aplikasi diberi tahu dan memerlukan pemberitahuan untuk perubahan berikutnya, maka fungsi NotifyRouteChange harus dipanggil lagi.
Jika fungsi NotifyRouteChange dipanggil secara asinkron, pemberitahuan akan dikirim pada perubahan rute IPv4 berikutnya hingga aplikasi membatalkan pemberitahuan dengan memanggil fungsi CancelIPChangeNotify atau aplikasi berakhir. Jika aplikasi berakhir, sistem akan secara otomatis membatalkan pendaftaran untuk pemberitahuan. Masih disarankan agar aplikasi secara eksplisit membatalkan pemberitahuan apa pun sebelum berakhir.
Pendaftaran apa pun untuk pemberitahuan tidak bertahan di seluruh sistem yang dimatikan atau di-boot ulang.
Pada Windows Vista dan yang lebih baru, fungsi NotifyRouteChange2 dapat digunakan untuk mendaftar untuk diberi tahu tentang perubahan pada tabel perutean IPv6 di komputer lokal.
Contoh
Contoh berikut menunggu perubahan terjadi dalam tabel perutean IP.
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")
void main()
{
OVERLAPPED overlap;
DWORD ret;
HANDLE hand = NULL;
overlap.hEvent = WSACreateEvent();
ret = NotifyRouteChange(&hand, &overlap);
if (ret != NO_ERROR)
{
if (WSAGetLastError() != WSA_IO_PENDING)
{
printf("NotifyRouteChange error...%d\n", WSAGetLastError());
return;
}
}
if ( WaitForSingleObject(overlap.hEvent, INFINITE) == WAIT_OBJECT_0 )
printf("Routing table changed..\n");
}
Persyaratan
| Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
| Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
| Target Platform | Windows |
| Header | iphlpapi.h |
| Pustaka | Iphlpapi.lib |
| DLL | Iphlpapi.dll |