blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:9498回复:36

预安装usb驱动程序的问题

楼主#
更多 发布于:2004-11-25 19:57
按网友所说:win2000系统
1)通过INSTALLSHIELD 脚本实现拷贝test.inf test.sys到系统相应目录下并执行
szProgram = "rundll32.exe";
szCmdLine = "setupapi.dll,InstallHinfSection DefaultInstall 132" + SUPPORTDIR + "test.inf";
LaunchAppAndWait(szProgram, szCmdLine, WAIT);
其中SUPPORTDIR指定为text.inf所在的目录。跟踪执行到LaunchAppAndWait时弹出对话框“安装失败”,
但LaunchAppAndWait函数的返回值却为0(0表示该函数成功执行)。
驱动安装不成功。

2)同样通过INSTALLSHIELD 脚本调用devcon install "d:test.inf" USB\VID_xxx 执行时却要求插入安装盘,手工指定*.sys安装后显示不成功,硬件设备中给出惊叹号。

不知是何原因,希望能得到大家的帮助!

[编辑 -  11/26/04 by  blackcourser]

最新喜欢:

force_eagleforce_...
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-28 21:44
你的问题我没碰到过,但usb设备驱动的安装程序我却做过。很简单,把inf和sys放在同一目录下(注意注释掉inf中的SourceDisksFiles和SourceDisksNames两节),然后调用SetupCopyOEMInf即可。
省元坊
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-29 15:57
to:tigerL 谢谢回复!
你说的情况试过,仍有问题:
注释掉inf中的SourceDisksFiles和SourceDisksNames后,调用setupCopyOEMInf系统要求指出*.sys的路径。
按某网友所说将[USBKEY.Dev]和[USBKEY.Dev.NT]中都指定为绝对路径还是不行。
[USBKEY.Dev]
CopyFiles=%10%\System32\Drivers\test.Files.Ext, %10%\inf\test.Files.Inf
AddReg=USBKEY.AddReg

[USBKEY.Dev.NT]
CopyFiles=%10%\System32\Drivers\test.Files.Ext, %10%\inf\test.Files.Inf
AddReg=USBKEY.AddReg

不知是何原因。

[编辑 -  11/29/04 by  blackcourser]

[编辑 -  11/29/04 by  blackcourser]
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-29 21:47
to:tigerL 谢谢回复!
你说的情况试过,仍有问题:
注释掉inf中的SourceDisksFiles和SourceDisksNames后,调用setupCopyOEMInf系统要求指出*.sys的路径。



调用setupCopyOEMInf没问题吧,是插上设备后弹出窗口说某某路径下没有*.sys文件吗?
省元坊
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-30 11:53
to:tigerL
   我在几台没有装过该USB驱动的电脑上试验,调用setupCopyOEMInf没有问题,安装显示成功,并要求重启,但重启后设备中有黄色惊叹号。查看INF和system32drivers下均没有相应的test.inf和test.sys文件,请分析是何原因。
MSDN中对setupCopyOEMInf函数的解释为“拷贝INF文件到系统%windir%/Inf目录下”。手工拷贝后亦不能执行。

但如果完全通过手工安装即“插卡,系统识别USB设备,要求指定*.inf和*.sys文件路径”则一切正常。请问你是否了解手工安装时系统都做了那些操作?
  有QQ吗?我的是58369915,如果可以请加我。

[编辑 -  11/30/04 by  blackcourser]
Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-30 15:40
请问您解决问题了吗?我也遇见了同样的问题,能告诉我怎么解决吗?
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-30 18:11
to :Song1118
   没有呢。试了很多方法都不行。
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-30 22:17
to:tigerL
   我在几台没有装过该USB驱动的电脑上试验,调用setupCopyOEMInf没有问题,安装显示成功,并要求重启,但重启后设备中有黄色惊叹号。查看INF和system32drivers下均没有相应的test.inf和test.sys文件,请分析是何原因。
MSDN中对setupCopyOEMInf函数的解释为“拷贝INF文件到系统%windir%/Inf目录下”。手工拷贝后亦不能执行。

但如果完全通过手工安装即“插卡,系统识别USB设备,要求指定*.inf和*.sys文件路径”则一切正常。请问你是否了解手工安装时系统都做了那些操作?
  有QQ吗?我的是58369915,如果可以请加我。

[编辑 -  11/30/04 by  blackcourser]



1,inf和drivers目录下没有test.inf和test.sys是对的。setupCopyOEMInf会在inf目录下生成一个oem*.inf。找找看有没有?
2,产生黄色惊叹号的原因很多,你在设备的属性页中察看一下“驱动程序详细信息”,看看驱动程序安装了没有?(我估计驱动程序没装上)
3,正常情况下,执行setupCopyOEMInf安装usb是不会要求重启的。
4,可能与你的inf文件有关,如果可能,请把你的inf贴出来。
省元坊
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-01 10:30
to:tigerL


