Usar la biblioteca WMI para registrar bloques
Un controlador puede usar la biblioteca WMI para controlar IRP_MN_REGINFO y IRP_MN_REGINFO_EX solicitudes si está registrando bloques que no usan nombres de instancia dinámicos o que usan nombres de instancia estáticos basados en una cadena de nombre base definida por el controlador o PDO. En este caso, el controlador:
Llama a WmiSystemControl con un puntero al objeto de dispositivo del controlador, un puntero a una estructura de WMILIB_CONTEXT y un puntero al IRP.
La estructura WMILIB_CONTEXT indica el número de bloques que se van a registrar (GuidCount) y apunta a una lista de estructuras WMIGUIDREGINFO (GuidList) que especifican el GUID, el número de instancias y las marcas de registro que pertenecen al bloque correspondiente. También define los puntos de entrada para las rutinas de devolución de llamada de DpWmiXxx obligatorias y opcionales del controlador.
Cuando WMI llama a la rutina DpWmiQueryReginfo del controlador, el controlador especifica la ruta de acceso del registro del controlador, su nombre de recurso MOF, marcas de registro que pertenecen a todos sus bloques e información que WMI usa para asignar nombres a instancias de los bloques de datos del controlador, que podrían ser un puntero al objeto de dispositivo físico pasado a la rutina AddDevice del controlador o a una cadena en la que se basen los nombres de instancia estáticos.
Un controlador debe inicializar los puntos de entrada para sus rutinas de devolución de llamada DpWmiXxx en la estructura de WMILIB_CONTEXT antes de llamar a WmiSystemControl, pero puede posponer la inicialización de GuidCount y GuidList en la estructura de WMILIB_CONTEXT hasta que WMI llame a la rutina DpWmiQueryReginfo del controlador.