Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2004-12-02 19:20
另外很弱的问一句:我要怎样才能跟踪到那个dll呢?
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2004-12-02 23:04
谢谢tigerL及其他热心的朋友。我的问题已经解决了。我依照MSDN中INF文件的相关说明重新编写了INF文件,安装即可成功。

[编辑 -  12/2/04 by  blackcourser]
Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2004-12-03 10:17
你能帮我看看我的问题出在那里了吗?谢谢!
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2004-12-03 11:59
另外很弱的问一句:我要怎样才能跟踪到那个dll呢?


可能是coinstaller没起作用,用softice可跟踪。
省元坊
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2004-12-03 12:13
谢谢tigerL及其他热心的朋友。我的问题已经解决了。我依照MSDN中INF文件的相关说明重新编写了INF文件,安装即可成功。
 



blackcourser一定是有更好的办法了!
省元坊
Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2004-12-03 15:49
Hi, TigerL
我跟踪了一下CoInstaller发现SetupDiEnumDriverInfo 枚举不到任何东西,直接返回了false,GetLastError()是ERROR_NO_MORE_ITEMS。是不是还有问题?
参数SPDIT_CLASSDRIVER 和SPDIT_COMPATDRIVER 都试了。
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2004-12-03 18:56
那是肯定的了,你自己好好找找吧。
省元坊
Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2004-12-03 21:18
对不起我忘说了,SetupDiBuildDriverInfoList我也加上了,还是枚举不到任何东西。是不是还有别的错误呢?恳请指教。谢谢


DWORD
__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:
{
FILE* p = fopen("c:\\inst.log", "a+");
if(!SetupDiBuildDriverInfoList(
DeviceInfoSet,
NULL,
SPDIT_CLASSDRIVER  
))
{
fprintf(p, "Build Driver info list failed\n");
break;

}

DWORD dwMemIndex = 0;
do
{
SP_DRVINFO_DATA  DriverInfoData;
memset(&DriverInfoData, 0, sizeof(DriverInfoData));
DriverInfoData.cbSize = sizeof(DriverInfoData);
if(!SetupDiEnumDriverInfo(DeviceInfoSet, NULL,
SPDIT_CLASSDRIVER        , dwMemIndex, &DriverInfoData))
{
DWORD err = GetLastError();
if(err == ERROR_NO_MORE_ITEMS)
{
fprintf(p, "no more items\n");
}
else
{
fprintf(p, "break at err:%u\n", err);
}
break;
}
SP_DRVINSTALL_PARAMS  DriverInstallParams;
if(SetupDiGetDriverInstallParams(DeviceInfoSet, DeviceInfoData,
&DriverInfoData, &DriverInstallParams))
{
DriverInstallParams.Rank = 0;
if(SetupDiSetDriverInstallParams(DeviceInfoSet, DeviceInfoData,
&DriverInfoData, &DriverInstallParams))
{
fprintf(p, "made at %u\n", dwMemIndex);
}
else
{
fprintf(p, "failed at %u\n", dwMemIndex);
}
}
dwMemIndex ++;
}while(1);

SetupDiDestroyDriverInfoList(
DeviceInfoSet,
NULL,
SPDIT_CLASSDRIVER  );
fclose(p);
}
        break;

    default:
        break;
    }

    return Status;

}
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2004-12-04 18:12
1,正常情况是不需要使用SetupDiBuildDriverInfoList的,
2,你调用的是SetupDiEnumDriverInfo的ANSI版还是UNICODE版?
省元坊
Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2004-12-06 09:32
我调用的应该是ANSI版的,这样有问题吗?
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2004-12-06 16:47
tigerL :
    没有用什么更好的方法。根据你所给说的,我觉得我们的INF一定有问题。因为做驱动程序的人走了,我不太了解他写的INF文件,只能全改了,改后的INF如下:

[Version]
Signature="$CHICAGO$"
Class=USB
provider=%PR%

[Manufacturer]
%MfgName%=zhehui

[JETWAY]
%USBVID_1463&PID_05CB.DeviceDesc%=usbkey, USBVID_1463&PID_05CB

[SourceDisksNames]
1=%DiskName%,,1

[SourceDisksFiles]
usbkey.sys
usbkey.inf

[DestinationDirs]
usbkey.SysCopy = 10,System32Drivers

[DefaultInstall]
AddReg=usbkey.AddReg

[usbkey]
AddReg=usbkey.AddReg

[usbkey.NT]
AddReg=usbkey.AddReg.NT

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

[usbkey.AddService]
DisplayName    = %usbkey.SvcDesc%
ServiceType    = 1 ; SERVICE_KERNEL_DRIVER
StartType      = 2 ; SERVICE_AUTO_START                
ErrorControl   = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%usbkey.sys
;LoadOrderGroup = Base

[usbkey.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,usbkey.sys

[usbkey.SysCopy]
usbkey.SYS,,,0x00010020

[Strings]
PR="zh"
MfgName="zhehui"
ClassName="Usb Key"
USBVID_1463&PID_05CB.DeviceDesc="usbkey Key"
usbkey.SvcDesc="usbkey driver"
修改后,可完全实现你在另“usb驱动自安装程序的制作 ”一文中所说的1、2、3步。

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

[编辑 -  12/6/04 by  blackcourser]
Song1118
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2005-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
31楼#
发布于:2004-12-06 16:57
Hi, blackcourser,
你在xp下做成功了吗?
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2004-12-06 17:22
向tigerL和网友请教另一问题。有两种安装USBKEY驱动程序方法
1.先安装USBKWY驱动程序,后插key,能正确识别设备。
2.先插key,后安装驱动程序,则需要拔key后重新插上才能识别。有没有办法能解决先插key后安装驱动程序也能识别key呢?我看了MSDN中对“pdateDriverForPlugAndPlayDevices”函数的描述为 “This function can also be used to determine whether the device with the specified HardwareId value is plugged in”。但我试了却不成功。

[编辑 -  12/6/04 by  blackcourser]
blackcourser
驱动牛犊
驱动牛犊
  • 注册日期2004-11-23
  • 最后登录2005-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
33楼#
发布于:2004-12-06 17:36
Song1118 :
   还没有呢,希望多交流!
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
34楼#
发布于:2004-12-06 20:30
我调用的应该是ANSI版的,这样有问题吗?



这个很有可能会产生影响。网上似乎有报告ansi版调用bug的文章。
试试unicode版。
省元坊
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
35楼#
发布于:2004-12-06 20:44
向tigerL和网友请教另一问题。有两种安装USBKEY驱动程序方法
1.先安装USBKWY驱动程序,后插key,能正确识别设备。
2.先插key,后安装驱动程序,则需要拔key后重新插上才能识别。有没有办法能解决先插key后安装驱动程序也能识别key呢?我看了MSDN中对“pdateDriverForPlugAndPlayDevices”函数的描述为 “This function can also be used to determine whether the device with the specified HardwareId value is plugged in”。但我试了却不成功。

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


我想应该是可以的,不过我也没试过。
省元坊
icboy591
驱动牛犊
驱动牛犊
  • 注册日期2009-05-26
  • 最后登录2010-04-13
  • 粉丝16
  • 关注1
  • 积分64分
  • 威望611点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
36楼#
发布于:2009-12-05 11:30
上一页 下一页
游客

返回顶部