Compruebe si existe un controlador de Windows para una ID de dispositivo dada

Estoy escribiendo una biblioteca de Windows usando C ++. Esta biblioteca debería poder verificar si el controlador de dispositivo de un dispositivo específico está instalado en el sistema. Así que estoy buscando una manera de verificar si un controlador está instalado para unIdentificación del dispositivo.

Hasta ahora, encontré esta información:

SetupDiBuildDriverInfoList enumera los controladores disponibles para determinados dispositivos. Sin embargo, tengo que proporcionar más que solo una ID de dispositivo.

SetupDiGetClassDevs parece que devuelve exactamente lo que necesito para llamar a SetupDiBuildDriverInfoList, pero aún no toma una ID de dispositivo como entrada. Puede tomar un GUID de una clase de configuración / interfaz de dispositivo, pero si lo entiendo correctamente, un controlador específico del proveedor no tiene dicho GUID. También puede tomar un enumerador PnP, del cual no sé lo suficiente como para decir si puedo usar eso de alguna manera. O finalmente, puede tomar unID de instancia de dispositivo - pero no una ID de dispositivo.

Obviamente, quiero verificar cualquier dispositivo del mismo tipo, por lo que no es posible consultar por ID de instancia de dispositivo. Entonces, la pregunta es: ¿cómo verifico si el controlador para una ID de dispositivo dada (o cualquier otra información que pueda identificar el dispositivo; supongo que la ID de dispositivo es lo correcto aquí) está instalado, usando las funciones API que he enumerado ( o de cualquier otra manera)?

Respuestas a la pregunta(2)

Su respuesta a la pregunta