Funzione IoReportTargetDeviceChangeAsynchronous (wdm.h)

La routine IoReportTargetDeviceChangeAsynchronous notifica alla gestione PnP che si è verificato un evento personalizzato in un dispositivo.

Sintassi

NTSTATUS IoReportTargetDeviceChangeAsynchronous(
  [in]           PDEVICE_OBJECT                   PhysicalDeviceObject,
  [in]           PVOID                            NotificationStructure,
  [in, optional] PDEVICE_CHANGE_COMPLETE_CALLBACK Callback,
  [in, out]      PVOID                            Context
);

Parametri

[in] PhysicalDeviceObject

Puntatore all'oggetto PDO del dispositivo segnalato.

[in] NotificationStructure

Puntatore a una struttura di TARGET_DEVICE_CUSTOM_NOTIFICATION fornita dal chiamante che descrive l'evento personalizzato. Il gestore PnP invia questa struttura ai driver registrati per la notifica dell'evento.

Questa struttura fornita dal chiamante può essere liberata una volta restituita la routine, poiché il gestore PnP crea una copia superficiale e usa la copia per notificare i driver. La copia viene liberata automaticamente dal gestore PnP una volta che non è più necessaria. Vedere La sezione Osservazioni sui requisiti del pool di allocazione.

NotificationStructure. FileObject deve essere NULL. NotificationStructure. L'evento deve contenere il GUID personalizzato per l'evento. Gli altri campi di NotificationStructure devono essere compilati in base alle esigenze dell'evento personalizzato.

Il gestore PnP compila La struttura di notifica. Campo FileObject quando invia notifiche ai registranti.

[in, optional] Callback

Facoltativamente punta a una routine fornita dal chiamante che il gestore PnP chiama dopo aver completato la notifica ai driver registrati per questo evento personalizzato.

La routine di callback ha il tipo seguente:

typedef
VOID
(*PDEVICE_CHANGE_COMPLETE_CALLBACK)(
    IN PVOID Context
    );

Una routine di callback completa del dispositivo non deve bloccare e non chiamare routine sincrone che generano eventi PnP.

Il gestore PnP chiama routine di callback complete del dispositivo in IRQL = PASSIVE_LEVEL.

[in, out] Context

Facoltativamente, punta a una struttura di contesto fornita dal chiamante che il gestore PnP passa alla routine callback . Il chiamante deve allocare questa struttura dalla memoria non in pagina.

Valore restituito

Codice restituito Descrizione
STATUS_INVALID_DEVICE_REQUEST Il chiamante ha specificato un evento PnP di sistema, ad esempio GUID_TARGET_DEVICE_QUERY_REMOVE. Questa routine è solo per eventi personalizzati.

Commenti

Dopo la routine IoReportTargetDeviceChangeAsynchronous notifica al gestore PnP che si è verificato un evento personalizzato in un dispositivo, la routine restituisce immediatamente; non attende mentre il gestore PnP invia una notifica dell'evento ai driver registrati per la notifica nel dispositivo. Non usare questa routine per segnalare gli eventi PnP del sistema, ad esempio GUID_TARGET_DEVICE_REMOVE_COMPLETE.

Un driver che definisce un evento di dispositivo personalizzato chiama IoReportTargetDeviceChangeAsynchronous per informare la gestione PnP che si è verificato l'evento personalizzato. La notifica personalizzata può essere usata per eventi come una modifica dell'etichetta del volume.

La struttura di notifica personalizzata contiene un evento definito dal driver con il proprio GUID. I writer di driver possono generare GUID con Uuidgen.exe o Guidgen.exe (inclusi nel Microsoft Windows SDK).

Quando un driver chiama questa routine durante la gestione di un evento, un IRP_MN_REMOVE_DEVICE o un IRP_MN_SURPRISE_REMOVAL, il gestore PnP chiama la routine callback del driver dopo che il driver restituisce e lo stack si rimuove.

I chiamanti di IoReportTargetDeviceChangeAsynchronous devono essere in esecuzione in IRQL <= DISPATCH_LEVEL. Se un writer del driver chiama questa routine in IRQL = DISPATCH_LEVEL, La struttura di notifica deve essere allocata dalla memoria non di pagina.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (vedere sezione Osservazioni)
Regole di conformità DDI HwStorPortProhibitedDDDIs(storport)

Vedi anche

IoReportTargetDeviceChange

TARGET_DEVICE_CUSTOM_NOTIFICATION