阅读:5410回复:6
跪地求答案,createfile打开USB读写的问题
公司有一设备,是一种USB TO MIDI 的适配器,一端通过USB接PC,不需要外加驱动,电脑不能认出来。(我也不知道是HID,还是什么)
没有任何的资料,更别说驱动的资料了。 我就用以下的方法来找到它。 GUID myguid={0xA5DCBF10L,0x6530,0x11D2,{0x90,0x1F,0x00,0xC0,0x4F,0xB9,0x51,0xED}}; hDevInfo=SetupDiGetClassDevs(pGuid,0,0,DIGCF_PRESENT|DIGCF_INTERFACEDEVICE); SetupDiEnumDeviceInterfaces(hDevInfo,NULL,pGuid,nIndex,&deviceInfoData); SetupDiGetInterfaceDeviceDetail(hDvcInfo,DvcInfoData,pDevData,iReqLen,NULL,NULL); 来取得pDevData->DevicePath, \\?\usb#vid_0763&pid_0150#5&ce1c55b&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed} 因为该设备是连接在电子琴上的,当弹奏电子琴时会有MIDI数据传输到PC上,而我需要把这个数据读出来。 我用USBVIEW查看设备的信息: Device Descriptor: bcdUSB: 0x0100 bDeviceClass: 0x00 bDeviceSubClass: 0x00 bDeviceProtocol: 0x00 bMaxPacketSize0: 0x40 (64) idVendor: 0x0763 idProduct: 0x0150 bcdDevice: 0x0125 iManufacturer: 0x01 iProduct: 0x02 iSerialNumber: 0x00 bNumConfigurations: 0x01 ConnectionStatus: DeviceConnected Current Config Value: 0x01 Device Bus Speed: Full Device Address: 0x01 Open Pipes: 2 Endpoint Descriptor: bEndpointAddress: 0x81 Transfer Type: Bulk wMaxPacketSize: 0x0040 (64) wInterval: 0x0000 bSyncAddress: 0x00 Endpoint Descriptor: bEndpointAddress: 0x02 Transfer Type: Bulk wMaxPacketSize: 0x0040 (64) wInterval: 0x0000 bSyncAddress: 0x00 跟我取得的pDevData->DevicePath相同,所以我设备是找到了。 直接createfile(pDevData->DevicePath,.....),这样读不到任何东西,找了好多资料在网上,说需要管道PIPE,而且PIPE名字是驱动里面规定的,我汗了。。。。,我这没有任何驱动的资料呀,T.T,T.T 求救各位大牛,PIPE应该是多少,除了这个方法外,还有没有其他的方法可以读数据? USB没有统一的PIPE命名吗?我试过了pipe0,pipe1,读数据的时候,ReadFile会返回-1,GetLastError说句柄出错.... 我没办法了,求救,跪地求救!!! |
|
沙发#
发布于:2009-07-02 17:48
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2009-07-02 18:24
有可能驱动中就不提供ReadFile(),WriteFile()接口,只有IOControl,两个端点是什么?
|
|
5楼#
发布于:2009-07-03 12:21
这个设备不需要驱动?如果不需要驱动,他一定是某一类Windows支持的设备,你可以查一下设备的类型.
|
|
6楼#
发布于:2009-07-03 18:08
|
|