Marcas de registro de WMI
Un controlador indica si un bloque usa nombres de instancia estáticos o dinámicos y especifica otras características del bloque estableciendo marcas en la estructura WMIGUIDREGINFO o WMIREGGUID que pasa a WMI para registrar el bloque.
Un controlador indica que un bloque usa nombres de instancia estáticos estableciendo una de las marcas siguientes:
WMIREG_FLAG_INSTANCE_LIST indica que el controlador proporciona todos los nombres de instancia de una lista estática.
Un controlador solo puede establecer esta marca si registra bloques controlando las solicitudes IRP_MN_REGINFO o IRP_MN_REGINFO_EX , no llamando a WmiSystemControl. El controlador escribe las cadenas de nombre de instancia en el desplazamiento de bytes indicado por InstanceNameList en la estructura WMIREGGUID del bloque.
WMIREG_FLAG_INSTANCE_BASENAME indica a WMI que genere nombres de instancia estáticos a partir de una cadena de nombre base definida por el controlador.
Un controlador que controla un IRP_MN_REGINFO o IRP_MN_REGINFO_EX solicitud escribe la cadena de nombre base en el desplazamiento indicado por BaseNameOffset en la estructura WMIREGGUID del bloque.
Un controlador que llama a WmiSystemControl especifica la cadena de nombre base en el parámetro InstanceName de su rutina DpWmiQueryReginfo .
WMIREG_FLAG_INSTANCE_PDO indica a WMI que genere nombres de instancia estáticos a partir del identificador de instancia de dispositivo del PDO del controlador.
Un controlador que controla un IRP_MN_REGINFO o IRP_MN_REGINFO_EX solicitud escribe un puntero al PDO en el miembro Pdo de la estructura WMIREGGUID del bloque. Si la solicitud es IRP_MN_REGINFO_EX, el controlador debe aumentar el recuento de referencias en cada PDO pasado llamando a la rutina ObReferenceObject . (El sistema desreferenciará cada PDO más adelante).
Un controlador que llama a WmiSystemControl escribe un puntero al PDO en el parámetro Pdo de su rutina DpWmiQueryReginfo .
Para indicar que un bloque usa nombres de instancia dinámicos, el controlador no debe establecer ninguna de las marcas siguientes: WMIREG_FLAG_INSTANCE_LIST, WMIREG_FLAG_INSTANCE_PDO o WMIREG_FLAG_INSTANCE_BASENAME.
Un controlador indica que un bloque de datos es costoso recopilar estableciendo WMIREG_FLAG_EXPENSIVE. Esto indica a WMI que envíe una solicitud de IRP_MN_ENABLE_COLLECTION la primera vez que un cliente WMI abra el bloque de datos y una solicitud de IRP_MN_DISABLE_COLLECTION cuando el último cliente WMI cierre el bloque. El controlador no necesita recopilar datos para este bloque hasta que reciba una solicitud de IRP_MN_ENABLE_COLLECTION .
Un controlador indica un bloque de eventos estableciendo WMIREG_FLAG_EVENT_ONLY_GUID. Esto indica que el bloque se puede habilitar o deshabilitar solo como evento y no se puede consultar ni establecer.
Un controlador indica a WMI que quite un bloque registrado previamente estableciendo WMIREG_FLAG_REMOVE_GUID. Esta marca solo es válida en respuesta a una solicitud para actualizar la información de registro (IRP_MN_REGINFO o IRP_MN_REGINFO_EX con WMIUPDATE). Para obtener más información, vea Actualizar información de registro de WMI.