IRP_MN_DISABLE_COLLECTION
Tout pilote WMI qui enregistre un ou plusieurs de ses blocs de données comme coûteux à collecter doit gérer cette IRP. Un pilote peut gérer les IRP WMI en appelant WmiSystemControl ou en gérant l’IRP lui-même, comme décrit dans Gestion des demandes WMI.
Si un pilote appelle WmiSystemControl pour gérer une demande de IRP_MN_DISABLE_COLLECTION , WMI appelle à son tour la routine DpWmiFunctionControl du pilote.
Code majeur
Date d’envoi
WMI envoie cette IRP pour demander au pilote de cesser d’accumuler des données pour un bloc de données que le pilote a enregistré comme coûteux à collecter et pour lequel la collecte de données a été activée.
WMI envoie cette IRP à IRQL = PASSIVE_LEVEL dans un contexte de thread arbitraire.
Paramètres d’entrée
Parameters.WMI.ProviderId pointe vers l’objet de périphérique du pilote qui doit répondre à la demande. Ce pointeur se trouve à l’emplacement de la pile d’E/S du pilote dans l’IRP.
Parameters.WMI.DataPath pointe vers un GUID qui identifie le bloc de données pour lequel l’accumulation de données doit être arrêtée.
Paramètres de sortie
Aucun.
Bloc d’état E/S
Si le pilote gère l’IRP en appelant WmiSystemControl, WMI définit Irp-IoStatus.Status> et Irp-IoStatus.Information> dans le bloc d’E/S status.
Dans le cas contraire, le pilote définit Irp-IoStatus.Status> sur STATUS_SUCCESS ou sur un status d’erreur approprié, par exemple :
STATUS_WMI_GUID_NOT_FOUND
STATUS_INVALID_DEVICE_REQUEST
En cas de réussite, un pilote définit Irp-IoStatus.Information> sur zéro.
Opération
Un pilote enregistre un bloc de données comme coûteux à collecter en définissant WMIREG_FLAG_EXPENSIVE dans le membre Flags de la structure WMIREGGUID ou WMIGUIDREGINFO que le pilote transmet à WMI lorsqu’il inscrit ou met à jour le bloc de données. Un pilote n’a pas besoin d’accumuler des données pour un tel bloc tant qu’il n’a pas reçu une demande explicite d’activation de la collecte.
Si un pilote gère les IIP WMI en appelant WmiSystemControl, cette routine appelle la routine DpWmiFunctionControl du pilote ou retourne STATUS_SUCCESS si le pilote ne définit pas la routine.
Si un pilote gère lui-même une requête IRP_MN_DISABLE_COLLECTION , il ne doit le faire que si Parameters.WMI.ProviderId pointe vers le même objet d’appareil que le pointeur que le pilote a transmis à IoWMIRegistrationControl. Dans le cas contraire, le pilote doit transférer la demande au pilote inférieur suivant.
Avant de gérer la demande, le pilote doit déterminer si Parameters.WMI.DataPath pointe vers un GUID pris en charge par le pilote. Si ce n’est pas le cas, le pilote doit échouer l’IRP et retourner STATUS_WMI_GUID_NOT_FOUND. Si le bloc de données est valide mais n’a pas été inscrit auprès de WMIREG_FLAG_EXPENSIVE, le pilote peut retourner STATUS_SUCCESS et n’effectuer aucune action supplémentaire.
Il n’est pas nécessaire pour le pilote de case activée si la collecte de données est déjà désactivée, car WMI envoie une seule demande de désactivation pour le bloc de données lorsque le dernier consommateur de données désactive la collecte pour ce bloc. WMI n’envoie pas d’autre demande de désactivation sans demande d’intervention à activer.
Spécifications
En-tête |
Wdm.h (inclure Wdm.h, Ntddk.h ou Ntifs.h) |