Gestione delle richieste WMI
Tutti i driver devono impostare un punto di ingresso della tabella di invio per una routine DispatchSystemControl per gestire le richieste WMI. Se un driver viene registrato come provider di dati WMI, deve gestire tutte le richieste WMI. In caso contrario, il driver deve inoltrare tutte le richieste WMI al driver inferiore successivo.
Tutti gli IR WMI hanno il codice principale IRP_MJ_SYSTEM_CONTROL e uno dei codici secondari seguenti:
IRP_MN_REGINFO, IRP_MN_REGINFO_EX: query o aggiornamenti delle informazioni di registrazione di un driver dopo che il driver ha chiamato IoWMIRegistrationControl.
IRP_MN_QUERY_ALL_DATA, IRP_MN_QUERY_SINGLE_INSTANCE: query per tutte le istanze o una singola istanza di un determinato blocco di dati.
IRP_MN_CHANGE_SINGLE_ITEM, IRP_MN_CHANGE_SINGLE_INSTANCE: richiede al driver di modificare un singolo elemento o più elementi in un'istanza di un blocco di dati.
IRP_MN_ENABLE_COLLECTION, IRP_MN_DISABLE_COLLECTION: richiede al driver di avviare l'accumulazione di dati per un blocco registrato come costoso da raccogliere o per arrestare l'accumulazione di dati per tale blocco.
IRP_MN_ENABLE_EVENTS, IRP_MN_DISABLE_EVENTS: richiede al driver di avviare l'invio di una notifica di un determinato evento se l'evento si verifica durante l'abilitazione o per interrompere l'invio di una notifica di tale evento.
IRP_MN_EXECUTE_METHOD: richiede al driver di eseguire un metodo associato a un blocco di dati.
Il componente in modalità kernel WMI invia indirizzi IP WMI in qualsiasi momento dopo la corretta registrazione di un driver come provider di dati WMI, in genere quando un consumer di dati in modalità utente ha richiesto informazioni WMI per un dispositivo del driver. Se un driver viene registrato come provider di dati WMI chiamando IoWMIRegistrationControl, deve gestire ogni richiesta WMI successiva in uno dei modi seguenti:
Chiamare la routine della libreria WMI in modalità kernel WmiSystemControl. Un driver può chiamare WmiSystemControl per gestire le richieste relative solo ai blocchi che non usano nomi di istanza dinamica e che i nomi delle istanze statiche di base in una singola stringa di nome di base o l'ID istanza del dispositivo di un oggetto PDO. Per altre informazioni, vedere Chiamata di WmiSystemControl per gestire gli indirizzi IRP WMI.
Nella routine DispatchSystemControl elaborare e completare qualsiasi richiesta contrassegnata con il puntatore all'oggetto dispositivo passato dal driver a IoWMIRegistrationControl e inoltrare altre richieste di IRP_MJ_SYSTEM_CONTROL al driver inferiore successivo. Per altre informazioni, vedere Elaborazione di IRP WMI in una routine DispatchSystemControl.
Per un elenco degli irp secondari WMI, vedere IRP secondari WMI.