1 枚举设备:因为微软已经提供USB驱动程序开发API接口,所以使用此API接口,进行设备枚举。
标准函数接口:ULONG DEVAPI SKF_EnumDev(BOOL bPresent, LPSTR szNameList, ULONG *pulSize)
输入参数:bPresent [IN] 为 TRUE 表示取当前设备状态为存在的设备列表。为 FALSE 表示取当前驱动支持的设备列表。
szNameList [OUT] 设备名称列表。如果该参数为 NULL,将由 pulSize 返回所需要的内存空间大小。每个设备的名称以单个‘\0’结束,以双‘\0’表示列表的结束。
pulSize [IN ,OUT] 输入时表示设备名称列表的缓冲区长度,输出时表示szNameList 所占用的空间大小。
实现:分为HID通信,USB Mass Storage,SCSI
1:HID通信,SCSI:两者区别在于设备类别不一样 ,也就是GUID值不同,例子中为HID通信
HidD_GetHidGuid(&HID_Guid);获得HID的GUID值;
然后通过hDevInfo=SetupDiGetClassDevs(&HID_Guid,NULL,NULL,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);函数获得满足该GUID值的设备列表
或者通过hDevInfo=SetupDiGetClassDevs(&GUID_DEVINTERFACE_CDROM,NULL,NULL,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);函数获得满足SCSI通信协议的