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


События устройства (IoEvent.h)

Приложения, включая службы, могут регистрироваться для получения уведомлений о событиях устройства. Например, служба каталога может получать уведомления о томах, которые подключаются или отключается, чтобы настроить пути к файлам на томе. Система уведомляет приложение о том, что произошло событие устройства, отправляя приложению WM_DEVICECHANGE сообщение. Система уведомляет службу о том, что произошло событие устройства, вызывая функцию обработчика событий службы HandlerEx.

Чтобы получать уведомления о событиях устройства, вызовите функцию RegisterDeviceNotification со структурой DEV_BROADCAST_HANDLE . Не забудьте задать элемент dbch_handle дескриптор устройства, полученный из функции CreateFile . Кроме того, задайте для элемента dbch_devicetypeзначение DBT_DEVTYP_HANDLE. Функция возвращает дескриптор уведомления устройства. Обратите внимание, что это не то же самое, что дескриптор тома.

Когда приложение получает уведомление, если тип события DBT_CUSTOMEVENT, возможно, вы получили одно из событий устройства, определенное в IoEvent.h. Чтобы определить, произошло ли одно из этих событий, выполните следующие действия.

  1. Обрабатывать данные событий как DEV_BROADCAST_HDR структуру. Убедитесь, что для элемента dbch_devicetype задано значение DBT_DEVTYP_HANDLE.
  2. Если dbch_devicetypeDBT_DEVTYP_HANDLE, данные события действительно являются указателем на структуру DEV_BROADCAST_HANDLE .
  3. Сравните элемент dbch_eventguid с GUID, перечисленными в следующей таблице, с помощью функции IsEqualGUID .

GUID_IO_CDROM_EXCLUSIVE_LOCK

bc56c139-7a10-47ee-a294-4c6a38f0149a

Устройство компакт-диска заблокировано для монопольного доступа.

Windows Server 2003 и Windows XP: Для поддержки этого значения требуется IMAPI 2.0. Дополнительные сведения см. в разделе API мастеринга образов.

GUID_IO_CDROM_EXCLUSIVE_UNLOCK

a3b6d27d-5e35-4885-81e5-ee18c00ed779

Устройство компакт-дисков, которое было заблокировано для монопольного доступа, разблокировано.

Windows Server 2003 и Windows XP: Для поддержки этого значения требуется IMAPI 2.0. Дополнительные сведения см. в разделе API мастеринга образов.

GUID_IO_DEVICE_BECOMING_READY

d07433f0-a98e-11d2-917a-00a0c9068ff3

Идет раскрутка мультимедиа.

GUID_IO_DEVICE_EXTERNAL_REQUEST

d07433d0-a98e-11d2-917a-00a0c9068ff3

Существует несколько возможных причин этого события. Дополнительные сведения см. в спецификации T10 MMC команды GET EVENT STATUS NOTIFICATION.

GUID_IO_MEDIA_ARRIVAL

d07433c0-a98e-11d2-917a-00a0c9068ff3

На устройство добавлен съемный носитель. Элемент dbch_data является указателем на структуру CLASS_MEDIA_CHANGE_CONTEXT . Элемент NewState предоставляет сведения о состоянии. Например, значение MediaUnavailable указывает, что носитель недоступен (например, из-за активного сеанса записи).

Windows XP: Элемент dbch_data — это значение ULONG , представляющее количество изменений мультимедиа с момента запуска системы.

GUID_IO_MEDIA_EJECT_REQUEST

d07433d1-a98e-11d2-917a-00a0c9068ff3

Диск съемного носителя получил запрос от пользователя на извлечение указанного слота или носителя.

GUID_IO_MEDIA_REMOVAL

d07433c1-a98e-11d2-917a-00a0c9068ff3

Съемный носитель был удален с устройства или недоступен. Элемент dbch_data является указателем на структуру CLASS_MEDIA_CHANGE_CONTEXT . Элемент NewState предоставляет сведения о состоянии. Например, значение MediaUnavailable указывает, что носитель недоступен (например, из-за активного сеанса записи).

Windows XP: Элемент dbch_data — это значение ULONG , представляющее количество изменений мультимедиа с момента запуска системы.

GUID_IO_VOLUME_CHANGE

7373654a-812a-11d0-bec7-08002be2092f

Метка тома изменилась.

GUID_IO_VOLUME_CHANGE_SIZE

3a1625be-ad03-49f1-8ef8-6bbac182d1fd

Размер файловой системы на томе изменился.

Windows Server 2003 и Windows XP: Это значение не поддерживается.

GUID_IO_VOLUME_DISMOUNT

d16a55e8-1059-11d2-8ffd-00a0c9a06d32

Выполняется попытка отключения тома. Следует закрыть все дескрипторы для файлов и каталогов тома. Этому событию не обязательно предшествует событие GUID_IO_VOLUME_LOCK .

