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.
- Trate os dados do evento como uma estrutura DEV_BROADCAST_HDR . Verifique se o membro do dbch_devicetype está definido como DBT_DEVTYP_HANDLE.
- Se dbch_devicetype for DBT_DEVTYP_HANDLE, os dados do evento serão realmente um ponteiro para uma estrutura de DEV_BROADCAST_HANDLE .
- 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 |
|