如果adb驱动安装成功,会在系统中多出来一个相应的设备
这个设备的guid定义如下:
见 https://gitorious.org/0xdroid/development/source/49678b93be8a1979527a41f294812820fbce9a54:host/windows/usb/api/adb_api_extra.h#L66-67
// {F72FE0D4-CBCB-407d-8814-9ED673D0DD6B}
/// Our USB class id that driver uses to register our device
#define ANDROID_USB_CLASS_ID \
{0xf72fe0d4, 0xcbcb, 0x407d, {0x88, 0x14, 0x9e, 0xd6, 0x73, 0xd0, 0xdd, 0x6b}};
用这个uid 可以对系统顺存在的adb设备进行枚举,从而判断出是否安装adb驱动成功。
// Now iterate over host controllers using the new GUID based interface
//
GUID AdbGuid = ANDROID_USB_CLASS_ID
deviceInfo = SetupDiGetClassDevs((LPGUID)&&AdbGuid ,
NULL,
NULL,
(DIGCF_PRESENT | DIGCF_DEVICEINTERFACE));
bool adbDriverOK = false;
if (deviceInfo != INVALID_HANDLE_VALUE)
{
deviceInfoData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
if(SetupDiEnumDeviceInterfaces(deviceInfo,
0,
(LPGUID)&AdbGuid,
index,
&deviceInfoData))
adbDriverOK = true;
SetupDiDestroyDeviceInfoList(deviceInfo);
}