Condividi tramite


Eventi del dispositivo (IoEvent.h)

Le applicazioni, inclusi i servizi, possono registrarsi per ricevere la notifica degli eventi del dispositivo. Ad esempio, un servizio di catalogo può ricevere un avviso sui volumi montati o smontati in modo da poter modificare i percorsi ai file nel volume. Il sistema notifica a un'applicazione che si è verificato un evento del dispositivo inviando all'applicazione un messaggio di WM_DEVICECHANGE . Il sistema notifica a un servizio che si è verificato un evento del dispositivo richiamando la funzione del gestore eventi del servizio, HandlerEx.

Per ricevere avvisi sugli eventi del dispositivo, chiamare la funzione RegisterDeviceNotification con una struttura DEV_BROADCAST_HANDLE . Assicurarsi di impostare il membro dbch_handle sull'handle del dispositivo ottenuto dalla funzione CreateFile . Impostare anche il membro dbch_devicetype su DBT_DEVTYP_HANDLE. La funzione restituisce un handle di notifica del dispositivo. Si noti che questo non è lo stesso dell'handle del volume.

Quando l'applicazione riceve la notifica, se il tipo di evento è DBT_CUSTOMEVENT, potrebbe essere stato ricevuto uno degli eventi del dispositivo definiti in IoEvent.h. Per determinare se si è verificato uno di questi eventi, seguire questa procedura.

  1. Considerare i dati dell'evento come struttura DEV_BROADCAST_HDR . Verificare che il membro dbch_devicetype sia impostato su DBT_DEVTYP_HANDLE.
  2. Se dbch_devicetype è DBT_DEVTYP_HANDLE , i dati dell'evento sono realmente un puntatore a una struttura DEV_BROADCAST_HANDLE .
  3. Confrontare il membro dbch_eventguid con il GUIDelencato nella tabella seguente usando la funzione IsEqualGUID .

GUID_IO_CDROM_EXCLUSIVE_LOCK

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

Il dispositivo CD-ROM è stato bloccato per l'accesso esclusivo.

Windows Server 2003 e Windows XP: Il supporto per questo valore richiede IMAPI 2.0. Per altre informazioni, vedere API Mastering immagini.

GUID_IO_CDROM_EXCLUSIVE_UNLOCK

a3b6d27d-5e35-4885-81e5-ee18c00ed779

È stato sbloccato un dispositivo CD-ROM bloccato per l'accesso esclusivo.

Windows Server 2003 e Windows XP: Il supporto per questo valore richiede IMAPI 2.0. Per altre informazioni, vedere API Mastering immagini.

GUID_IO_DEVICE_BECOMING_READY

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

Lo spin-up multimediale è in corso.

GUID_IO_DEVICE_EXTERNAL_REQUEST

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

Esistono diverse possibili cause per questo evento; per altre informazioni, vedere la specifica T10 MMC del comando GET EVENT STATUS NOTIFICATION.

GUID_IO_MEDIA_ARRIVAL

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

I supporti rimovibili sono stati aggiunti al dispositivo. Il membro dbch_data è un puntatore a una struttura di CLASS_MEDIA_CHANGE_CONTEXT . Il membro NewState fornisce informazioni sullo stato. Ad esempio, un valore di MediaUnavailable indica che il supporto non è disponibile, ad esempio a causa di una sessione di registrazione attiva.

Windows XP: Il dbch_data membro è un valore ULONG che rappresenta il numero di volte in cui il supporto è stato modificato dall'avvio del sistema.

GUID_IO_MEDIA_EJECT_REQUEST

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

L'unità del supporto rimovibile ha ricevuto una richiesta dall'utente per espellere lo slot o il supporto specificato.

GUID_IO_MEDIA_REMOVAL

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

I supporti rimovibili sono stati rimossi dal dispositivo o non sono disponibili. Il membro dbch_data è un puntatore a una struttura di CLASS_MEDIA_CHANGE_CONTEXT . Il membro NewState fornisce informazioni sullo stato. Ad esempio, un valore di MediaUnavailable indica che il supporto non è disponibile, ad esempio a causa di una sessione di registrazione attiva.

Windows XP: Il dbch_data membro è un valore ULONG che rappresenta il numero di volte in cui il supporto è stato modificato dall'avvio del sistema.

GUID_IO_VOLUME_CHANGE

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

L'etichetta del volume è stata modificata.

GUID_IO_VOLUME_CHANGE_SIZE

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

Le dimensioni del file system nel volume sono state modificate.

Windows Server 2003 e Windows XP: Questo valore non è supportato.

GUID_IO_VOLUME_DISMOUNT

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

