structure WMILIB_CONTEXT (wmilib.h)
La structure WMILIB_CONTEXT fournit des informations d’inscription pour les blocs de données et les blocs d’événements d’un pilote et définit des points d’entrée pour les routines de rappel de la bibliothèque WMI du pilote.
Syntaxe
typedef struct _WMILIB_CONTEXT {
ULONG GuidCount;
PWMIGUIDREGINFO GuidList;
PWMI_QUERY_REGINFO QueryWmiRegInfo;
PWMI_QUERY_DATABLOCK QueryWmiDataBlock;
PWMI_SET_DATABLOCK SetWmiDataBlock;
PWMI_SET_DATAITEM SetWmiDataItem;
PWMI_EXECUTE_METHOD ExecuteWmiMethod;
PWMI_FUNCTION_CONTROL WmiFunctionControl;
} WMILIB_CONTEXT, *PWMILIB_CONTEXT;
Membres
GuidCount
Spécifie le nombre de blocs inscrits par le pilote.
GuidList
Pointeur vers un tableau de structures GuidCountWMIGUIDREGINFO qui contiennent des informations d’inscription pour chaque bloc.
QueryWmiRegInfo
Pointeur vers la routine DpWmiQueryReginfo du pilote, qui est un point d’entrée obligatoire pour les pilotes qui appellent des routines de prise en charge de la bibliothèque WMI.
QueryWmiDataBlock
Pointeur vers la routine DpWmiQueryDataBlock du pilote, qui est un point d’entrée obligatoire pour les pilotes qui appellent des routines de prise en charge de la bibliothèque WMI.
SetWmiDataBlock
Pointeur vers la routine DpWmiSetDataBlock du pilote, qui est un point d’entrée facultatif pour les pilotes qui appellent des routines de prise en charge de la bibliothèque WMI. Si le pilote n’implémente pas cette routine, il doit définir ce membre sur NULL. Dans ce cas, WMI retourne STATUS_WMI_READ_ONLY à l’appelant en réponse à une demande IRP_MN_CHANGE_SINGLE_INSTANCE .
SetWmiDataItem
Pointeur vers la routine DpWmiSetDataItem du pilote, qui est un point d’entrée facultatif pour les pilotes qui appellent des routines de prise en charge de la bibliothèque WMI. Si le pilote n’implémente pas cette routine, il doit définir ce membre sur NULL. Dans ce cas, WMI retourne STATUS_WMI_READ_ONLY à l’appelant en réponse à une demande IRP_MN_CHANGE_SINGLE_ITEM .
ExecuteWmiMethod
Pointeur vers la routine DpWmiExecuteMethod du pilote, qui est un point d’entrée facultatif pour les pilotes qui appellent des routines de prise en charge de la bibliothèque WMI. Si le pilote n’implémente pas cette routine, il doit définir ce membre sur NULL. Dans ce cas, WMI retourne STATUS_INVALID_DEVICE_REQUEST à l’appelant en réponse à une demande IRP_MN_EXECUTE_METHOD .
WmiFunctionControl
Pointeur vers la routine DpWmiFunctionControl du pilote, qui est un point d’entrée facultatif pour les pilotes qui appellent des routines de prise en charge de la bibliothèque WMI. Si le pilote n’implémente pas cette routine, il doit définir ce membre sur NULL. Dans ce cas, WMI retourne STATUS_SUCCESS à l’appelant en réponse à une requête IRP_MN_ENABLE_XXX ou IRP_MN_DISABLE_XXX .
Remarques
Un pilote qui gère les IIP WMI en appelant des routines de prise en charge de bibliothèque WMI stocke une structure WMILIB_CONTEXT initialisée (ou un pointeur vers une telle structure) dans son extension d’appareil. Un pilote peut utiliser la même structure WMILIB_CONTEXT pour plusieurs objets d’appareil si chaque objet d’appareil fournit le même ensemble de blocs de données.
Lorsque le pilote reçoit une demande de IRP_MJ_SYSTEM_CONTROL , il appelle WmiSystemControl avec un pointeur vers sa structure WMILIB_CONTEXT , un pointeur vers son objet d’appareil et un pointeur vers l’IRP. WmiSystemControl détermine si l’IRP contient une requête WMI et, le cas échéant, gère la requête en appelant la routine DpWmiXxx appropriée du pilote.
La mémoire de cette structure peut être allouée à partir d’un pool paginé.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | wmilib.h (inclure Wmilib.h) |