2011-06-07 334 views
2

我有一个简单的用户模式的USB驱动程序,安装和工作正常在Windows XP 32位和Windows 7 64位,但由于某些原因无法正确安装在Windows 7 32位。我需要2个单独的驱动程序XP 32位和WIN7 32位?我的印象是,我没有。 我使用的inf文件如下所示:在Windows 7的WDF UMDF驱动程序安装问题32位

更新2011年6月10日,我已经重新编写了如下inf文件,似乎现在在windows7中工作,但在XP上,它问我/ x86的位置,我给它一个路径,它预先“开始”,然后我删除它,它工作正常。我使用以下窗口注册.inf文件:

SetupCopyOEMInf(infFullPath, "", OemSourceMediaType.SPOST_PATH, 0, oemName, 255, ref temp, null)) 

infFullPath是我在其中复制驱动程序包的程序文件下的位置。 任何人都可以明白为什么这是行不通的 我存储的文件如下:

AbcRadio.inf
\ 86 \ AbcRadio.dll
\ 86 \ WudfUpdate_01009.dll
\ 86 \ WdfCoInstaller01009.dll
\ 86 \ WinUsbCoinstaller2.dll
\ 64 \ AbcRadio.dll
\ 64 \ WudfUpdate_01009.dll
\ 64 \ WdfCoInstaller01009.dll
\ 64 \ WinUsbCoinstaller2.dll

; 
; AbcRadio.inf - Install the AbcRadio USB user-mode driver 
; 

[Version] 
Signature="$Windows NT$" 
Class=Radio 
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} 
Provider=%MSFTUMDF% 
DriverVer=06/09/2011,6.1.7600.16385 
CatalogFile=wudf.cat 

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

[ClassInstall32] 
AddReg=SampleClass_RegistryAdd 

[SampleClass_RegistryAdd] 
HKR,,,,%ClassName% 
HKR,,Icon,,"-10" 

; ========== Manufacturer/Models sections =========== 

[Manufacturer] 
%MSFTUMDF%=Abc,NTX86,NTAMD64 

[Abc.NTX86] 
%AbcRadioUsbDeviceName%=AbcRadioUsb_Install, USB\VID_16D4&PID_1002 
%AbcRadioUsbDeviceName%=AbcRadioUsb_Install, USB\VID_16D4&PID_1004 

[Abc.NTAMD64] 
%AbcRadioUsbDeviceName%=AbcRadioUsb_Install, USB\VID_16D4&PID_1002 
%AbcRadioUsbDeviceName%=AbcRadioUsb_Install, USB\VID_16D4&PID_1004 

; =================== Installation =================== 

[AbcRadioUsb_Install] 
CopyFiles=UMDriverCopy 
Include=WINUSB.INF   ; Import installation sections from WINUSB.INF 
Needs=WINUSB.NT    ; Run the CopyFiles & AddReg directives for WinUsb.INF 

[AbcRadioUsb_Install.Services] 
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall ; flag 0x2 sets this as the service for the device 
AddService=WinUsb,0x000001f8,WinUsb_ServiceInstall ; this service is installed because its a filter. 

[WinUsb_ServiceInstall] 
DisplayName  = %WinUsb_SvcDesc% 
ServiceType  = 1 
StartType  = 3 
ErrorControl = 1 
ServiceBinary = %12%\WinUSB.sys 
LoadOrderGroup = Base 

[WUDFRD_ServiceInstall] 
DisplayName = %WudfRdDisplayName% 
ServiceType = 1 
StartType = 3 
ErrorControl = 1 
ServiceBinary = %12%\WUDFRd.sys 
LoadOrderGroup = Base 

[AbcRadioUsb_Install.Wdf] 
UmdfDispatcher = WinUsb 
UmdfService = AbcRadio, WUDFAbcRadioUsbDriver_Install 
UmdfServiceOrder = AbcRadio 
KmdfService = WINUSB, WinUsb_Install 

[WinUsb_Install] 
KmdfLibraryVersion = 1.9 

[AbcRadioUsb_Install.CoInstallers] 
AddReg=CoInstallers_AddReg 
CopyFiles=CoInstallers_CopyFiles 

[AbcRadioUsb_Install.hw] 
AddReg=AbcRadioUsb_Device_AddReg 

[AbcRadioUsb_Device_AddReg] 
HKR,,"LowerFilters",0x00010008,"WinUsb" ; FLG_ADDREG_TYPE_MULTI_SZ | FLG_ADDREG_APPEND 

[CoInstallers_AddReg] 
HKR,,CoInstallers32,0x00010000,"WudfUpdate_01009.dll", "WinUsbCoinstaller2.dll", "WdfCoInstaller01009.dll,WdfCoInstaller" 

[WUDFAbcRadioUsbDriver_Install] 
UmdfLibraryVersion=1.9.0 
DriverCLSID="{7bf5cb94-b686-4721-955e-878e48933a2c}" 
ServiceBinary=%12%\UMDF\AbcRadio.dll 

[CoInstallers_CopyFiles] 
WudfUpdate_01009.dll 
WdfCoInstaller01009.dll 
WinUsbCoinstaller2.dll 

[UMDriverCopy] 
AbcRadio.dll 

[DestinationDirs] 
UMDriverCopy=12,UMDF  ; copy to drivers\umdf 
CoInstallers_CopyFiles=11 ; copy to system32 

; ================= Source Media Section ===================== 

[SourceDisksNames] 
1 = %MediaDescription%,,, 

[SourceDisksFiles.x86] 
AbcRadio.dll=1,x86 
WudfUpdate_01009.dll=1,x86 
WdfCoInstaller01009.dll=1,x86 
WinUsbCoinstaller2.dll=1,x86 

[SourceDisksFiles.amd64] 
AbcRadio.dll=1,x64 
WudfUpdate_01009.dll=1,x64 
WdfCoInstaller01009.dll=1,x64 
WinUsbCoinstaller2.dll=1,x64 

; =================== Generic ================================== 

[Strings] 
MSFTUMDF="Abc (WDF:UMDF)" 
MediaDescription="Abc Media" 
ClassName="Radio" 
WudfRdDisplayName="Abc WDF:UMDF Radio" 
AbcRadioUsbDeviceName="Abc Radio Alpha 6/10/2011 8:53 AM" 
WinUsb_SvcDesc="WinUSB Driver" 

回答

1

想通了,我没有完全读完SetupCopyOEMInf()的文档。在我的安装程序中的以下行解决了最后一个问题: SetupCopyOEMInf(infFullPath,INSTALLPATH,OemSourceMediaType.SPOST_PATH,0,oemName,255,参考温度,空)

看来,Windows 7的猜测,你的源盘的位置inf文件所在的位置,如果您不指定OEMSourceMediaLocation参数。 Windows XP不会这样做,所以如果你想让Windows知道在哪里寻找你的驱动程序,它就需要填充。

相关问题