GUID_IO_VOLUME_DISMOUNT_FAILED

e3c5b178-105d-11d2-8ffd-00a0c9a06d32

Попытка отключения тома завершилась сбоем. Это часто происходит из-за того, что другой процесс не смог ответить на уведомление GUID_IO_VOLUME_DISMOUNT , закрыв его незакрытые дескрипторы. Из-за сбоя отключения можно повторно открыть все дескрипторы затронутого тома.

GUID_IO_VOLUME_FVE_STATUS_CHANGE

062998b2-ee1f-4b6a-b857-e76cbbe9a6da

Состояние шифрования диска BitLocker тома изменилось. Это событие подается при включении или отключении BitLocker, а также при запуске, завершении, приостановке или возобновлении шифрования.

Windows Server 2003 и Windows XP: Это значение не поддерживается.

GUID_IO_VOLUME_LOCK

50708874-c9af-11d1-8fef-00a0c9a06d32

Другой процесс — попытка заблокировать том. Следует закрыть все дескрипторы для файлов и каталогов тома.

GUID_IO_VOLUME_LOCK_FAILED

ae2eed10-0ba8-11d2-8ffb-00a0c9a06d32

Попытка блокировки тома завершилась сбоем. Это часто происходит из-за того, что другой процесс не смог ответить на событие GUID_IO_VOLUME_LOCK , закрыв его необработанные дескрипторы. Так как блокировка завершилась сбоем, можно повторно открыть все дескрипторы затронутого тома.

GUID_IO_VOLUME_MOUNT

b5804878-1a96-11d2-8ffd-00a0c9a06d32

Том был подключен другим процессом. Вы можете открыть один или несколько дескрипторов.

GUID_IO_VOLUME_NAME_CHANGE

2de97f83-4c06-11d2-a532-00609713055a

Имя тома было изменено.

GUID_IO_VOLUME_NEED_CHKDSK

799a0960-0a0b-4e03-ad88-2fa7c6ce748a

Файловая система обнаружила повреждение тома. Приложение должно запустить CHKDSK на томе или уведомить пользователя об этом.

Windows Server 2003 и Windows XP: Это значение не поддерживается.

GUID_IO_VOLUME_PHYSICAL_CONFIGURATION_CHANGE

2de97f84-4c06-11d2-a532-00609713055a

Изменился физический состав или текущее физическое состояние тома.

GUID_IO_VOLUME_PREPARING_EJECT

c79eb16e-0dac-4e7a-a86c-b25ceeaa88f6

Файловая система готовит диск к извлечению. Например, файловая система останавливает фоновую операцию форматирования или закрывает сеанс на носителе с однократной записью.

Windows Server 2003 и Windows XP: Это значение не поддерживается.

GUID_IO_VOLUME_UNIQUE_ID_CHANGE

af39da42-6622-41f5-970b-139d092fa3d9

Изменен уникальный идентификатор тома. Дополнительные сведения об уникальном идентификаторе см. в разделе IOCTL_MOUNTDEV_QUERY_UNIQUE_ID.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается до Windows Server 2008 R2 и Windows 7.

GUID_IO_VOLUME_UNLOCK

9a8c3d68-d0cb-11d1-8fef-00a0c9a06d32

Том был разблокирован другим процессом. Для него можно открыть один или несколько дескрипторов.

GUID_IO_VOLUME_WEARING_OUT

873113ca-1486-4508-82ac-c3b2e5297aaa

Средства массовой информации изношены. Это событие отправляется, когда файловая система определяет, что частота ошибок на томе слишком высока или его место для замены дефектов почти исчерпано.

Windows Server 2003 и Windows XP: Это значение не поддерживается.

Комментарии

События GUID_IO_VOLUME_DISMOUNT и GUID_IO_VOLUME_DISMOUNT_FAILED связаны, как и события GUID_IO_VOLUME_LOCK и GUID_IO_VOLUME_LOCK_FAILED . События GUID_IO_VOLUME_DISMOUNT и GUID_IO_VOLUME_LOCK указывают на то, что выполняется операция. Вы должны действовать в уведомлении о событии и записывать выполненные действия. События GUID_IO_VOLUME_DISMOUNT_FAILED и GUID_IO_VOLUME_LOCK_FAILED указывают на сбой операции. Затем можно использовать запись для отмены действий, выполненных в ответ на операцию.

Элемент dbch_hdevnotify структуры DEV_BROADCAST_HANDLE указывает на затронутого устройства. Обратите внимание, что это дескриптор уведомления устройства, возвращаемый RegisterDeviceNotification, а не дескриптор тома. Чтобы выполнить операции с томом, сопоставьте этот дескриптор с соответствующим дескриптором тома.

Требования

Требование Значение
Минимальная версия клиента
Windows XP
Минимальная версия сервера
Windows Server 2003
Заголовок
IoEvent.h