20楼#
发布于:2004-12-02 19:20
另外很弱的问一句:我要怎样才能跟踪到那个dll呢?
|
|
21楼#
发布于:2004-12-02 23:04
谢谢tigerL及其他热心的朋友。我的问题已经解决了。我依照MSDN中INF文件的相关说明重新编写了INF文件,安装即可成功。
[编辑 - 12/2/04 by blackcourser] |
|
22楼#
发布于:2004-12-03 10:17
你能帮我看看我的问题出在那里了吗?谢谢!
|
|
23楼#
发布于:2004-12-03 11:59
另外很弱的问一句:我要怎样才能跟踪到那个dll呢? 可能是coinstaller没起作用,用softice可跟踪。 |
|
|
24楼#
发布于:2004-12-03 12:13
谢谢tigerL及其他热心的朋友。我的问题已经解决了。我依照MSDN中INF文件的相关说明重新编写了INF文件,安装即可成功。 blackcourser一定是有更好的办法了! |
|
|
25楼#
发布于:2004-12-03 15:49
Hi, TigerL
我跟踪了一下CoInstaller发现SetupDiEnumDriverInfo 枚举不到任何东西,直接返回了false,GetLastError()是ERROR_NO_MORE_ITEMS。是不是还有问题? 参数SPDIT_CLASSDRIVER 和SPDIT_COMPATDRIVER 都试了。 |
|
26楼#
发布于:2004-12-03 18:56
那是肯定的了,你自己好好找找吧。
|
|
|
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; } |
|
28楼#
发布于:2004-12-04 18:12
1,正常情况是不需要使用SetupDiBuildDriverInfoList的,
2,你调用的是SetupDiEnumDriverInfo的ANSI版还是UNICODE版? |
|
|
29楼#
发布于:2004-12-06 09:32
我调用的应该是ANSI版的,这样有问题吗?
|
|
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] |
|
31楼#
发布于:2004-12-06 16:57
Hi, blackcourser,
你在xp下做成功了吗? |
|
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] |
|
33楼#
发布于:2004-12-06 17:36
Song1118 :
还没有呢,希望多交流! |
|
34楼#
发布于:2004-12-06 20:30
我调用的应该是ANSI版的,这样有问题吗? 这个很有可能会产生影响。网上似乎有报告ansi版调用bug的文章。 试试unicode版。 |
|
|
35楼#
发布于:2004-12-06 20:44
向tigerL和网友请教另一问题。有两种安装USBKEY驱动程序方法 我想应该是可以的,不过我也没试过。 |
|
|
36楼#
发布于:2009-12-05 11:30
![]() |
|
上一页
下一页