Condividi tramite


Gestione di un evento GUID_TARGET_DEVICE_QUERY_REMOVE

Prima che il gestore PnP invii un IRP_MN_QUERY_REMOVE_DEVICE IRP ai driver per un dispositivo, chiama le routine di callback di notifica registrate per EventCategoryTargetDeviceChange nel dispositivo. Il gestore PnP specifica una struttura di notifica. Evento di GUID_TARGET_DEVICE_QUERY_REMOVE.

In risposta a tale notifica, la routine di callback determina se il dispositivo può essere rimosso senza interrompere il sistema.

Se il dispositivo non deve essere rimosso, la routine di callback restituisce STATUS_UNSUCCESSFUL. In risposta a questo stato, la gestione PnP interrompe l'elaborazione di query-remove e il dispositivo non verrà rimosso.

Se il dispositivo può essere rimosso, la routine di callback deve eseguire qualsiasi operazione appropriata per prepararsi per la rimozione del dispositivo, ad esempio la chiusura di eventuali handle aperti nel dispositivo (se possibile). Se gli handle rimangono aperti nel dispositivo, la gestione PnP non può rimuovere il dispositivo e la gestione PnP interrompe l'elaborazione di query-remove.

Quando si gestisce correttamente un evento GUID_TARGET_DEVICE_QUERY_REMOVE, una routine di callback di notifica deve:

  • Chiudere gli handle aperti al dispositivo.

  • Se il driver ha un riferimento in sospeso sull'oggetto file, dereferenziare l'oggetto file.

  • Rimanere registrati per le notifiche future di EventCategoryTargetDeviceChange . Questo è importante perché l'operazione di rimozione in sospeso potrebbe essere annullata.

La chiusura di un handle a un dispositivo non annulla la registrazione di un driver per la notifica di modifica del dispositivo di destinazione PnP. Il gestore PnP può comunque chiamare la routine di callback di notifica del driver, ma in tali chiamate l'oggetto file in NotificationStructure non è valido.