Un tentativo di smontare il volume è in corso. È consigliabile chiudere tutti gli handle ai file e alle directory nel volume. Questo evento non sarà necessariamente preceduto da un evento GUID_IO_VOLUME_LOCK .

GUID_IO_VOLUME_DISMOUNT_FAILED

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

Tentativo di smontare un volume non riuscito. Questo accade spesso perché un altro processo non è riuscito a rispondere a un GUID_IO_VOLUME_DISMOUNT avviso chiudendo i relativi handle in sospeso. Poiché la smontaggio non è riuscita, è possibile riaprire eventuali handle nel volume interessato.

GUID_IO_VOLUME_FVE_STATUS_CHANGE

062998b2-ee1f-4b6a-b857-e76cbbe9a6da

Lo stato di Crittografia unità BitLocker del volume è cambiato. Questo evento viene segnalato quando BitLocker è abilitato o disabilitato o quando inizia la crittografia, termina, sospende o riprende.

Windows Server 2003 e Windows XP: Questo valore non è supportato.

GUID_IO_VOLUME_LOCK

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

Un altro processo sta tentando di bloccare il volume. È consigliabile chiudere tutti gli handle ai file e alle directory nel volume.

GUID_IO_VOLUME_LOCK_FAILED

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

Tentativo di bloccare un volume non riuscito. Questo accade spesso perché un altro processo non è riuscito a rispondere a un evento GUID_IO_VOLUME_LOCK chiudendo i relativi handle in sospeso. Poiché il blocco non è riuscito, è possibile riaprire eventuali handle nel volume interessato.

GUID_IO_VOLUME_MOUNT

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

Il volume è stato montato da un altro processo. È possibile aprire uno o più handle.

GUID_IO_VOLUME_NAME_CHANGE

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

Il nome del volume è stato modificato.

GUID_IO_VOLUME_NEED_CHKDSK

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

Un file system ha rilevato il danneggiamento del volume. L'applicazione deve eseguire CHKDSK nel volume o inviare una notifica all'utente.

Windows Server 2003 e Windows XP: Questo valore non è supportato.

GUID_IO_VOLUME_PHYSICAL_CONFIGURATION_CHANGE

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

Il trucco fisico o lo stato fisico corrente del volume è cambiato.

GUID_IO_VOLUME_PREPARING_EJECT

c79eb16e-0dac-4e7a-a86c-b25ceeaa8f6

Il file system sta preparando il disco da inserire. Ad esempio, il file system arresta un'operazione di formattazione in background o chiude la sessione sui supporti di scrittura.

Windows Server 2003 e Windows XP: Questo valore non è supportato.

GUID_IO_VOLUME_UNIQUE_ID_CHANGE

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

L'identificatore univoco del volume è stato modificato. Per altre informazioni sull'identificatore univoco, vedere IOCTL_MOUNTDEV_QUERY_UNIQUE_ID.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato fino a Windows Server 2008 R2 e Windows 7.

GUID_IO_VOLUME_UNLOCK

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

Il volume è stato sbloccato da un altro processo. È possibile aprire uno o più handle.

GUID_IO_VOLUME_WEARING_OUT

873113ca-1486-4508-82ac-c3b2e5297aaaa

Il supporto sta indossando. Questo evento viene inviato quando un file system determina che la frequenza di errore in un volume è troppo elevata oppure lo spazio di sostituzione dei difetti è quasi esaurito.

Windows Server 2003 e Windows XP: Questo valore non è supportato.

Commenti

Gli eventi GUID_IO_VOLUME_DISMOUNT e GUID_IO_VOLUME_DISMOUNT_FAILED sono correlati, come sono l'evento GUID_IO_VOLUME_LOCK e GUID_IO_VOLUME_LOCK_FAILED. Gli eventi GUID_IO_VOLUME_DISMOUNT e GUID_IO_VOLUME_LOCK indicano che viene tentata un'operazione. È consigliabile agire sulla notifica dell'evento e registrare l'azione eseguita. Gli eventi GUID_IO_VOLUME_DISMOUNT_FAILED e GUID_IO_VOLUME_LOCK_FAILED indicano che l'operazione tentata non è riuscita. È quindi possibile usare il record per annullare le azioni eseguite in risposta all'operazione.

Il dbch_hdevnotify membro della struttura DEV_BROADCAST_HANDLE indica il dispositivo interessato. Si noti che si tratta dell'handle di notifica del dispositivo restituito da RegisterDeviceNotification, non da un handle di volume. Per eseguire operazioni sul volume, eseguire il mapping di questo handle all'handle del volume corrispondente.

Requisiti

Requisito Valore
Client minimo supportato
Windows XP
Server minimo supportato
Windows Server 2003
Intestazione
IoEvent.h