wdm8000
驱动牛犊
驱动牛犊
  • 注册日期2001-06-07
  • 最后登录2005-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2792回复:13

为什么SetupDiEnumDeviceInterfaces总是返回0?

楼主#
更多 发布于:2004-07-13 16:23
我使用SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces和SetupDiGetInterfaceDeviceDetail,查找设备名。
我在注册表中找到一个GUID,为什么SetupDiEnumDeviceInterfaces总是返回0?
谢谢大侠!


HDEVINFO hDevInfoSet;
SP_DEVINFO_DATA device;
SP_DEVICE_INTERFACE_DATA ifdata;
PSP_DEVICE_INTERFACE_DETAIL_DATA pDetail;
int nCount=0;
BOOL bResult=false;
hDevInfoSet =SetupDiGetClassDevs(lpGuid,NULL,NULL,DIGCF_PRESENT |DIGCF_DEVICEINTERFACE);   if(hDevInfoSet==INVALID_HANDLE_VALUE)
{
        return 0;
}
ifdata.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
device.cbSize=sizeof(SP_DEVINFO_DATA);
device.ClassGuid=DiskClassGuid;
ifdata.Flags=SPINT_ACTIVE;
ifdata.InterfaceClassGuid=DiskClassGuid;
           bResult = SetupDiEnumDeviceInterfaces(
            hDevInfoSet,    
                        NULL,            
                        lpGuid,        
            (ULONG)nCount,  
                         &ifdata);        
if(!bResult && (GetLastError()==ERROR_NO_MORE_ITEMS))
{
       MessageBox("没有匹配的设备");
}
else
{
           MessageBox("找到一个设备");
return 0;
}
pDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, INTERFACE_DETAIL_SIZE);
pDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
bResult = SetupDiGetInterfaceDeviceDetail(
        hDevInfoSet,    
                &ifdata,        
                pDetail,        
        INTERFACE_DETAIL_SIZE,  
        NULL,  
        NULL);        
吴新安
netscan
驱动牛犊
驱动牛犊
  • 注册日期2002-01-15
  • 最后登录2006-05-18
  • 粉丝0
  • 关注0
  • 积分47分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-13 19:07
可能你的guid错了,在注册表里好好找吧,把找出来的象guid的都试试。
billy2004
驱动牛犊
驱动牛犊
  • 注册日期2004-07-03
  • 最后登录2005-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-15 11:22
怎么在注册表里找GUID啊,那么多
zfw
zfw
驱动小牛
驱动小牛
  • 注册日期2001-12-16
  • 最后登录2006-09-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-15 13:16
GUID在你的驱动程序中应该有定义,直接用那个。
DS带的有个头件devintf.h,封装好了,很好用
zfw
wdm8000
驱动牛犊
驱动牛犊
  • 注册日期2001-06-07
  • 最后登录2005-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-15 19:18
我的GUID用的是8139网卡的。没有错。
我没有驱动程序源码。所以也不可能从你说的device.h中获得guid。
其实我打开设备的最终目的是不想使用windows的TCP/IP,想直接让网卡发送我在链路层的自定义数据。
从链路层的“协议类型”字段开始填入我自定义的数据格式,不使用IP格式。
哪位大侠帮帮忙!
吴新安
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-16 15:22
gz
新手上路,请多关照.
billy2004
驱动牛犊
驱动牛犊
  • 注册日期2004-07-03
  • 最后登录2005-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-17 15:33
怎么在注册表里找GUID啊,那么多

谁能指出GUID在注册表里的路径吗?

[编辑 -  7/18/04 by  billy2004]
wdm8000
驱动牛犊
驱动牛犊
  • 注册日期2001-06-07
  • 最后登录2005-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-23 11:55
在windows2000下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_80B31043&REV_10\4&3b90381f&0&68F0
吴新安
billy2004
驱动牛犊
驱动牛犊
  • 注册日期2004-07-03
  • 最后登录2005-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-25 15:53
谢谢这位大哥
pugb79
驱动牛犊
驱动牛犊
  • 注册日期2004-07-29
  • 最后登录2007-01-06
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-07-30 09:45
我也正好遇到这个问题
我是要打开一个usb设备
也如楼主所说SetupDiEnumDeviceInterfaces总是返回0
郁闷了好几天了
请大侠帮帮忙吧
billy2004
驱动牛犊
驱动牛犊
  • 注册日期2004-07-03
  • 最后登录2005-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-08-01 09:34
一般是guid不对
duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-09-06 18:08
但我的guid是对的阿
yuanyuan0101
驱动牛犊
驱动牛犊
  • 注册日期2004-09-03
  • 最后登录2004-11-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-10-15 11:50
就是GUID的错误,你查到的guid在注册表中的映射,在Devices Class中的才可以
fgf1014
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2005-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-10-15 16:05
一个设备在注册表中可能会有几个属于不同设备类的GUID,如USB mouse即拥有属于鼠标的GUID,又拥有属于usb的guid,还有属于hid设备类的guid,所以,你要找到你想要的guid才行,不能见到一个就以为它就是了。
游客

返回顶部