Fungsi RegisterDeviceNotificationA (winuser.h)
Mendaftarkan perangkat atau jenis perangkat yang jendelanya akan menerima pemberitahuan.
Catatan
Anda dapat menggunakan CM_Register_Notification alih-alih RegisterDeviceNotification jika kode Anda menargetkan Windows 8 atau versi Windows yang lebih baru. Keuntungan dari CM_Register_Notification adalah tidak memerlukan handel jendela untuk bekerja.
Sintaks
HDEVNOTIFY RegisterDeviceNotificationA(
[in] HANDLE hRecipient,
[in] LPVOID NotificationFilter,
[in] DWORD Flags
);
Parameter
[in] hRecipient
Handel ke jendela atau layanan yang akan menerima peristiwa perangkat untuk perangkat yang ditentukan dalam parameter NotificationFilter . Handel jendela yang sama dapat digunakan dalam beberapa panggilan ke RegisterDeviceNotification.
Layanan dapat menentukan handel jendela atau handel status layanan.
[in] NotificationFilter
Penunjuk ke blok data yang menentukan jenis perangkat yang pemberitahuannya harus dikirim. Blok ini selalu dimulai dengan struktur DEV_BROADCAST_HDR . Data yang mengikuti header ini bergantung pada nilai anggota dbch_devicetype , yang dapat DBT_DEVTYP_DEVICEINTERFACE atau DBT_DEVTYP_HANDLE. Untuk informasi selengkapnya, lihat Keterangan.
[in] Flags
Parameter ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Parameter hRecipient adalah handel jendela. |
|
Parameter hRecipient adalah handel status layanan. |
Selain itu, Anda dapat menentukan nilai berikut.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan adalah handel pemberitahuan perangkat.
Jika fungsi gagal, nilai yang dikembalikan adalah NULL. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Aplikasi mengirim pemberitahuan peristiwa menggunakan fungsi BroadcastSystemMessage . Aplikasi apa pun dengan jendela tingkat atas dapat menerima pemberitahuan dasar dengan memproses pesan WM_DEVICECHANGE . Aplikasi dapat menggunakan fungsi RegisterDeviceNotification untuk mendaftar untuk menerima pemberitahuan perangkat.
Layanan dapat menggunakan fungsi RegisterDeviceNotification untuk mendaftar untuk menerima pemberitahuan perangkat. Jika layanan menentukan handel jendela di parameter hRecipient , pemberitahuan dikirim ke prosedur jendela. Jika hRecipient adalah handel status layanan, SERVICE_CONTROL_DEVICEEVENT pemberitahuan dikirim ke handler kontrol layanan. Untuk informasi selengkapnya tentang penanganan kontrol layanan, lihat HandlerEx.
Pastikan untuk menangani peristiwa perangkat Plug and Play secepat mungkin. Jika tidak, sistem mungkin menjadi tidak responsif. Jika penanganan aktivitas Anda adalah melakukan operasi yang dapat memblokir eksekusi (seperti I/O), yang terbaik adalah memulai utas lain untuk melakukan operasi secara asinkron.
Handel pemberitahuan perangkat yang dikembalikan oleh RegisterDeviceNotification harus ditutup dengan memanggil fungsi UnregisterDeviceNotification saat tidak lagi diperlukan.
Peristiwa DBT_DEVICEARRIVAL dan DBT_DEVICEREMOVECOMPLETE secara otomatis disiarkan ke semua jendela tingkat atas untuk perangkat port. Oleh karena itu, tidak perlu memanggil RegisterDeviceNotification untuk port, dan fungsi gagal jika anggota dbch_devicetypeDBT_DEVTYP_PORT. Pemberitahuan volume juga disiarkan ke jendela tingkat atas, sehingga fungsi gagal jika dbch_devicetypeDBT_DEVTYP_VOLUME. Perangkat yang ditentukan OEM tidak digunakan langsung oleh sistem, sehingga fungsi gagal jika dbch_devicetypeDBT_DEVTYP_OEM.
Contoh
Misalnya, lihat Mendaftar untuk pemberitahuan perangkat.
Catatan
Header winuser.h mendefinisikan RegisterDeviceNotification sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP |
Server minimum yang didukung | Windows Server 2003 |
Target Platform | Windows |
Header | winuser.h (sertakan Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |
Set API | ext-ms-win-ntuser-misc-l1-1-0 (diperkenalkan dalam Windows 8) |