[Version]
Signature="$CHICAGO$"
Class=SmartCardReader
ClassGuid={50DD5230-BA8A-11D1-BF5D-0000F805F530}
provider=%PR%
DriverVer=11/11/2003,1.0.1106.0

[SourceDisksNames]
1="usbkey Installation Disk",,,

[SourceDisksFiles]
usbkey.sys = 1
usbkey.inf = 1

; ================= Class section =====================

[ClassInstall32]
Addreg=SmartCardReaderClassReg

[SmartCardReaderClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-25
HKLM,"SoftwareMicrosoftCryptographyCalaisReaders",,,

[Manufacturer]
%MfgName%=zhehui

[zhehui]
%USBVID_1463&PID_05CB.DeviceDesc%=usbkey.Dev, USBVID_1463&PID_05CB

[DestinationDirs]
usbkey.Files.Ext = 10,System32Drivers
usbkey.Files.Inf = 10,INF

[usbkey.Dev]
CopyFiles=usbkey.Files.Ext, usbkey.Files.Inf
AddReg=usbkey.AddReg

[usbkey.Dev.NT]
CopyFiles=usbkey.Files.Ext, usbkey.Files.Inf
AddReg=usbkey.AddReg

[usbkey.Dev.NT.Services]
Addservice = usbkey, 0x00000002, usbkey.AddService, usbkey.EventLog

[usbkey.AddService]
DisplayName    = %usbkey.SvcDesc%
ServiceType    = 1                  ; SERVICE_KERNEL_DRIVER
StartType      = 2                
ErrorControl   = 1                  ; SERVICE_ERROR_NORMAL
ServiceBinary  = %10%System32Driversusbkey.sys

[usbkey.EventLog]
AddReg = usbkey.AddEventLog.reg

[usbkey.AddEventLog.reg]
HKR,, EventMessageFile, 0x00020000, "%%SystemRoot%%System32driversusbkey.sys"
HKR,, TypesSupported,   0x00010001, 7

[usbkey.AddReg]
;HKR,,DevLoader,,*ntkern
;HKR,,NTMPDriver,,usbkey.sys
;HKR,, AdapterType, 0, "0100"
;HKLM,"SystemCurrentcontrolsetServicesBulkUsbParameters","MaximumTransferSize",0x10001,4096
HKLM,"SystemCurrentcontrolsetServicesBulkUsbParameters","DebugLevel",0x10001,5


[usbkey.Files.Ext]
usbkey.sys

[usbkey.Files.Inf]
usbkey.Inf


;---------------------------------------------------------------;

[Strings]
PR="zh"
MfgName="zhehui"
ClassName="SmartCardReader"
USBVID_1463&PID_05CB.DeviceDesc="zh Key"
usbkey.SvcDesc="usbkey PCSC driver"




[编辑 -  12/1/04 by  blackcourser]

[编辑 -  12/1/04 by  blackcourser]
lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2004-12-01 14:01
blackcourser, 你的devcon install "d:test.inf" USBVID_xxx 中应把HARDWARE ID做引号。
我也遇到出现惊叹号的问题,情况和你一样,手动可以,但DEVCON不可以。有一点我可以提示你,你找一下SYSTEM32下的SETUPAPI。LOG文件,可能有有用的东西。
一起交流,共同提高!
lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2004-12-01 16:00
用DEVCON自动安装USB设备可能行不通。我认为要自动安装的话,要做一个应用程序来修改注册表来实现。
一起交流,共同提高!
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-01 16:58
lejianz:
  谢谢你的建议,不过问题依旧 :(
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-12-01 16:59

tigerL:
  按你所说:
  1.在干净的系统下,手工安装USB驱动程序能够成功。
  2.恢复干净的系统,调用SetupCopyOEMInf却要求指定*.sys的目录(此时INF目录下已生成和*.inf内容一样的oem3.inf)。我将*.inf和*.sys两文件均拷贝到了同一指定目录下。如drvInstDir。
  3.按系统要求将*.sys指定到drvInstDir下则安装成功。
  能否帮分析一下原因,如何不需用户指定*.sys的路径。

[编辑 -  12/1/04 by  blackcourser]
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-02 14:08
blackcourser :

建议你:
1,注释掉如下两节:
[SourceDisksNames]
1="usbkey Installation Disk",,,

[SourceDisksFiles]
usbkey.sys = 1
usbkey.inf = 1

2,把CopyFiles指令中的usbkey.Files.Inf
去掉。
省元坊
Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-12-02 17:21
Hi,tigerL!
我参照了您的两个帖子里的方法,目前windows2000上已经没有问题了。可是在xp下还是会弹出“发现新硬件”的问题。

是不是我的Co-Installer有问题呢?
我的代码如下,恳请您的指导。谢谢!

__stdcall CoModifyRank (
               IN     DI_FUNCTION               InstallFunction,
               IN     HDEVINFO                  DeviceInfoSet,
               IN     PSP_DEVINFO_DATA          DeviceInfoData,
               IN OUT PCOINSTALLER_CONTEXT_DATA Context
               )
{
    DWORD Status = NO_ERROR;

    switch (InstallFunction)
    {
        case DIF_SELECTBESTCOMPATDRV:
{
DWORD dwMemIndex = 0;
do
{
SP_DRVINFO_DATA  DriverInfoData;

if(!SetupDiEnumDriverInfo(DeviceInfoSet, DeviceInfoData,
SPDIT_COMPATDRIVER   , dwMemIndex, &DriverInfoData))
{
break;
}
SP_DRVINSTALL_PARAMS  DriverInstallParams;
if(SetupDiGetDriverInstallParams(DeviceInfoSet, DeviceInfoData,
&DriverInfoData, &DriverInstallParams))
{
DriverInstallParams.Rank = 0;
SetupDiSetDriverInstallParams(DeviceInfoSet, DeviceInfoData,
&DriverInfoData, &DriverInstallParams);
}
dwMemIndex ++;
}while(1);
}
        break;

    default:
        break;
    }

    return Status;

}

Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-12-02 17:23
另外还有,我是使用自建的setup class。
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-12-02 18:22
1,很高兴听到你成功的消息!
2,协作程序我大致看了一下,应该没什么问题。
3,你注册了协作安装程序吗?
省元坊
Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-12-02 18:52
我的确注册了,在预安装时那个未数字签名的警告都已经不弹出来了。
只是我插入USB线时,还是会发现新硬件,要安装一遍。
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-12-02 19:05
1,确认HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\CoDeviceInstallers是否有你的新setup类的项;
2,跟踪你的coinstaller,看是否调用了;
3,如若还不行,请贴出inf。
省元坊
Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-12-02 19:17
inf如下,谢谢

[Version]
Signature="$CHICAGO$"
provider=%Dibcom%
LayoutFile=layout.inf
Class=NewDeviceClass
ClassGUID={CFFDB8EB-09DD-481e-899B-A7A4481B584E}

;[SourceDisksNames]
;1=%DiskName1%,,0


;[SourceDisksFiles]
;dibload2.sys = 1

;--------- ClassInstall/ClassInstall32 Section -------------------------------

; Not necessary if using a standard class

; 9X Style
[ClassInstall]
Addreg=Class_AddReg

; NT Style
[ClassInstall32]
Addreg=Class_AddReg

[Class_AddReg]
HKR,,,,%DeviceClassName%
HKR,,Icon,,"-18"

[Manufacturer]
%Dibcom%=Dibcom


[Dibcom]
%DIBLOAD.DeviceDesc%=LOADER.Device, USB\VID_04B4&PID_8613 ; FX2 hardware, virgin EEPROM

%DIBLOAD.DeviceDesc%=LOADER.Device, USB\VID_10B8&PID_0BBA ; MOD3000B4
%DIBLOAD.DeviceDesc%=LOADER.Device, USB\VID_10B8&PID_0BC6 ; MOD3000P1

%DIBLOAD.DeviceDesc%=LOADER.Device, USB\VID_10B8&PID_0FA2 ; EVA3000MC1-D2

[PreCopySection]
HKR,,NoSetupUI,,1


[DestinationDirs]
LOADER.Files.Ext   = 10, System32\drivers


[LOADER.Files.Ext]
dibload2.sys


[ControlFlags]
ExcludeFromSelect=*


[LOADER.Device]
AddReg=LOADER.AddReg
CopyFiles=LOADER.Files.Ext


[LOADER.Device.NT]
AddReg=LOADER.AddReg
CopyFiles=LOADER.Files.Ext


[LOADER.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,dibload2.sys


[LOADER.Device.NT.Services]
AddService = DIBLOAD2,0x00000002,DIBLOAD.ServiceInstall


[DIBLOAD.ServiceInstall]
DisplayName = %DIBLOAD.DeviceDesc%
ServiceType   = %SERVICE_KERNEL_DRIVER%
StartType     = %SERVICE_DEMAND_START%
ErrorControl   = %SERVICE_ERROR_NORMAL%
ServiceBinary = %12%\dibload2.sys


[Strings]
SERVICE_KERNEL_DRIVER =1
SERVICE_DEMAND_START =3
SERVICE_ERROR_NORMAL =1

Dibcom="Dibcom SA"
DIBLOAD.DeviceDesc="Dibcom USB2.0 adapter firmware loader"
DiskName1="DiBcom USB Adapter Installation Disk"
DeviceClassName="DVB Connection"
上一页
游客

返回顶部