Partilhar via


Eventos de dispositivo (IoEvent.h)

Aplicativos, incluindo serviços, podem se registrar para receber notificação de eventos de dispositivo. Por exemplo, um serviço de catálogo pode receber uma notificação de volumes que estão sendo montados ou desmontados para que ele possa ajustar os caminhos para arquivos no volume. O sistema notifica um aplicativo de que um evento de dispositivo ocorreu enviando ao aplicativo uma mensagem WM_DEVICECHANGE . O sistema notifica um serviço de que ocorreu um evento de dispositivo invocando a função do manipulador de eventos do serviço, HandlerEx.

Para receber avisos de evento do dispositivo, chame a função RegisterDeviceNotification com uma estrutura DEV_BROADCAST_HANDLE . Defina o membro dbch_handle para o identificador de dispositivo obtido da função CreateFile . Além disso, defina o membro dbch_devicetype como DBT_DEVTYP_HANDLE. A função retorna um identificador de notificação do dispositivo. Observe que isso não é o mesmo que o identificador de volume.

Quando o aplicativo recebe uma notificação, se o tipo de evento for DBT_CUSTOMEVENT, você poderá ter recebido um dos eventos de dispositivo definidos em IoEvent.h. Para determinar se um desses eventos ocorreu, use as etapas a seguir.

  1. Trate os dados do evento como uma estrutura DEV_BROADCAST_HDR . Verifique se o membro do dbch_devicetype está definido como DBT_DEVTYP_HANDLE.
  2. Se dbch_devicetype for DBT_DEVTYP_HANDLE, os dados do evento serão realmente um ponteiro para uma estrutura de DEV_BROADCAST_HANDLE .
  3. Compare o membro dbch_eventguid com os GUIDlistados na tabela a seguir usando a função IsEqualGUID .

GUID_IO_CDROM_EXCLUSIVE_LOCK

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

O dispositivo CD-ROM foi bloqueado para acesso exclusivo.

Windows Server 2003 e Windows XP: O suporte para esse valor requer IMAPI 2.0. Para obter mais informações, consulte API de masterização de imagem.

GUID_IO_CDROM_EXCLUSIVE_UNLOCK

a3b6d27d-5e35-4885-81e5-ee18c00ed779

Um dispositivo CD-ROM que estava bloqueado para acesso exclusivo foi desbloqueado.

Windows Server 2003 e Windows XP: O suporte para esse valor requer IMAPI 2.0. Para obter mais informações, consulte API de masterização de imagem.

GUID_IO_DEVICE_BECOMING_READY

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

O spin-up de mídia está em andamento.

GUID_IO_DEVICE_EXTERNAL_REQUEST

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

Há várias causas possíveis para esse evento; para obter mais informações, consulte a especificação T10 MMC do Comando GET EVENT STATUS NOTIFICATION.

GUID_IO_MEDIA_ARRIVAL

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

A mídia removível foi adicionada ao dispositivo. O membro dbch_data é um ponteiro para uma estrutura CLASS_MEDIA_CHANGE_CONTEXT . O membro NewState fornece informações de status. Por exemplo, um valor de MediaUnavailable indica que a mídia não está disponível (por exemplo, devido a uma sessão de gravação ativa).

Windows XP: O membro dbch_data é um valor ULONG que representa o número de vezes que a mídia foi alterada desde a inicialização do sistema.

GUID_IO_MEDIA_EJECT_REQUEST

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

A unidade da mídia removível recebeu uma solicitação do usuário para ejetar o slot ou a mídia especificado.

GUID_IO_MEDIA_REMOVAL

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

A mídia removível foi removida do dispositivo ou não está disponível. O membro dbch_data é um ponteiro para uma estrutura CLASS_MEDIA_CHANGE_CONTEXT . O membro NewState fornece informações de status. Por exemplo, um valor de MediaUnavailable indica que a mídia não está disponível (por exemplo, devido a uma sessão de gravação ativa).

Windows XP: O membro dbch_data é um valor ULONG que representa o número de vezes que a mídia foi alterada desde a inicialização do sistema.

GUID_IO_VOLUME_CHANGE

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

O rótulo do volume foi alterado.

GUID_IO_VOLUME_CHANGE_SIZE

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

O tamanho do sistema de arquivos no volume foi alterado.

Windows Server 2003 e Windows XP: Não há suporte para esse valor.

GUID_IO_VOLUME_DISMOUNT

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

