【问题标题】:WDF UMDF driver install problem in windows 7 32 bitWindows 7 32 位中的 WDF UMDF 驱动程序安装问题
【发布时间】:2011-09-10 10:42:02
【问题描述】:

我有一个简单的用户模式 ​​USB 驱动程序,它在 Windows XP 32 位和 Windows 7 64 位中安装和工作正常,但由于某种原因无法在 Windows 7 32 位中正确安装。 XP 32bit 和 win7 32bit 我需要 2 个单独的驱动程序吗?我的印象是我没有。 我使用的inf文件如下:

2011 年 6 月 10 日更新,我对 inf 文件进行了如下修改,现在似乎可以在 windows7 中使用,但是在 xp 上它会问我 /x86 在哪里,当我给它一个路径时,它会在前面加上一个 \一开始,然后我删除它,它工作正常。我使用以下方法向 Windows 注册 .inf 文件:

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

infFullPath 是我复制驱动程序包的程序文件下的位置。 谁能明白为什么这行不通 我按如下方式存储文件:

AbcRadio.inf
\x86\AbcRadio.dll
\x86\WudfUpdate_01009.dll
\x86\WdfCoInstaller01009.dll
\x86\WinUsbCoinstaller2.dll
\x64\AbcRadio.dll
\x64\WudfUpdate_01009.dll
\x64\WdfCoInstaller01009.dll
\x64\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"

【问题讨论】:

    标签: windows-7 driver wdf umdf


    【解决方案1】:

    发现我没有完整阅读 SetupCopyOEMInf() 的文档。我的安装程序中的以下行解决了最后一个问题: SetupCopyOEMInf(infFullPath, installPath, OemSourceMediaType.SPOST_PATH, 0, oemName, 255, ref temp, null)

    如果你不指定 OEMSourceMediaLocation 参数,windows 7 似乎猜测你的源磁盘是 inf 文件所在的位置。 Windows XP 不这样做,因此如果您希望 Windows 知道在哪里查找您的驱动程序,则需要填充它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多