Я новичок в драйверах Windows, и в настоящее время я борюсь с функциями SetupApi. Я получил код библиотеки оболочки устройства USB от моего коллеги, которого я должен понять. Однако времени на вопросы очень мало, и я подал в отставку, чтобы помочь себе, пересмотрев код;).
В коде есть несколько функций, которые перечисляют USB-устройства, информацию об устройствах и интерфейсы устройств. Я запутался во всем этом перечислении.
Общим кодом в этих функциях является следующая строка:
deviceInfo = SetupDiGetClassDevs(NULL,
NULL, NULL,
DIGCF_ALLCLASSES | DIGCF_DEVICEINTERFACE);
Функция, которая определяет пути устройства, использует:
SetupDiEnumDeviceInterfaces(deviceInfo,
NULL,
&DRIVER_GUID,
memberIndex,
&interfaceData);
и
SetupDiGetDeviceInterfaceDetail(deviceInfo,
&interfaceData,
NULL, 0,
&requiredLength,
NULL);
в цикле while.
В то время как функция для получения версии драйвера использует:
SetupDiEnumDeviceInfo(devs, DeviceNo++, &devInfo)
и
SetupDiGetDeviceInfoListDetail(devs, &devInfoListDetail);
вместо.
Третья функция, которая определяет имена сервисов, использует:
devs = SetupDiGetClassDevs(NULL, "USB", NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
в начале, а затем:
SetupDiGetDeviceInfoListDetail(devs, &devInfoListDetail);
а также
SetupDiGetDeviceRegistryProperty(devs, &devInfo, SPDRP_HARDWAREID, &DataT, (PBYTE)hardwareID, sizeof(hardwareID), &dwSize);
Я прогуглил установочный api doc и обнаружил, что между интерфейсами и информацией об устройствах есть разница. Это звучит очень разумно, но я упускаю пример этих списков и того, как они связаны друг с другом, чтобы я мог более конкретно следовать по пути через эти списки.
Я имею в виду, получить список всех устройств, затем получить список всех интерфейсов, принадлежащих каждому устройству, а затем получить список драйверов для каждого из этих интерфейсов. Это должно выглядеть как дерево. Тем не менее, мой взгляд изнутри, и мне нравится смотреть изнутри.
Вот что я имел в виду, потерявшись во всем перечислении.
У кого-нибудь есть какая-нибудь ссылка или совет, как получить обзор, здесь?