eciniar
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2009-08-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望18点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:2582回复:12

请问,为什么函数都执行成功了.安装的虚拟设备还是未知设备?

楼主#
更多 发布于:2005-03-04 09:07
下面是我的代码,我一步步的debug过了,每步都是成功的,但是安装完后,发现还是未知设备,请高手指点.

extern \"C\" BOOL APIENTRY EXPORT
InstallVirtualDevice(LPCTSTR lpszDeviceID,LPCTSTR lpszInfFullPath)
{

    HDEVINFO DeviceInfoSet = INVALID_HANDLE_VALUE;
    SP_DEVINFO_DATA DeviceInfoData;
    GUID ClassGUID;
    TCHAR ClassName[MAX_CLASS_NAME_LEN];
    TCHAR hwIdList[LINE_LEN+4];
    BOOL reboot = FALSE;
    LPCTSTR hwid = NULL;
 
    ZeroMemory(hwIdList,sizeof(hwIdList));
    lstrcpyn(hwIdList,hwid,LINE_LEN);

  
    if (!SetupDiGetINFClass (lpszInfFullPath,&ClassGUID,ClassName,sizeof(ClassName),0))
    {
        goto final;
    }

     DeviceInfoSet = SetupDiCreateDeviceInfoList(&ClassGUID,0);
    if(DeviceInfoSet == INVALID_HANDLE_VALUE)
    {
        goto final;
    }

    DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
    if (!SetupDiCreateDeviceInfo(DeviceInfoSet,
        ClassName,
        &ClassGUID,
        NULL,
        0,
        DICD_GENERATE_ID,
        &DeviceInfoData))
    {
        goto final;
    }

      if(!SetupDiSetDeviceRegistryProperty(DeviceInfoSet,
        &DeviceInfoData,
        SPDRP_HARDWAREID,
        (LPBYTE)hwIdList,
        (lstrlen(hwIdList)+1+1)*sizeof(TCHAR)))
    {
        goto final;
    }

      if (!SetupDiCallClassInstaller(DIF_REGISTERDEVICE,
        DeviceInfoSet,
        &DeviceInfoData))
    {
        goto final;
    }

     if (!UpdateDriverForPlugAndPlayDevices(
NULL,
lpszDeviceID,
lpszInfFullPath,
INSTALLFLAG_FORCE,
&reboot)
)
{
goto final;
}
final:

    if (DeviceInfoSet != INVALID_HANDLE_VALUE)
{
        SetupDiDestroyDeviceInfoList(DeviceInfoSet);
    }

    return TRUE;


}

最新喜欢:

xl1533xl1533
团结就是力量
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-06 15:02
不成功?是什么意思,在currentcontrolset的enum下没有设备,还是驱动不能run?
inf文件是什么?能否作为附件发上了。
估计是你的inf有问题,是否可以通过手动安装成功?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
eciniar
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2009-08-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望18点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-07 17:26
手动可以成功.我现在找到原因了,是代码问题.在hwid链里,我把一个NULL赋给了第一个元素,晕.应该把传进来的ID赋给第一个元素.

顺便问一下,怎么安装虚拟猫啊??我要安装了五种设备,已经安装了四种(虚拟声卡,网卡,人体输入设备,虚拟串口),第五种是虚拟猫,不知道为什么用前面的方法安装不上..虚拟猫只有一个INF,这里用的是系统的sys,(modem.sys,rootmdm.sys).盼高手告知.
团结就是力量
xl1533
驱动牛犊
驱动牛犊
  • 注册日期2005-03-09
  • 最后登录2006-02-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-24 09:39
eciniar你好,我也卡在这儿。

这是ddk带的例子吧,我也试过了,函数执行成功,但是设备管理器看到的是个感叹号,手工安装 就正常了,我是在xp下安装usb驱动。

我是新手,还没有入门,请多指教
eciniar
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2009-08-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望18点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-25 08:11
用代码方法的话,你可以把LPCTSTR hwid = NULL;
这句删除再编译一下行了.

你也可以直接用DEVCON这个工具,注意用法,要加device id,以及inf path
团结就是力量
xl1533
驱动牛犊
驱动牛犊
  • 注册日期2005-03-09
  • 最后登录2006-02-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-26 12:05
用代码方法的话,你可以把LPCTSTR hwid = NULL;
这句删除再编译一下行了.

你也可以直接用DEVCON这个工具,注意用法,要加device id,以及inf path


我用devcon和WINDDK\\2600\\src\\setup\\install\\install.c安装usb驱动,结果一样,都是“”号;手工安装就正常了,不解
eciniar
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2009-08-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望18点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-28 07:55
你把你用devcon的安装命令发出来看看.
团结就是力量
xl1533
驱动牛犊
驱动牛犊
  • 注册日期2005-03-09
  • 最后登录2006-02-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-28 08:16
devcon install SERWPL.INF \"USB\\VID_067b&PID_2303\"


这是我发的求助帖子:

(求助)在xp下分别使用intall.c和向导安装inf驱动,结果却不同
http://www.driverdevelop.com/forum/viewthread.php?tid=89164

SERWPL.INF内容:
http://www.driverdevelop.com/forum/viewthread.php?tid=88975

[编辑 -  3/28/05 by  xl1533]
eciniar
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2009-08-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望18点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-28 12:11
在INF前面加上全路径,你用INF全路径试试
团结就是力量
xl1533
驱动牛犊
驱动牛犊
  • 注册日期2005-03-09
  • 最后登录2006-02-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-03-28 15:26
难得有eciniar兄弟这么热心的,谢谢

我的问题是执行devcon install SERWPL.INF \"USB\\VID_067b&PID_2303\"成功
但是安装的内容与手动安装却不一样:(以下是从setupapi.log中看到的结果)

使用向导安装:
实际安装部分: [ComPort.NT]
“仅复制”安装 \"USB\\VID_067B&PID_2303\\00000001\"。 --- 在注册表中的位置

使用install.cdevcon安装
实际安装部分:[ComPort.NT.Interfaces]
“仅复制”安装 \"ROOT\\USB\\0000\"。--------------------- 在注册表中的位置
eciniar
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2009-08-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望18点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-03-29 08:06
晕,那我不懂了.
团结就是力量
jackyxue2005
驱动牛犊
驱动牛犊
  • 注册日期2005-04-08
  • 最后登录2005-09-20
  • 粉丝0
  • 关注0
  • 积分79分
  • 威望13点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-07-07 15:57
请问如何DEBUG?
用什么工具?
多学习,多喝酒
rockally
驱动牛犊
驱动牛犊
  • 注册日期2005-06-25
  • 最后登录2007-08-28
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望14点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-07-14 20:48
我也有这个问题,驱动已经加载成功,设备管理器中的"系统设备"已经加载上,但是在"其他设备"中还有这个设备,并且问号显示,只有重新启动才能解决,请大家帮忙.
游客

返回顶部