rzxf1980
驱动小牛
驱动小牛
  • 注册日期2002-08-04
  • 最后登录2004-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2355回复:11

请问usb应用程序的问题!!

楼主#
更多 发布于:2003-05-06 21:59
请问在bcb中写usb应用程序,在vc中可以运行很好控制设备的函数,在bcb中就不能控制设备了,驱动应该没有什么问题>,
运行得到SetupDiGetClassDevs,就没有执行了,在vc++可以完全运行打开设备!请问高手解答,不甚感激

     /////////////////////////////////////////////////////////////////////////////
// GetDeviceViaInterface: Open a handle via a device interface

HANDLE GetDeviceViaInterface( GUID* pGuid, DWORD instance)
{
// Get handle to relevant device information set
HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
if(info==INVALID_HANDLE_VALUE)
{
printf(\"No HDEVINFO available for this GUID\\n\");
return NULL;
}

printf (\"SetupDiGetClassDevs\\n\");

// Get interface data for the requested instance
SP_INTERFACE_DEVICE_DATA ifdata;
        
ifdata.cbSize = sizeof(ifdata);
if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, instance, &ifdata))
{
printf(\"No SP_INTERFACE_DEVICE_DATA available for this GUID instance\\n\");
SetupDiDestroyDeviceInfoList(info);
return NULL;
}

 printf (\"SetupDiEnumDeviceInterfaces\\n\");

// Get size of symbolic link name
DWORD ReqLen;
SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL);
PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);
if( ifDetail==NULL)
{
SetupDiDestroyDeviceInfoList(info);
return NULL;
}


printf (\"SetupDiEnumDeviceInterfaces\\n\");



// Get symbolic link name
ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
printf(\"1\\n\");
if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL))
{
SetupDiDestroyDeviceInfoList(info);
delete ifDetail;
return NULL;
}

printf (\"SetupDiEnumDevice\\n\");


printf(\"Symbolic link is %s\\n\",ifDetail->DevicePath);



// Open file
HANDLE rv = CreateFile( ifDetail->DevicePath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if( rv==INVALID_HANDLE_VALUE) rv = NULL;

       delete ifDetail;
       SetupDiDestroyDeviceInfoList(info);
return rv;
}
  
我忍,忍到否极泰来! 哈哈哈!我不会趴下的!! 长笑一声对苍生!
eyeszhu
驱动牛犊
驱动牛犊
  • 注册日期2003-05-14
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-23 12:25
setdienuminterface返回ERROR_NO_MORE_ITEMS
单用vc编程
之前我用SetupDiEnumDeviceInfo枚举正常,但是换成SetupDiEnumDeviceInterfaces
就返回no_more_items,
另外,
我注意到SetupDiGetClassDevs(pGuid,
0, // Enumerator
0,
DIGCF_PRESENT); 中最后一个参数加上|DIGCF_DEVICEINTERFACE就什么都读不出,
在线等待,谢谢
 
 
 
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-23 11:29
VC做DLL,在VB或Delphi/BCB中调用。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
eyeszhu
驱动牛犊
驱动牛犊
  • 注册日期2003-05-14
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-23 10:52
请问你们的问题怎么解决的?
我也遇到了setdienuminterface返回ERROR_NO_MORE_ITEMS的问题
谢谢!
rzxf1980
驱动小牛
驱动小牛
  • 注册日期2002-08-04
  • 最后登录2004-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-14 18:49
我们得问题解决了,但是现在又要读写端口,没有函数,自己写,我觉得还是在vc里好啊!只是界面难而已,努力!GUID是驱动编写的设备标示,注册表也有得啊!! :D :D :D
我忍,忍到否极泰来! 哈哈哈!我不会趴下的!! 长笑一声对苍生!
lbcat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2007-09-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-13 21:40
   VC++和BCB的确是不能完全照搬的,因为有一些类的定义有一点不同!!!
   我印象中好像是这个PSP_INTERFACE_DEVICE_DETAIL_DATA 有一点出入的,但我现在手头上没资料,程序都在实验室的机上,所以暂时不能准确指出是哪里了,你可以上网找找相关的文章或windows api的书,我当时也为这个问题郁闷了很久,咔咔~~  :D
yangchunyu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-20
  • 最后登录2008-03-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-13 21:23
你的GUID从哪儿得来的啊?
rzxf1980
驱动小牛
驱动小牛
  • 注册日期2002-08-04
  • 最后登录2004-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-12 14:33
这个打开设备函数在vc运行很好,如果你出错的话,估计是环境设置有误!我就这一个函数就可以在vc中控制打开设备但在bcb中就失败!唉,郁闷! :( :(
我忍,忍到否极泰来! 哈哈哈!我不会趴下的!! 长笑一声对苍生!
yangchunyu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-20
  • 最后登录2008-03-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-09 19:34
我的在VC中也出现这种问题,这是为什么?
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-08 10:47
是否有可能,从不bcb和vc关于参数的定义有所不同!
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-05-08 10:40
我也对这个问题很感兴趣,各位大侠给点指点啊!
rzxf1980
驱动小牛
驱动小牛
  • 注册日期2002-08-04
  • 最后登录2004-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-05-08 10:24
高手指点一下啊,给多多的分!!!1
我忍,忍到否极泰来! 哈哈哈!我不会趴下的!! 长笑一声对苍生!
游客

返回顶部