под управлением Windows функция устройства CoInstaller как это, от образца Microsoft WDK Тостер:Как узнать, присутствует ли устройство или нет (присутствует = подключено) от кода CoInstaller?
extern"C" __declspec(dllexport) DWORD CALLBACK
ToasterCoInstaller (
__in DI_FUNCTION InstallFunction,
__in HDEVINFO Dis,
__in PSP_DEVINFO_DATA Did,
__inout PCOINSTALLER_CONTEXT_DATA Context
)
{
...
}
Я знаю, что Dis и ли пара используется для идентификации devnode. Даже если устройство было отключено от системы (например, отключите USB-диск), пользователь все равно может сообщить диспетчеру устройств показывать не существующие устройства, а затем наш Co-installer может по-прежнему получать DIS-DID с этого устройства без подключения - потому что этот devnode был зарегистрирован в реестре.
Итак, мой вопрос ясен, как определить из ToasterCoInstaller(), относится ли текущий DIS-DID к настоящему или неустановленному устройству?
Один из способов я могу думать используют SetupDiGetClassDevs
, чтобы найти все DIGCF_PRESENT
devnodes, а затем сравнить их устройства-экземпляр-идентификатор к поиску информации один, если не найдено, я могу сделать вывод, что запрос ДИС-DID нет.
Но есть ли более сжатый способ? Некоторые конкретные SetupDi ... могут напрямую ответить на ответ?