Поделиться через


Перечисление CM_NOTIFY_ACTION (cfgmgr32.h)

Это перечисление определяет Plug and Play типы событий устройства.

Синтаксис

typedef enum _CM_NOTIFY_ACTION {
  CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = 0,
  CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL,
  CM_NOTIFY_ACTION_DEVICEQUERYREMOVE,
  CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED,
  CM_NOTIFY_ACTION_DEVICEREMOVEPENDING,
  CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE,
  CM_NOTIFY_ACTION_DEVICECUSTOMEVENT,
  CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED,
  CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED,
  CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED,
  CM_NOTIFY_ACTION_MAX
} CM_NOTIFY_ACTION, *PCM_NOTIFY_ACTION;

Константы

 
CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL
Значение: 0
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE. Это действие указывает, что интерфейс устройства, соответствующий условиям фильтра, был включен.
CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE.

Это действие указывает, что интерфейс устройства, соответствующий условиям фильтра, отключен.
CM_NOTIFY_ACTION_DEVICEQUERYREMOVE
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE.

Это действие указывает, что устройство удаляется. Чтобы выполнить удаление запроса, вызовите CloseHandle , чтобы закрыть все дескрипторы, открытые для устройства. Если этого не сделать, открытый дескриптор не позволит успешно удалить запрос этого устройства. Дополнительные сведения см. в разделе Регистрация для уведомления о прибытии и удалении интерфейса устройства .

Чтобы наказать вето на удаление запроса, верните ERROR_CANCELLED. Однако рекомендуется не наложить вето на удаление запроса и разрешить его выполнение, закрыв все дескрипторы, открытые для устройства.
CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE.

Это действие указывает, что запрос на удаление устройства завершился сбоем. Если вы закрыли дескриптор для этого устройства во время предыдущего уведомления о CM_NOTIFY_ACTION_DEVICEQUERYREMOVE, откройте новый дескриптор для устройства, чтобы продолжить отправку запросов ввода-вывода на него. Дополнительные сведения см. в разделе Регистрация для уведомления о прибытии и удалении интерфейса устройства .
CM_NOTIFY_ACTION_DEVICEREMOVEPENDING
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE.

Устройство будет удалено. Если у вас по-прежнему есть открытый дескриптор для устройства, вызовите CloseHandle , чтобы закрыть дескриптор устройства. Дополнительные сведения см. в разделе Регистрация для уведомления о прибытии и удалении интерфейса устройства . Система может отправлять уведомление CM_NOTIFY_ACTION_DEVICEREMOVEPENDING , не отправляя соответствующее CM_NOTIFY_ACTION_DEVICEQUERYREMOVE сообщение. В таких случаях приложения и драйверы должны восстановиться после потери устройства как можно лучше.
CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE.

Устройство удалено. Если у вас по-прежнему есть открытый дескриптор для устройства, вызовите CloseHandle , чтобы закрыть дескриптор устройства. Дополнительные сведения см. в разделе Регистрация для уведомления о прибытии и удалении интерфейса устройства . Система может отправлять уведомление CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE без отправки соответствующих CM_NOTIFY_ACTION_DEVICEQUERYREMOVE или CM_NOTIFY_ACTION_DEVICEREMOVEPENDING сообщений. В таких случаях приложения и драйверы должны восстановиться после потери устройства как можно лучше.
CM_NOTIFY_ACTION_DEVICECUSTOMEVENT
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE. Это действие отправляется при возникновении пользовательского события, определенного драйвером.
CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE. Это действие отправляется при перечислении нового экземпляра устройства, соответствующего условиям фильтра.
CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE. Это действие отправляется при запуске экземпляра устройства, соответствующего условиям фильтра.
CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED
Для этого значения задайте элемент FilterType структуры CM_NOTIFY_FILTER .
для CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE. Это действие отправляется, когда экземпляр устройства, соответствующий условиям фильтра, больше не присутствует.
CM_NOTIFY_ACTION_MAX
Не используйте.

Комментарии

Когда драйвер вызывает функцию CM_Register_Notification , параметр pCallback содержит указатель на подпрограмму, вызываемую при возникновении указанного события PnP. Параметр Action подпрограммы обратного вызова — это значение из перечисления CM_NOTIFY_ACTION .

Требования

Требование Значение
Заголовок cfgmgr32.h

См. также раздел

CM_NOTIFY_FILTER

CM_Register_Notification