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
DEVICE_NOTIFY_WINDOW_HANDLE
0x00000000
Parameter hRecipient adalah handel jendela.
DEVICE_NOTIFY_SERVICE_HANDLE
0x00000001
Parameter hRecipient adalah handel status layanan.
 

Selain itu, Anda dapat menentukan nilai berikut.

Nilai Makna
DEVICE_NOTIFY_ALL_INTERFACE_CLASSES
0x00000004
Memberi tahu penerima peristiwa antarmuka perangkat untuk semua kelas antarmuka perangkat. (Anggota dbcc_classguid diabaikan.)

Nilai ini hanya dapat digunakan jika anggota dbch_devicetypeDBT_DEVTYP_DEVICEINTERFACE.

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)

Lihat juga

BroadcastSystemMessage

DEV_BROADCAST_HDR

Manajemen Perangkat Functions

Pemberitahuan Perangkat

HandlerEx

RegisterDeviceNotification

UnregisterDeviceNotification

WM_DEVICECHANGE