阅读:1752回复:7
关于用应用程序读写Usb接口的问题(暴难)!解决就给分
查找到usb的device name并且用createfile打开pipe02以后,用writefile写数据老是失败,是什么原因呢?
CUsbAccess mx1usb; UpdateData(TRUE); LPGUID pGuidMx1 = (LPGUID)&MX1USB_GUID; //if(""==m_PipeName) MessageBox("Open Usb Device"); char *m_PiPeNameChar=m_PipeName.GetBufferSetLength(m_PipeName.GetLength()); hMx1Usb=mx1usb.OpenUsbPipe(pGuidMx1,m_PiPeNameChar); //打开改USB的pipe //开始写数据 int bResult; DWORD nBytes; UpdateData(TRUE); DWORD m_WriteDataSize=m_WriteData.GetLength(); char *m_WriteDataChar=m_WriteData.GetBufferSetLength(m_WriteDataSize); bResult=WriteFile(hMx1Usb,m_WriteDataChar,m_WriteDataSize,&nBytes,NULL); if(bResult!=0) MessageBox("Write Succeed!","",0); |
|
沙发#
发布于:2004-09-30 08:59
没人知道吗?我的设备是U盘,怎么得到它的Pipename呢?
我的目的就是通过一个应用程序可以读写U盘,也就是把字符发到Usb的epx 的Fifo中. 谁能帮帮我啊,谢谢了 |
|
板凳#
发布于:2004-09-30 09:30
u盘驱动不是microsoft自带的吗?你怎么可以得到他的guid呢?
或者你是在win98下? |
|
地板#
发布于:2004-10-03 15:55
在注册表里面可以查到 :)
|
|
地下室#
发布于:2004-10-09 09:02
你的管道句柄是否是有效的,通过管道名打开它要驱动能根据你的PIPE_NAME来枚举其句柄。
最有可能是固件不让你随机写数据。你可以参考其协议的格式再试试。 |
|
|
5楼#
发布于:2004-10-09 12:02
管道句柄是在驱动里面设定的吧?
|
|
6楼#
发布于:2004-10-09 12:17
OK了吗?有些没看懂你的问题,我以前碰到过这样的问题,是通过固件解决的,是由于固件的反应速度慢造成的,不知你的问题是否和我的一样。
|
|
7楼#
发布于:2004-10-09 15:26
我的意思是这样的
我想直接和U盘通信,用createfile打开pipe01然后操作,这样的话需要usbstor.sys驱动支持该管道名才能成功吧? |
|