| 
			 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				
			 				 | 
	|
上一页
下一页