欢迎来到天天文库
浏览记录
ID:6079965
大小:158.00 KB
页数:18页
时间:2018-01-02
《windows sdk编程系列文章28 ---- 遍历usb设备,获取扫描仪序列号》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、windowssdk编程系列文章----遍历USB设备,获取扫描仪序列号之一2008-08-0816:33理论: 对于USB接口的设备,现在越来越多了。本篇我们就通过获取一个USB扫描仪设备中的序列号,来介绍如何获取usb设备的一些硬件信息。对于usb设备都是采用HCD0,HCD1,HCD2,HCD3等符号描述的。如下图:因此,有了这个名字,我们就可以使用CreateFile来打开usb设备。然后使用DeviceIoControl函数与usb设备通讯了。HCD是hostcontrollerdriver的简写。需要了解
2、详情的,还要仔细的阅读usb协议。usb的通讯基本步骤如下图所示:基本步骤: 1)打开HCD%X 2)得到上面的USBroothub 3)遍历usbroothub上连接的usb设备。获取信息 4)如果有多个usb口,循环前3步。下面介绍通讯用的几个IOCTL:1)USB_HCD_DRIVERKEY_NAME,用于获取USB设备驱动在注册表中的键名。相应的一个结构体是:typedefstruct_USB_HCD_DRIVERKEY_NAME{ ULONG ActualLength; WCHAR Dr
3、iverKeyName[1];}USB_HCD_DRIVERKEY_NAME,*PUSB_HCD_DRIVERKEY_NAME;2)IOCTL_USB_GET_ROOT_HUB_NAME,用于获取roothub键名。使用的结构体,跟上面一样。typedefstruct_USB_ROOT_HUB_NAME{ ULONGActualLength; WCHARRootHubName[1];}USB_ROOT_HUB_NAME,*PUSB_ROOT_HUB_NAME;3)IOCTL_USB_GET_NODE_INFORM
4、ATION,用于获取连接在roothub上的节点设备信息。也就是我们接在usb口上的所有usb设备的信息,对应的结构体:typedefstruct_USB_NODE_INFORMATION{ USB_HUB_NODENodeType; union{ USB_HUB_INFORMATIONHubInformation; USB_MI_PARENT_INFORMATIONMiParentInformation; }u;}USB_NODE_INFORMATION,*PUSB_NODE_IN
5、FORMATION;typedefstruct_USB_MI_PARENT_INFORMATION{ ULONGNumberOfInterfaces;}USB_MI_PARENT_INFORMATION,*PUSB_MI_PARENT_INFORMATION;typedefstruct_USB_HUB_INFORMATION{ USB_HUB_DESCRIPTORHubDescriptor; BOOLEANHubIsBusPowered;}USB_HUB_INFORMATION,*PUSB_HUB_INFOR
6、MATION;typedefstruct_USB_HUB_DESCRIPTOR{ UCHAR bDescriptorLength; //Lengthofthisdescriptor UCHAR bDescriptorType; //Hubconfigurationtype UCHAR bNumberOfPorts; //numberofportsonthishub USHORT wHubCharacteristics; /
7、/HubCharateristics UCHAR bPowerOnToPowerGood; //portpowerontillpowergoodin2ms UCHAR bHubControlCurrent; //maxcurrentinmA // //roomfor255portspowercontrolandremovablebitmask UCHAR bRemoveAndPowerMask[64]; }USB_HUB_DESCRIPTOR,*
8、PUSB_HUB_DESCRIPTOR;4)IOCTL_USB_GET_NODE_CONNECTION_INFORMATION,用于获取接在usb口上的单个usb设备的信息,对应的结构体:typedefstruct_USB_NODE_CONNECTION_INFORMATION{ ULONGConnectionI
此文档下载收益归作者所有