Uma tentativa de desmontar o volume está em andamento. Você deve fechar todos os identificadores de arquivos e diretórios no volume. Esse evento não será necessariamente precedido por um evento GUID_IO_VOLUME_LOCK .

GUID_IO_VOLUME_DISMOUNT_FAILED

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

Falha ao tentar desmontar um volume. Isso geralmente acontece porque outro processo não respondeu a um aviso de GUID_IO_VOLUME_DISMOUNT fechando seus identificadores pendentes. Como a desmontagem falhou, você pode reabrir todos os identificadores para o volume afetado.

GUID_IO_VOLUME_FVE_STATUS_CHANGE

062998b2-ee1f-4b6a-b857-e76cbbe9a6da

O status de Criptografia de Unidade de Disco BitLocker do volume foi alterado. Esse evento é sinalizado quando o BitLocker está habilitado ou desabilitado ou quando a criptografia começa, termina, pausa ou é retomada.

Windows Server 2003 e Windows XP: Não há suporte para esse valor.

GUID_IO_VOLUME_LOCK

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

Outro processo é tentar bloquear o volume. Você deve fechar todos os identificadores de arquivos e diretórios no volume.

GUID_IO_VOLUME_LOCK_FAILED

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

Falha ao tentar bloquear um volume. Isso geralmente acontece porque outro processo não respondeu a um evento de GUID_IO_VOLUME_LOCK fechando seus identificadores pendentes. Como o bloqueio falhou, você pode reabrir todos os identificadores para o volume afetado.

GUID_IO_VOLUME_MOUNT

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

O volume foi montado por outro processo. Você pode abrir um ou mais identificadores para ele.

GUID_IO_VOLUME_NAME_CHANGE

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

O nome do volume foi alterado.

GUID_IO_VOLUME_NEED_CHKDSK

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

Um sistema de arquivos detectou corrupção no volume. O aplicativo deve executar CHKDSK no volume ou notificar o usuário para fazer isso.

Windows Server 2003 e Windows XP: Não há suporte para esse valor.

GUID_IO_VOLUME_PHYSICAL_CONFIGURATION_CHANGE

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

A maquiagem física ou o estado físico atual do volume foi alterado.

GUID_IO_VOLUME_PREPARING_EJECT

c79eb16e-0dac-4e7a-a86c-b25ceeaa88f6

O sistema de arquivos está preparando o disco para ser ejetado. Por exemplo, o sistema de arquivos está parando uma operação de formatação em segundo plano ou fechando a sessão na mídia write-once.

Windows Server 2003 e Windows XP: Não há suporte para esse valor.

GUID_IO_VOLUME_UNIQUE_ID_CHANGE

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

O identificador exclusivo do volume foi alterado. Para obter mais informações sobre o identificador exclusivo, consulte IOCTL_MOUNTDEV_QUERY_UNIQUE_ID.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Esse valor não tem suporte até o Windows Server 2008 R2 e o Windows 7.

GUID_IO_VOLUME_UNLOCK

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

O volume foi desbloqueado por outro processo. Você pode abrir um ou mais identificadores para ele.

GUID_IO_VOLUME_WEARING_OUT

873113ca-1486-4508-82ac-c3b2e5297aaaa

A mídia está se esgotando. Esse evento é enviado quando um sistema de arquivos determina que a taxa de erro em um volume é muito alta ou seu espaço de substituição de defeito está quase esgotado.

Windows Server 2003 e Windows XP: Não há suporte para esse valor.

Comentários

Os eventos GUID_IO_VOLUME_DISMOUNT e GUID_IO_VOLUME_DISMOUNT_FAILED estão relacionados, assim como o evento GUID_IO_VOLUME_LOCK e GUID_IO_VOLUME_LOCK_FAILED . Os eventos GUID_IO_VOLUME_DISMOUNT e GUID_IO_VOLUME_LOCK indicam que uma operação está sendo tentada. Você deve agir na notificação do evento e registrar a ação executada. Os eventos GUID_IO_VOLUME_DISMOUNT_FAILED e GUID_IO_VOLUME_LOCK_FAILED indicam que a tentativa de operação falhou. Em seguida, você pode usar seu registro para desfazer as ações feitas em resposta à operação.

O membro dbch_hdevnotify da estrutura DEV_BROADCAST_HANDLE indica o dispositivo afetado. Observe que esse é o identificador de notificação do dispositivo retornado por RegisterDeviceNotification, não um identificador de volume. Para executar operações no volume, mapeie esse identificador para o identificador de volume correspondente.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows XP
Servidor mínimo com suporte
Windows Server 2003
parâmetro
IoEvent.h