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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per