阅读:1572回复:10
在应用程序中如何打开USB设备!!
我在应用程序中得到USB设备的GUID和VID,PID后如何得到该设备的名称(SymbolicName),以便用CreateFile打开!
|
|
沙发#
发布于:2004-07-10 07:52
郁闷!为何程序运行到那儿就出错了!GUID肯定是正确的!为何?
为何呢?请有经验的大哥给指点指点吧! |
|
板凳#
发布于:2004-07-09 22:06
后来我把预处理的头文件加到openbyinf.cpp中,错误没有了,但还是link不上,郁闷!
|
|
地板#
发布于:2004-07-09 21:05
对啊
我的里面也没有 |
|
地下室#
发布于:2004-07-09 19:43
应该没有吧,在我做的驱动的测试程序中使用都没有问题。那个SetupDiGetClassDevs函数应该是被Driverworks封装起来了,看不到啊
[编辑 - 7/9/04 by bobbysun2000] |
|
5楼#
发布于:2004-07-09 18:49
SetupDiGetClassDevs那里就出了问题吧!
|
|
6楼#
发布于:2004-07-09 18:46
你出现的错误是vc中的常见错误,但对应于和硬件通信的程序中,很可能是你的openbyinf.cpp的结构虽然是没有语法错误但是与应用程序不匹配。你可以改改openbyinf.cpp。
|
|
7楼#
发布于:2004-07-09 17:26
darydl兄,为什么我把openbyinf.cpp加入我的工程,就出现下面的错误?
f:\vcprog\usb_test\openbyintf.cpp(54) : fatal error C1010: unexpected end of file while looking for precompiled header directive |
|
8楼#
发布于:2004-07-09 16:15
我的程序是这样的
//得到该GUID的句柄 hDevInfo = SetupDiGetClassDevs(&Guid,NULL,NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE); if(hDevInfo==NULL) { return NULL; } SP_DEVICE_INTERFACE_DATA DevInterfaceData; DevInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); DevInterfaceData.InterfaceClassGuid=Guid; BOOL bSuccess = SetupDiEnumDeviceInterfaces hDevInfo,NULL,&Guid,index, &DevInterfaceData);//index=11; //bSuccess返回值为0 if (!bSuccess) { SetupDiDestroyDeviceInfoList(hDevInfo); return NULL; } SetupDiGetDeviceInterfaceDetail(hDevInfo, &DevInterfaceData, NULL, 0, &requiredLength, NULL); detailData=(PSP_INTERFACE_DEVICE_DETAIL_DATA) malloc (requiredLength); detailData->cbSize =sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); if( !SetupDiGetDeviceInterfaceDetail(hDevInfo, &DevInterfaceData, detailData, requiredLength, NULL, NULL)) { SetupDiDestroyDeviceInfoList(hDevInfo); delete detailData; return NULL; } else { ............ } ......... 到SetupDiEnumDeviceInterfaces 时返回值是0,为啥啊!各位老大帮帮忙吧!是否还有其他的办法可以得到设备名称呢??? |
|
9楼#
发布于:2004-07-09 09:18
谢谢你!我的设备如果使用WIN2000的通用USB驱动呢!
|
|
10楼#
发布于:2004-07-08 21:42
一般说来,你可以创建一个基于对话框的Application,要将你驱动程序中的ioctrl。h interface。h openbyinf。cpp加入其中。
首先利用一个中断请求来启动设备,检测到设备后开始初始化设备: hDevice = OpenByInterface( &ClassGuid, 0, &dError); 其中OpenByInterface(&ClassGuid,0,&Error)函数采用Guid接口方式与WDM通信,其中ClassGuid式设备的GUID,0是设备的序号,pError存放应用程序打开设备时的错误编号,返回值是设备的句柄号。 然后在线程中进入你所需要的传输。 |
|