Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Регистрирует устройство или тип устройства, для которого окно получит уведомления.
Заметка
Вместо RegisterDeviceNot ification можно использовать CM_Register_Notification, если код предназначен для Windows 8 или более новых версий Windows. Преимуществом CM_Register_Notification является то, что для работы дескриптора окна не требуется.
Синтаксис
HDEVNOTIFY RegisterDeviceNotificationA(
[in] HANDLE hRecipient,
[in] LPVOID NotificationFilter,
[in] DWORD Flags
);
Параметры
[in] hRecipient
Дескриптор окна или службы, который получит события устройства для устройств, указанных в параметре NotificationFilter. Один и тот же дескриптор окна можно использовать в нескольких вызовах для RegisterDeviceNotification.
Службы могут указывать дескриптор окна или дескриптор состояния службы.
[in] NotificationFilter
Указатель на блок данных, указывающий тип устройства, для которого должны отправляться уведомления. Этот блок всегда начинается со структуры DEV_BROADCAST_HDR. Данные, следующие за этим заголовком, зависят от значения элемента dbch_devicetype, которое может быть DBT_DEVTYP_DEVICEINTERFACE или DBT_DEVTYP_HANDLE. Дополнительные сведения см. в разделе "Примечания".
[in] Flags
Этот параметр может быть одним из следующих значений.
| Ценность | Значение |
|---|---|
|
Параметр hRecipient — это дескриптор окна. |
|
Параметр hRecipient — это дескриптор состояния службы. |
Кроме того, можно указать следующее значение.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение является дескриптором уведомления устройства.
Если функция завершается ошибкой, возвращаемое значение равно NULL. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Приложения отправляют уведомления о событиях с помощью функции BroadcastSystemMessage. Любое приложение с окном верхнего уровня может получать основные уведомления, обрабатывая сообщение WM_DEVICECHANGE. Приложения могут использовать функцию RegisterDeviceNotification для регистрации для получения уведомлений об устройстве.
Службы могут использовать функцию RegisterDeviceNotification
Не забудьте как можно быстрее обрабатывать события устройства Plug and Play. В противном случае система может перестать отвечать. Если обработчик событий выполняет операцию, которая может блокировать выполнение (например, ввода-вывода), лучше всего запустить другой поток для асинхронного выполнения операции.
Маркеры уведомлений устройств, возвращаемые RegisterDeviceNotification, должны быть закрыты путем вызова функции UnregisterDeviceNotification, когда они больше не нужны.
События DBT_DEVICEARRIVAL и DBT_DEVICEREMOVECOMPLETE автоматически передаются во все окна верхнего уровня для устройств портов. Поэтому не нужно вызывать RegisterDeviceNotification для портов, а функция завершается ошибкой, если элемент dbch_devicetypeDBT_DEVTYP_PORT. Уведомления о томах также передаются в окна верхнего уровня, поэтому функция завершается ошибкой, если dbch_devicetypeDBT_DEVTYP_VOLUME. Определяемые изготовителем устройства не используются непосредственно системой, поэтому функция завершается ошибкой, если dbch_devicetypeDBT_DEVTYP_OEM.
Примеры
Пример см. в разделе Регистрации для уведомлений устройств.
Заметка
Заголовок winuser.h определяет RegisterDeviceNotification как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Windows XP |
| минимальный поддерживаемый сервер | Windows Server 2003 |
| целевая платформа | Виндоус |
| заголовка | winuser.h (включая Windows.h) |
| библиотеки |
User32.lib |
| DLL | User32.dll |
| набор API | ext-ms-win-ntuser-misc-l1-1-0 (представлено в Windows 8) |